2013-10-08 30 views
1

我有2個EARS。第一個EAR包含所有帶接口的罐子(EAR_INTERFACE.ear)。 這些接口被標記爲遠程。遠程EJB查找在玻璃魚的兩隻耳朵之間2.1

第二隻耳朵包含ejbs(EAR_EJB)。這些ejbs從第一隻耳朵實現了@remote接口。EJB是無狀態的並且具有mappedName。 爲了獲得對ejb的引用,我使用我的第二個EAR中的ejb的mappedName來做jndi查找。

在這裏,我面臨的問題是,我無法獲得對遠程EJB的引用。 如果接口和ejbs在同一個EAR中,則查找成功,但在不同EAR之間失敗。

我使用的是glassfish server v2.1,ejb 3.0。

我搜索了這個問題,發現了關於父母孩子的EARs。 這會解決我的問題。如果是的話,如何實現這一點。我需要在EAR的application.xml中提到一些東西。

請建議我解決問題的最佳選擇。

回答

0

它看起來像有問題在GlassFish 2.1

如果接口是不一樣的模塊中的EJB是查找失敗。該接口不由類加載器加載,因此不會生成存根。

我的ejb jar在耳邊,界面在另一個jar裏。 一些如何找到解決此問題的解決方法。在部署耳朵之前,將接口jar保存在domain/domain1/lib/ext中,重新啓動glassfish。部署包含ejbs的耳朵。部署完成後,將界面jar複製到application/j2ee-apps /並重新啓動glassfish。然後,如果我嘗試查找,查找成功。

如果有人遇到類似的問題或有更好的解決方法,請回復。

謝謝

0

你如何做JNDI查找?

我們有一些GF 2.1服務器,如果EJB的是在不同的項目,唯一的解決辦法就是看它是這樣的:

RemoteInterface bean = null; 
Properties props = new Properties(); 
props.setProperty("org.omg.CORBA.ORBInitialHost", "host"); 
props.setProperty("org.omg.CORBA.ORBInitialPort", "port"); 
InitialContext ctx = new InitialContext(props); 
RemoteInterface bean = (RemoteInterface) 
ctx.lookup("full.qualified.name.RemoteInterface"); 
+0

怎麼樣的接口。您是否將遠程ejbs的接口保存在同一模塊或單獨的模塊中? ejbs和它們的接口是否在部署時位於相同的存檔文件中,還是在不同的存檔文件中? – kaka

+0

我有3個Maven項目。第一個具有所有接口,第二個具有接口的實現,第三個使用Interfaces for Lookup並調用接口方法。部署時,接口位於單獨的歸檔文件中。 – luckyluke

+0

這個檔案文件中的界面是耳朵還是罐子? 如果它的瓶子放在玻璃魚缸裏嗎? 如果它的耳朵如何部署它。還是說,所有的模塊都是罐子,而且它們是單耳的,你部署的耳朵呢? 謝謝 – kaka