2012-08-08 68 views
1

我遇到了WebSphere Application Server 7的問題。我在WAS A上安裝了2個應用程序A & B. B想使用A的本地EJB接口。如何在安裝在同一WebSphere Application Server上的應用程序之間共享EJB本地接口?

包含本地EJB接口的模塊是A的EAR的一部分。

我試着做了,包括我的B的部署參考模塊,我發現的問題是,在查找界面什麼:

InitialContext ic = new InitialContext(); 
//succeeds 
Object obj = ic.lookup("ejblocal:sample.MyEJBLocal"); 
//fails with ClassCastException 
MyEJBLocal localBean = (MyEJBLocal) obj; 

程序崩潰,因爲該接口具有隨機字母作爲課程名稱的前綴,例如

Cannot cast type SL07SMyEJBLocal to MyEJBLocal these types are incompatible. 

我試圖打得周圍&我能得到中投通過更改類加載器設置服務器從多個單成功。

Q - 我真的不喜歡讓我的服務器上的所有應用程序都擁有一個類加載器的想法 - 是否有另一種方法讓EJB本地接口在應用程序A & B之間共享?

回答

1

請參閱信息中心EJB modules模塊的「本地客戶端視圖」部分(我已鏈接到8.5信息中心,但建議適用於所有版本)。基本上,爲了共享本地接口,您必須確保兩個應用程序都具有相同類別的視圖。最常見的方法是使用服務器關聯的共享庫。請小心注意跨應用程序共享本地EJB的其他注意事項。

+0

我照你的建議做了一個共享庫。我對共享庫部分中的兩個EAR項目部署描述符進行了更改。我還在WAS中將包含接口的jar的引用放入共享庫的classpath字段中。然後,我將其添加到類加載器共享庫引用。但是,當我查找接口時,我仍然得到一個ClassCastException – user1585676 2012-08-09 12:06:59

+0

您是否正在使用「父最後」類加載?共享庫是否與服務器類加載器關聯(每個InfoCenter文檔)? ejb.getClass()。getClassLoader()和MyEJBLocal.getClassLoader()會說什麼? – 2012-08-09 12:23:32

+0

也許你忘了從EAR中刪除客戶端視圖類文件?如果客戶端視圖類文件位於EAR內部,即使它們在共享庫中,它們也將從那裏加載。 – Isaac 2012-09-11 08:15:00

相關問題