2010-03-22 56 views
0

我目前正在开发一组SOAP SOAP web服务,它的部署范围是Axis2,部署在集群环境中的10.338环境中。Axis2 web服务(aar压缩文件)属性文件

我的webservices使用一些用户设置,我希望可以编辑而无需重新编译和重新生成AAR存档。考虑到这一点,我选择将它们放入在运行时加载和使用的properties文件中。

不幸的是,我有这个几个问题:

据我所知,以达到我想要的,唯一的选择就是把属性文件到../axis2/WEB-INF/classes目录中部署的每一个(每的WebLogic实例)目前,我有我的群集配置,然后加载文件,如下所示(或等同,这还没有经过验证,优化):

InputStreamReader fMainProp = new InputStreamReader(this.getClass().getResourceAsStream("myfile.properties")); 
Properties mainProp = new Properties(); 
mainProp.load(fMainProp); 

这并不像实际我希望它是,因为每次我想改变一些setti在属性文件上,我必须编辑每个文件(部署在不同的WebLogic实例中),并且很有可能修改其中一个文件而不修改其他文件。

我想知道的是,如果有什么(更好的)替代方法可以实现我想要的功能,那么可以通过多个实例来分发和复制属性文件,从而最大限度地减少配置的潜在冲突。

+0

假设您的平台不能使用公共共享安装来部署AAR? – JoseK 2010-03-23 07:30:40

+0

@josek你认为正确 – XpiritO 2010-03-23 11:37:59

+0

我在想一个复杂的解决方案。 假设您读取的值将被缓存在服务器中,而不是每次都从文件读取,并且实现了群集感知缓存以在任何时候重新读取文件时进行刷新。 – JoseK 2010-03-23 12:08:54

回答

0

您的用例适合使用JMX。

有关使用JMX构建自定义Mbeans以管理应用程序配置的详细信息,请参阅此链接。 http://blogs.oracle.com/WebLogicServer/2009/10/developing_custom_mbeans_to_ma.html

然后,您可以选择基于控制台或基于WLST脚本的访问。

+0

@saks提供的控制台配置您的应用程序属性,MBean服务器是每个实例还是可在群集中公用? – JoseK 2010-03-30 09:43:53

+0

更多。跨域通用。 – satks 2010-03-30 16:24:16

0

您可以在Weblogic中设置系统变量以保存绝对属性文件位置。在weblogic安装中,您会看到setDomainEnv.cmd(Windows)或setDomainEnv.sh(Linux)。在里面添加(append)到JAVA_OPTIONS你需要的系统变量。例如

-DpropLocation=C:/somewhere/The.properties 

在你的代码可以通过System.getProperties("propLocation").获得属性文件的位置,您可以通过它们之间添加空格添加多个系统变量。