Java 在glassfish/tomcat/etc中管理.properties文件的优雅解决方案

Java 在glassfish/tomcat/etc中管理.properties文件的优雅解决方案,java,configuration,properties,glassfish,jndi,Java,Configuration,Properties,Glassfish,Jndi,有没有人有一个很好的解决方案来管理web应用程序中的.properties文件?目前,我必须在部署之前分离.war文件,更改.properties文件中的条目,然后重新部署以更改设置 或者,我可以通过ssh连接到服务器,更改部署目录中的.properties文件,然后重新启动应用程序 同事有一个相当优雅的解决方案,使用GUI在Tomcat/Glassfish实例中设置JNDI属性,并读取这些属性而不是.properties文件。这里的问题是,当将应用程序交付给我们的操作团队时,他们需要知道要向J

有没有人有一个很好的解决方案来管理web应用程序中的.properties文件?目前,我必须在部署之前分离.war文件,更改.properties文件中的条目,然后重新部署以更改设置

或者,我可以通过ssh连接到服务器,更改部署目录中的.properties文件,然后重新启动应用程序

同事有一个相当优雅的解决方案,使用GUI在Tomcat/Glassfish实例中设置JNDI属性,并读取这些属性而不是.properties文件。这里的问题是,当将应用程序交付给我们的操作团队时,他们需要知道要向JNDI添加哪些属性


有人找到了解决这个问题的好方法吗?

如果您可以以xml格式存储属性(我相信jdk支持这种格式)然后有一堆开源库可以生成crud ui……如果不是最接近的,我找到的是PropertySet@

一个简单的选择是将属性文件存储在WAR文件/webapp外部,这样1)它们在每次部署时都不会更改,2)不需要编辑。您只需调整webapp中与文件所在位置相关的逻辑即可


另一个选项(稍微不那么简单)是在构建过程中使用过滤,以便构建WAR文件以包含根据目标环境自定义的属性文件。和都支持一种非常简单的机制,用于使用令牌和筛选文件来筛选某些资源。

++to matt b@Benju-将属性文件放在通用的位置很好,如果您想提取属性文件的位置,请通过JNDI变量或JVM变量提取路径。通过这种方式,您可以动态确定属性文件的位置,并仅加载该环境所需的值。另一种选择是使用文件名存储WAR中所有环境的属性文件(如myproperties\u dev.properties等),现在您只需使用JNDI或JVM方法查找环境,并确定在运行时从哪个属性文件读取。