2014-10-17 42 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