我为 Tomcat(ip 是 x.x.x.10)、web(ip 是 x.x.x.11)和 db(ip 是 x.x.x.12)创建了 3 个服务器。这 3 个是手动协调的。我授予对 Tomcat 服务器的完全访问权限以在数据库服务器中创建表。如果我手动从 tomcat 服务器连接到数据库服务器,它工作正常。
然后我创建了一个 Jenkins 作业用于在 Tomcat 服务器上部署 war。
在我的 svn 服务器中,我将数据库服务器 (x.x.x.12) 信息保存在“jdbc.properties”文件中并提交。我的“jdbc.properties”文件如下所示。
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.dialect = org.hibernate.dialect.MySQLDialect
jdbc.databaseurl = jdbc:mysql://x.x.x.12:3306/epsilon
jdbc.username = mysql
jdbc.password = mypassword
然后我在 Jenkins 上运行作业以构建 war 并在 Tomcat 服务器上部署。 Jenkins 没有显示任何错误并且作业成功运行。
但是在Tomcat服务器catalina.log文件中显示没有权限在x.x.x.10上创建数据库。但我将 x.x.x.12 保存在“jdbc.properties”文件中。为什么 Tomcat 服务器 assumig 作为数据库服务器是它自己,为什么它不考虑“jdbc.properties”文件。
我删除了 Jenkins 工作区和作业插件。但问题还是一样。
最佳答案
您应该检查您的构建过程和生成的二进制文件,以确保应用程序包(ear、war 等)准确包含您粘贴的属性文件,而不是本地开发版本。
例如,如果您有一个基于配置文件(本地、AVE、UAT 等)的 Maven 项目,并且您构建了一个指定本地配置文件而不是任何其他配置文件的二进制文件,那么在尝试部署时您会发现类似的效果它到您的 tomcat 服务器。
关于java - 部署 Jenkins 时数据库服务器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482361/