如何根据服务器/环境动态加载服务器配置?

时间:2014-07-07 22:30:12

标签: java maven configuration ejb weblogic

目前我设置了maven配置文件,以便能够为不同的环境(开发,演示,升级,生产......)部署我的项目,并且它工作得非常好。但问题是,对于我所拥有的每个模块(Web应用程序),我需要复制/粘贴此配置文件(它们都是属性文件)。当我需要更改环境/服务器配置时,这将是一个开销(例如,当端口号发生更改时,我需要重新部署所有EAR文件)。

我的问题是,是否有更多通用的解决方案来防止这种多余的方法?例如,在weblogic中设置我的属性文件(或任何其他配置文件)? 我想出了一个小模块来保存配置并通过@Remote(EJB)调用它们,但是根据我的组织的应用程序关系还有很多其他缺点。

对我来说最好的方法是能够在weblogic中设置一些配置,并在应用程序运行时动态访问它们,然后根据它进行决定。

1 个答案:

答案 0 :(得分:1)

我提出了另一种解决方案,我认为它对我和我的组织更有用。

我将拥有一个位于客户端(开发人员)和系统之间的JAR。这样JAR将从.properties文件(或任何文件)读取,该文件在服务器内定义为环境变量(每个服务器将采用自己的设置)。然后在JAR中,我读取文件并返回请求的值。这将使开发人员只关注他们的代码,他们可以从JAR调用getCurrentServer()getServer(XXX)(考虑到适当的异常处理很重要)。

应更新并重新部署现有模块。这个实现的唯一缺点是如果我更改.properties文件,那么我需要重新启动服务器,因为文件加载机制只需一次(实现单一模式)以获得更好的性能。无论如何,我认为这不是什么大问题,因为该文件可能很少变化(最多一年一次或两年一次),所以重启服务器值得(或者我可以随时加载文件)客户端请求,以便不需要重新启动服务器 - 但它会对性能产生不良影响 - )。

- 更新 我实现了另一种方法来访问JAR的私有方法并调用loadProperties()方法。通过这样做,我可以手动重新加载属性而无需重新启动服务器。