2010-01-19 72 views
1

我正在研究部署在JBoss應用程序服務器上的幾個ESB應用程序組成的項目。在沒有代碼複製的情況下在多個ESB應用程序中使用相同的JBoss操作

每個ESB應用處理消息(驗證,豐富...)通過幾個動作(它們延伸AbstractActionLifecycle); 其中一些操作對於所有應用程序都是相同的。

爲了避免代碼重複我感動的是使用一次以上到CommonService.esb應用程序的所有操作。這種方法工作得很好,到目前爲止除了一個問題:

當我重新部署CommonService.esb,我預計將重新加載的所有操作。 但是,情況並非如此。沒有新的動作實例被創建,舊的實例仍然存在。 我明白爲什麼會發生這種情況(JBoss仍然引用這些操作,因此沒有垃圾回收),但我不知道是否有修復。

我可以問JBoss重新加載它的動作嗎?是否有更好的方法來分享在多個地方使用的行動?

回答

2

一旦被告知兩個項目之間存在依賴關係,JBoss就會重新載入這些操作。

我將以下內容添加到所有其他項目的META-INF/deployment.xml中。

<?xml version="1.0" encoding="UTF-8"?> 
    <jbossesb-deployment> 
    <depends>jboss.esb:deployment=CommonServices.esb</depends> 
</jbossesb-deployment> 
相關問題