【发布时间】:2016-07-26 14:39:05
【问题描述】:
我知道这个问题已经回答了很多次,最有用的答案如下,
Where to place and how to read configuration resource files in servlet based application?
但是,我们有一些特殊要求如下,
- Webapp 将部署到 tomcat。
- .jar 形式的普通 java 应用程序将放在文件夹 /myapp 下
- myappConfig.property 文件将放在 /myapp 下
客户端计算机上的目录结构
/myapp
/myapp.jar
/assests/myappConfig.property
/tomcat/webapps/myapp.war
基本上 myapp.jar 和 myapp.war 将访问用于 MySql 数据库连接和数据库操作的 sql 数据库连接值。
从 myapp.jar 访问 myappConfig.property --> 工作正常
File jarPath = new File(Myapp.class.getProtectionDomain().getCodeSource().getLocation().getPath());
String propertiesPath = jarPath.getParent();
System.out.println(" propertiesPath-" + propertiesPath);
mainProperties.load(new FileInputStream(propertiesPath + "\\assets\\myapp.property"));
任何人都可以帮助/建议如何实施,
从 mywebapp 访问 myappConfig.property 文件,
如果 myappConfig.property 文件中的运行时更改不需要重新部署 myapp.war
提前感谢您的帮助。
编辑
以下是我们要将项目交付给客户的步骤。
-
下面是我的应用目录
/myapp /myapp.jar /assests/myappConfig.property /tomcat/webapps/myapp.war 使用一些打包工具将所有内容打包在一个包中。
在客户端机器的任意位置运行这个包,它的目录结构和上面一样
在这里,我不想在 webapp 或 tomcat 中为“/assets/myappConfig.property”硬编码任何位置
普通 Java 应用程序我可以读取属性文件,但对于 wepapp,我不清楚如何做到这一点?
【问题讨论】:
-
如果您想在运行时更改而不重新部署,最好使用属性文件的值持久保存到数据库中。
-
@vishalgajera 正如我提到的,属性文件包含数据库连接 vlaues,所以除非我读取属性值 webapp 无法访问数据库。
-
您的要求。看起来不清楚,您提到要更改道具的一种方式。在运行时文件而无需重新部署以及您所说的数据库凭据的一种方式。怎么可能。
-
@vishalgajera 好的,只是一个小查询,我们不能在 webapp 运行时更改数据库字符串吗?
-
你可以改变它,但是你已经改变了属性文件!!意味着现在获取该道具的更新。文件,您必须重新部署它以获取对 web 应用程序的更改。这就是为什么我建议您如果不这样做,然后将其存储到数据库中。
标签: java tomcat web-applications properties-file