我是 Java 新手(拥有 .Net 背景后大约有 2 个月的 Java 经验)。我被要求支持一个使用 Spring、J2EE 和 Oracle 数据库的 Java 应用程序。
我们的部署过程存在问题,我很难理解。
有问题的 Java 应用程序在 application.properties 文件中有数据库连接的详细信息。它的位置似乎是使用以下行从 Spring 配置文件配置的:
<context:property-placeholder location="classpath:config/application.properties,classpath:config/bookings.properties" ignore-resource-not-found="true" />
在我们的开发 Tomcat 服务器上,应用程序(称为 Bookings)在此位置查找 application.properties 文件:
/usr/share/tomcat/webapps/Bookings/WEB-INF/classes/config
这是我所期望的,查看 Spring 配置。
但是,在生产 Tomcat 上,应用程序看起来位于不同的位置:
/usr/share/tomcat/lib/config
(在此目录中,文件名为 bookings.properties。
原来的开发人员已经离开公司,我不知道为什么它会在不同的位置查找文件(和不同的文件名)。
有什么想法可以查看,或者可以在哪里配置?应该注意的是,两个文件(application.properties 和 bookings.properties)都存在于两个 Tomcat 服务器上,所以我不明白其中的差异?
我们已经将同一个 WAR 文件重新部署到开发和生产中,但差异仍然存在,即服务器看起来仍然在不同的地方。
最佳答案
classpath是一个目录,您可以在其中放置一些资源(为简单起见,链接上有更多详细信息)。 那是一个变量,它被添加到启动命令中,有时它有点隐藏。但这就是它的工作方式。
也许您可以在 $TOMCAT_DIR\bin\catalina.sh 中查看类路径是如何定义的。 在您的情况下,类路径中包含的文件夹在开发服务器和生产服务器之间是不同的。这是完全正常的。
但是,您说在生产环境中文件名为 bookings.properties。 但是有了这一行:
<context:property-placeholder location="classpath:config/application.properties,classpath:config/buyer-request.properties" ignore-resource-not-found="true" />
我们看到您从未尝试加载名为 booking.properties 的文件。 所以问问自己为什么文件被称为 booking.properties。并将其重命名为 application.properties,看看会发生什么。
希望对你有帮助
关于java - Tomcat 属性配置文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014578/