Java 在Tomcat中运行EJB

Java 在Tomcat中运行EJB,java,tomcat,jboss,ejb,Java,Tomcat,Jboss,Ejb,我在Jboss中有一个正在运行的ejb。 Jboss端口:8080。我可以使用运行在JBOSS中的应用程序访问它。 JNDI属性: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=jnp://localhost:1099 我正在尝

我在Jboss中有一个正在运行的ejb。 Jboss端口:8080。我可以使用运行在JBOSS中的应用程序访问它。 JNDI属性:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://localhost:1099
我正在尝试使用Tomcat应用程序访问相同的ejb。我的Tomcat服务器在端口8180上运行。我使用相同的JNDI属性

但我在运行时遇到以下错误:

    Error : javax.naming.NameNotFoundException: Name SayHelloBeanImpl is not bound in this Context
    javax.naming.NameNotFoundException: Name SayHelloBeanImpl is not bound in this Context
        at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
        at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at Hello.doGet(Hello.java:34)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:662)

为什么会这样?

您的查找无法找到指定bean的JNDI名称。这里有一个与此类似的问题:查看此链接也是Apache TomEE的应用程序容器,而tomcat是servlet容器。我没有使用glass fish或OpenEJB。我如何才能找到JNDI名称?请阅读其他评论,还有一个类似的问题,我已经在评论中发布了该问题的链接