2015-05-08 53 views
1

我正在为glassfish部署一个war文件,并想知道是否有可能拥有可以在我的web方法中访问的属性的文件。问题是我想改变文件,因为业务请求改变而没有必要重新编译。我可以将其存储在数据库中,或者将其作为glassfish本身的系统属性,但想知道文件方式是否可行。Java servlet访问配置文件

我看了这些,但所有好像你将不得不重新编译?:

Load properties file in Servlet/JSP

loading properties file in init() of servlet without using context-param tag in web.xml

+0

我知道你想避免重新编译。文件更新时是否允许重新启动应用程序? –

+0

@Brett,重新开始会很好。 –

回答

3

当然可以。您可以在启动时加载属性并记下文件的修改时间;那么当修改时间改变时,即当某人编辑它时,你可以重新加载属性。检查和重新加载可以使用后台线程或访问来完成,但请注意处理同步,因为所有同时请求都会相互竞争。

我会将该文件保留在Glassfish之外,并使用系统属性或上下文参数指向该文件,但您也可以编辑Glassfish提取WAR文件的属性文件。

+0

这听起来很有希望。所以我有一个存储文件位置的系统属性,并且每次运行该方法时,都可以重新加载文件? –

+0

原则上是的。但是,在每次访问时重新加载文件可能太昂贵了。我可能会使用后台作业每隔一分钟左右检查一次文件修改,并在修改后重新加载它。 – user2612030

+0

谢谢。我正在走这条路。 –