在Java Webapp和java普通应用程序中读取公共外部属性文件

时间:2016-04-06 09:28:23

标签: java tomcat web-applications properties-file

我知道这个问题已经回答了很多次,其中最有用的答案如下,

Where to place and how to read configuration resource files in servlet based application?

但是,我们有以下特殊要求,

  1. Webapp将部署到tomcat。
  2. .jar形式的普通java应用程序将放在文件夹/ myapp
  3. myappConfig.property文件将放在/ myapp
  4. 客户端计算机上的目录结构

    /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

    提前感谢您的帮助。

    修改

    以下是我们希望将项目交付给客户的步骤。

    1. 以下是我的app目录

      /myapp
        /myapp.jar
        /assests/myappConfig.property
        /tomcat/webapps/myapp.war
      
    2. 使用一些包装工具将所有东西装在一个包装中。

    3. 在客户端计算机上的任何位置运行此程序包,它将具有与上面相同的目录结构

    4. 在这里,我不想硬编码webapp或tomcat中的任何位置“/assests/myappConfig.property”

    5. 普通的Java应用程序我可以读取属性文件但是对于wepapp我不清楚如何做到这一点?

1 个答案:

答案 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中并从那里请求它,该类可以负责对该文件进行更改检查。