2012-11-17 28 views
3

好吧,我知道所有的東西都存在一個規範,但是,它需要兼容性?如何從不同的JVM和服務器調用遠程EJB?

我可以從基於EJB 3.1(JEE6)部署在Weblogic上的架構調用部署在JBOSS上的應用程序EJB 3(JEE5)嗎?

+0

如果您的意思是「從在不同的Weblogic A/S上併發運行的應用程序調用運行在JBoss A/S上的EJB」,那麼您聽起來似乎很可能想要將EJB包裝到Web服務中。恕我直言... – paulsm4

回答

2

假設您的EJB 3.0模塊公開遠程接口,那麼您可以通過該遠程接口(使用RMI/IIOP)從EJB 3.1客戶端調用它。

關於對您的問題發表的評論:我不會急於用Web Service層來包裝EJB 3.0模塊。它在圖表上看起來不錯,但是當所有事情都說完之後,它就歸結爲要求和成本/收益。如果您的EJB 3.0模塊僅由EJB客戶端調用,那麼標準的遠程接口就足夠了。話雖如此,您應該定義您的EJB接口,以便將來可以使用Web服務層包裝它,如果您需要

注意:您必須確保您使用的應用程序服務器支持從一個版本調用到另一個版本。例如,IBM WebSphere將從WAS 6.0調用到WAS 7.0時工作。 JBoss提出了一些挑戰(見下面的評論)。

+0

這並不是那麼簡單。在不同的Java EE服務器之間調用遠程EJB是非常不受支持的。即使是說JBoss 5和JBoss 6之間的電話也不支持。只有Java SE才能支持一臺遠程Java EE服務器。 –

+0

@MikeBraun,一些參考將不勝感激。無論如何,如果有些因素會導致跨服務器EJB調用不可用,那麼請繼續,然後將其中一個包裝爲Web服務。我的信息是,人們不應該爲了它的樂趣而急於創建Web服務包裝。 – Isaac

+1

邁克是對的。跨應用程序服務器二進制EJB通信是EJB規範中的一個主要疏忽。問題是大多數產品需要一些他們稱之爲「客戶端庫」的東西,但這個客戶端庫幾乎是整個服務器。這意味着它包含大量的東西,比如EJB,JPA,JMS等API類,然後將它們與源服務器中的類進行分類。在同一個AS的版本之間更糟,因爲更多的衝突。我試了很長時間纔得到這個工作,但最終放棄了。對於JBoss AS 5和6,請參閱https://community.jboss.org/thread/162519 –