2014-10-17 74 views

回答

1

對於查找,你可以做同樣的事情到這個

InitialContext ctx =new InitialContext(); 
EjbServiceInterface service= (EjbServiceInterface) ctx.lookup("java:global/earName/ejbJarName/EjbServiceInterfaceImpl!com.example.EjbServiceInterface"); 

在這個例子中,EjbServiceInterface是EjbServiceInterfaceImpl,它實現了EJB服務的遠程接口。

jndi字符串取決於您正在查找的位置。對於本地查找,您不必指定earName和ejbJarName ..我建議查看您的啓動日誌,它顯示jndi名稱的位置可用於您的ejb,然後選擇您需要的那個。

+0

感謝您的回覆。我嘗試了同樣的方法,但得到了stackoverflow錯誤。 17:12:33,614 ERROR [[/ app]]配置類com.app.web.CustomContextListener的應用程序偵聽器時出錯:java.lang.StackOverflowError \t at com.sun.naming.internal.VersionHelper12 $ 6.run(VersionHelper12.java :182)[:1.7.0_07] \t at java.security.AccessController.doPrivileged(Native Method)[:1.7.0_07] \t at com.sun.naming.internal.VersionHelper12.getContextClassLoader(VersionHelper12.java:179) [:1.7.0_07] \t at com.sun.naming.internal.ResourceManager.getFactory(ResourceManager.java:403)[:1.7.0_07] – 2014-10-20 10:25:08

+0

您能告訴我們您的代碼嗎? – mendieta 2014-10-20 15:05:11

+0

當我按照您在評論中提到的方式檢查日誌時,JNDI名稱不同。當我使用下面的代碼時問題得到解決:@EJB(mappedName =「app/EventStreamBean/local-app.eventStream.EventStreamLocal」) private EventStreamLocal eventStreamBean;謝謝! – 2014-10-21 05:44:12