但是,我们有以下一些特殊要求,
客户端计算机上的目录结构
/myapp /myapp.jar /assests/myappConfig.property /tomcat/webapps/myapp.war
基本上, myapp.jar 和 myapp.war 将访问MySql数据库连接和db操作的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
感谢您的帮助。
编辑
以下是我们要将项目交付给客户的步骤。
以下是我的应用目录
/myapp
/myapp.jar /assests/myappConfig.property /tomcat/webapps/myapp.war
使用某种包装工具将所有物品打包在一个包装中。
在客户端计算机上的任何位置运行此软件包,它将具有与上述相同的目录结构
在这里,我不想将webapp或tomcat中的任何位置硬编码为“ /assests/myappConfig.property”
普通的Java应用程序,我可以读取属性文件,但对于wepapp,我不清楚如何执行此操作?
您可以<context>在tomcat / conf / server.xml中添加一个(在此示例中为linux路径):
<context>
<Context docBase="/home/yourusername/tomcat/assests" path="/assets" />
如果您使用的是Windows:
<Context docBase="C:\path\to\myapp\assets" path="/assets" />
然后,您可以像访问Web应用程序中的任何其他资源一样访问它(例如:/assets/myappConfig.property)。
例如,如果使用的是JDBC,则可以将连接属性存储在Singleton中并从那里请求它,并且该类可以处理对该文件的更改检查。