正确的位置,以放置struts Web应用程序的属性文件

时间:2014-11-20 20:58:08

标签: java java-ee web-applications struts2 war

我正在开发一个Struts 2 Web应用程序,所有常量值和硬编码值都会被移动到属性文件中,这些常量特定于环境,如数据源名称,一些服务器连接URL和少数用户ID也放在属性文件中。

最初,我将属性文件放在类路径中,并使用资源包访问,如下所示

 ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("config\appProps");

问题是因为环境特定常量环境(DEV / UAT / PROD)需要通过更改属性文件环境特定常量值来生成单独的战争,以避免我在下面的进程中使用

我将属性文件的绝对路径保存在web.xml的context参数中,并从上下文中获取路径并读取属性文件,如下所示

   Properties prop = new Properties();
   prop.load(new FileInputStream("<<file system absolute path from context param>>"));

这消除了为每个环境生成不同战争的过程,因为服务器上的路径可以保持相同,但我开始明白安全性我们不应该使用绝对路径,如可能暴露服务器文件系统详细信息

请告诉我,通过考虑安全性以及为每个环境消除不同war文件的生成,在Web应用程序中加载属性文件的正确方法是什么。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以将整个属性对象提升到JNDI中,这会修复它,但实现可能是服务器特定的。现在你遇到了一个新问题;在读取属性之前确保已加载属性。