2010-03-22 74 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").獲得屬性文件的位置,您可以通過它們之間添加空格添加多個系統變量。