2011-06-21 14 views
2

作爲一個背景 - 我正在使用JBoss 5.1,用於Web應用程序。這些應用程序是垂直部署的,因此每個功能都以單獨的WAR文件結尾。它有一個用於dao和業務邏輯的jar文件。這很好,但是我需要部署另一個本身沒有多少邏輯的應用程序 - 它基本上就像說儀表板一樣。儀表板需要彙總來自不同數據提供者的數據(通常它們是其他應用程序/功能)。現在,儀表板對其他功能瞭如指掌。因此,每次添加新功能時,都會重新部署此儀表板並添加相關的代碼。在多個WAR中訪問庫的通用接口 - 這在jboss中可能嗎?

如果有這個儀表板,很少有其他的功能實現,每當一個新的功能(WAR)部署儀表盤可以動態地從新的供應商獲得的數據,以及一個共同的接口這將是巨大的。這可能嗎?如果不是最接近我可以得到什麼,而無需操縱應用程序的類加載器?如果首先在jboss裏面這是可能的,那將是一件好事。

請讓我知道如果你需要更多的信息。

回答

1

有幾個方法可以做到你在說什麼,所以我會提出了兩種類型的解決方案,我可以給你更多的信息爲準左右最適合您需求。

一個相對快速的解決方案是使用門​​戶網站服務器一樣GateIn。您的WAR可能會顯示在同一頁面上,但它們會處於獨立的位置,並未集成。您必須將您的WAR轉換爲portlet並讓管理員將其添加到門戶的UI,但門戶將能夠掃描和檢測所有可用的portlet。

更靈活的解決辦法是有實現一個共同的MBean接口的類每個部署之一。然後,儀表板可以使用JMX,特別是javax.management.MBeanServerConnectionqueryMBeans方法來獲取所有MBean(或屬於特定包的MBean的子集,您可以將其指定爲查詢參數)。然後你可以通過javax.management.MBeanServerConnectioninvoke方法來執行接口方法。要獲得帶有JBoss的MBeanServerConnection,請致電org.jboss.mx.util.MBeanServerLocator.locateJBoss()

的要求一些額外的細節(注意,以下是JBoss的專用):

1)打開部署到MBean的 對於每一個JAR文件,一個jboss-service.xml*-xmbean.xml文件添加到META-INF目錄(其中*是您選擇的名稱)。按照this example這些文件。

實現在任何路徑您在jboss-service.xmlmbean元素的code屬性(在本例中org.jboss.chap2.xmbean.JNDIMap)指定的MBean。指定一個一致的命名空間和參數爲jboss-service.xmlmbean元素的屬性namechap2.xmbean:service=中的例子)。您在*-xmbean.xml文件中指定的操作和屬性應該映射到您的界面。

2)創建儀表盤和它的一個類輪詢業務(該代碼尚未經過測試,但應提供良好的輪廓)

//Get the connection 
MBeanServerConnection connection = org.jboss.mx.util.MBeanServerLocator.locateJBoss(); 

//Query for MBeans in the chap2.xmbean namespace 
Set<ObjectInstance> mbeans = connection.queryMBeans(null, new ObjectName("chap2.xmbean:service=*")); 

//Loop over each MBean and invoke an interface method 
for (ObjectInstance mbean : mbeans) 
{ 
    //Invoking 'put' method from example. If this were an info method, this would return the result of the MBean operation 
    connection .invoke(mbean.getObjectName(), "put", new Object[] {"TestKey", "TestValue"}, new String[] {Object.class.getName(), Object.class.getName()}); 
} 
+0

嗨斯蒂芬,你的第二個解決方案聽起來相當有趣。我無法使用portlet - 我也不想。我很想理解你的第二個選擇 - 聽起來可能是最合適的。我被告知要在jboss論壇中檢查jboss的自定義部署器,但看起來有點像項目本身。那麼你的選擇聽起來好多了,請分享你的想法,任何相關的材料也會很好。歡呼 – opensourcegeek

+0

好的,我已經添加了你需要開始的額外細節。讓我知道你是否遇到麻煩或有更具體的問題。祝你好運! (PS JBoss在網上看起來很糟糕,但我知道如果你需要一個全面的資源,那裏有幾本好書) –

+0

好吧,所以我一定是誇大了,我找不到一個好的全面的JBoss 5引用,但是我認爲JBoss Work(http://oreilly.com/catalog/9780596007348)涵蓋了你需要的很好,即使它在技術上適用於JBoss 4。 –