我正在使用JBoss AS 7。
如何使用我从外部文件夹每次下载(带翻译)的属性文件?
我将servlet部署为.WAR文件,我想从磁盘的随机临时文件夹中使用这些属性文件。我怎么样?
问题是这些属性必须在类路径中。
稍后编辑:
File file = new File(tempDir);
java.net.URL[] urls = {file.toURI().toURL()};
ClassLoader loader = new URLClassLoader(urls);
ResourceBundle.getBundle("XXXXXX" + ReportLocale + ".properties", Locale.getDefault(), loader);
tempDir是临时文件夹的位置,ReportLocale根据所选语言动态更改。但是,这根本不起作用,我得到java.util.MissingResourceException:找不到基本名称XXXXXXX.properties的捆绑包,locale en_US
答案 0 :(得分:0)
考虑将.properties文件与.WAR部署工件分开。 .WAR文件实际上是一个不可变的工件,如果应用服务器允许您更改它,我会感到惊讶。即便如此,这可能也不是一个好主意。
您也可以考虑将下载的属性写入数据库,以便更好地进行报告。我对你的情况了解不多,但这是我首先考虑的方法。
答案 1 :(得分:0)
您可以使用同步私有方法创建一个@Singleton ejb,该方法从已配置的位置加载属性
定期(例如每5分钟)使用@Schedule添加一个调用私有方法的方法。
添加一个@PostConstruct方法,该方法调用私有方法来执行初始加载。
添加一种方法,以应用程序所需的方式访问属性。
在将新属性对象分配给字段之前,您可能应该每次都将属性加载到新对象中。这将避免在加载时来自应用程序的调用将读取属性对象的可能性。
然后可以在任何地方注入此bean,并提供属性值。从当前加载的文件。
答案 2 :(得分:0)
我终于做了一个模块:)。