我知道这个问题已经回答了很多次,其中最有用的答案如下,
Where to place and how to read configuration resource files in servlet based application?
但是,我们有以下特殊要求,
客户端计算机上的目录结构
/myapp
/myapp.jar
/assests/myappConfig.property
/tomcat/webapps/myapp.war
基本上 myapp.jar 和 myapp.war 将访问MySql数据库连接和数据库操作的sql db连接值。
从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
提前感谢您的帮助。
修改
以下是我们希望将项目交付给客户的步骤。
以下是我的app目录
/myapp
/myapp.jar
/assests/myappConfig.property
/tomcat/webapps/myapp.war
使用一些包装工具将所有东西装在一个包装中。
在客户端计算机上的任何位置运行此程序包,它将具有与上面相同的目录结构
在这里,我不想硬编码webapp或tomcat中的任何位置“/assests/myappConfig.property”
普通的Java应用程序我可以读取属性文件但是对于wepapp我不清楚如何做到这一点?
答案 0 :(得分:1)
您可以将<context>
添加到tomcat / conf / server.xml(在此示例中为linux路径):
<Context docBase="/home/yourusername/tomcat/assests" path="/assets" />
如果您使用的是Windows:
<Context docBase="C:\path\to\myapp\assets" path="/assets" />
然后您可以像访问webapp中的任何其他资源一样访问它(例如:/assets/myappConfig.property)。
如果您正在使用JDBC,您可以将连接属性存储在Singleton中并从那里请求它,该类可以负责对该文件进行更改检查。