Tomcat6&;中的EJB2.0JAR;OpenEJB 3.1.4 我有一个简单的EJBJar,比如myHelloEjb.jar 具有1.HelloBean.java 2.HelloObject.java 3.HelloHome.java 我将jar放在Tomcat的lib文件夹中,在Tomcat的examples目录中有一个jsp openejb.jsp.Code片段: InitialContext initCtx=新的InitialContext(); objectobject=initCtx.lookup(“java:comp/env/ejb/Hello”); HelloHome HelloHome=(HelloHome) transportableRemoteObject.窄(对象,HelloHome.class); HelloObject bean=helloHome.create(); 并将web.xml添加到示例web inf文件夹中,如下所示: ejb/你好 一场 org.acme.HelloHome org.acme.HelloHome 当我打电话的时候http://localhost:8080/examples/openejb.jsp 得到: 2011年8月1日下午6:05:08 org.apache.catalina.core.StandardWrapper 严重:Servlet jsp的Servlet.service()引发异常 javax.naming.NamingException:ejb ref deploymentId为null 位于org.apache.openejb.tomcat.common.EjbFactory.buildJndiName(EjbFactory.java:64) 位于org.apache.openejb.tomcat.common.AbstractObjectFactory.getObjectInstance(AbstractObjectFactory.java:43) 位于org.apache.openejb.tomcat.common.EjbFactory.getObjectInstance(EjbFactory.java:50) 位于org.apache.naming.factory.EjbFactory.getObjectInstance(EjbFactory.java:161) 位于javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:793) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:140) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:781) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:140) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:781) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:140) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:781) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:153) 位于org.apache.naming.SelectorContext.lookup(SelectorContext.java:152) 在javax.naming.InitialContext.lookup(InitialContext.java:351)中 在org.apache.jsp.openejb_jsp._jsp服务(openejb_jsp.java:70)上 位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在openejb.log中,获取: 部署的应用程序(路径=D:\apache-tomcat-6.0.32\webapps\docs) 2011-08-01 18:06:38445-信息-配置企业应用程序:D:\apache-tomcat-6.0.32\webapps\examples 2011-08-01 18:06:38821-警告-bean“D:\apache-tomcat-6.0.32\webapps\examples”中未解析的ejb引用“ejb/Hello”。将在运行时再次尝试解析。 2011-08-01 18:06:38821-已加载信息-企业应用程序“D:\apache-tomcat-6.0.32\webapps\examples”。 2011-08-01 18:06:38821-信息-组装应用程序:D:\apache-tomcat-6.0.32\webapps\examples 谁能告诉我我哪里出错了吗(

Tomcat6&;中的EJB2.0JAR;OpenEJB 3.1.4 我有一个简单的EJBJar,比如myHelloEjb.jar 具有1.HelloBean.java 2.HelloObject.java 3.HelloHome.java 我将jar放在Tomcat的lib文件夹中,在Tomcat的examples目录中有一个jsp openejb.jsp.Code片段: InitialContext initCtx=新的InitialContext(); objectobject=initCtx.lookup(“java:comp/env/ejb/Hello”); HelloHome HelloHome=(HelloHome) transportableRemoteObject.窄(对象,HelloHome.class); HelloObject bean=helloHome.create(); 并将web.xml添加到示例web inf文件夹中,如下所示: ejb/你好 一场 org.acme.HelloHome org.acme.HelloHome 当我打电话的时候http://localhost:8080/examples/openejb.jsp 得到: 2011年8月1日下午6:05:08 org.apache.catalina.core.StandardWrapper 严重:Servlet jsp的Servlet.service()引发异常 javax.naming.NamingException:ejb ref deploymentId为null 位于org.apache.openejb.tomcat.common.EjbFactory.buildJndiName(EjbFactory.java:64) 位于org.apache.openejb.tomcat.common.AbstractObjectFactory.getObjectInstance(AbstractObjectFactory.java:43) 位于org.apache.openejb.tomcat.common.EjbFactory.getObjectInstance(EjbFactory.java:50) 位于org.apache.naming.factory.EjbFactory.getObjectInstance(EjbFactory.java:161) 位于javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:793) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:140) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:781) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:140) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:781) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:140) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:781) 位于org.apache.naming.NamingContext.lookup(NamingContext.java:153) 位于org.apache.naming.SelectorContext.lookup(SelectorContext.java:152) 在javax.naming.InitialContext.lookup(InitialContext.java:351)中 在org.apache.jsp.openejb_jsp._jsp服务(openejb_jsp.java:70)上 位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在openejb.log中,获取: 部署的应用程序(路径=D:\apache-tomcat-6.0.32\webapps\docs) 2011-08-01 18:06:38445-信息-配置企业应用程序:D:\apache-tomcat-6.0.32\webapps\examples 2011-08-01 18:06:38821-警告-bean“D:\apache-tomcat-6.0.32\webapps\examples”中未解析的ejb引用“ejb/Hello”。将在运行时再次尝试解析。 2011-08-01 18:06:38821-已加载信息-企业应用程序“D:\apache-tomcat-6.0.32\webapps\examples”。 2011-08-01 18:06:38821-信息-组装应用程序:D:\apache-tomcat-6.0.32\webapps\examples 谁能告诉我我哪里出错了吗(,tomcat,setup-deployment,openejb,ejb-2.x,Tomcat,Setup Deployment,Openejb,Ejb 2.x,将myHelloEjb.jar放在示例webapp的WEB-INF/lib/目录中,它应该可以工作。您写道: I have a simple EJBJar ,Say myHelloEjb.jar Having 1.HelloBean.java 2.HelloObject.java 3.HelloHome.java I put the the jar in Tomcat's lib folder and in Tomcat's examples directory I have a jsp

将myHelloEjb.jar放在示例webapp的WEB-INF/lib/目录中,它应该可以工作。

您写道:

I have a simple EJBJar ,Say myHelloEjb.jar
Having 1.HelloBean.java
2.HelloObject.java
3.HelloHome.java



I put the the jar in Tomcat's lib folder and in Tomcat's examples directory I have a jsp openejb.jsp.Code Snippet :

 InitialContext initCtx = new InitialContext();

    Object object = initCtx.lookup("java:comp/env/ejb/Hello");
    HelloHome helloHome = (HelloHome)
            javax.rmi.PortableRemoteObject.narrow(object, HelloHome.class);
    HelloObject bean = helloHome.create();

And added web.xml in examples web-inf folder as :

         <ejb-local-ref> 
    <ejb-ref-name>ejb/Hello</ejb-ref-name> 
    <ejb-ref-type>Session</ejb-ref-type> 
    <local-home>org.acme.HelloHome</local-home>
    <local>org.acme.HelloHome</local> 
    </ejb-local-ref>


When i am calling http://localhost:8080/examples/openejb.jsp
getting :

Aug 1, 2011 6:05:08 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
javax.naming.NamingException: ejb-ref deploymentId is null
    at org.apache.openejb.tomcat.common.EjbFactory.buildJndiName(EjbFactory.java:64)
    at org.apache.openejb.tomcat.common.AbstractObjectFactory.getObjectInstance(AbstractObjectFactory.java:43)
    at org.apache.openejb.tomcat.common.EjbFactory.getObjectInstance(EjbFactory.java:50)
    at org.apache.naming.factory.EjbFactory.getObjectInstance(EjbFactory.java:161)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
    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:351)
    at org.apache.jsp.openejb_jsp._jspService(openejb_jsp.java:70)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


and in openejb.log,getting :

Deployed Application(path=D:\apache-tomcat-6.0.32\webapps\docs)
2011-08-01 18:06:38,445 - INFO  - Configuring enterprise application: D:\apache-tomcat-6.0.32\webapps\examples
2011-08-01 18:06:38,821 - WARN  - Unresolved ejb reference "ejb/Hello" in bean "D:\apache-tomcat-6.0.32\webapps\examples".  Will attempt resolution again at runtime.
2011-08-01 18:06:38,821 - INFO  - Enterprise application "D:\apache-tomcat-6.0.32\webapps\examples" loaded.
2011-08-01 18:06:38,821 - INFO  - Assembling app: D:\apache-tomcat-6.0.32\webapps\examples

Could anybody put some light where did i make mistake ? :(

ejb/你好
一场
org.acme.HelloHome
org.acme.HelloHome

看起来您的问题可能是:

org.acme.HelloHome
与此相反:

    <local>org.acme.HelloHome</local> 
org.acme.Hello

否?

谢谢David,但我仍然得到以下例外:谢谢David,但我仍然得到:2011年8月3日下午2:08:39 org.apache.catalina.core.StandardWrapperValve:Servlet.service()对于servlet jsp抛出的异常javax.naming.NamingException:ejb ref deploymentId在org.apache.openejb.tomcat.common.EjbFactory.buildJndiName(EjbFactory.java:64)处为null,在org.apache.openejb.tomcat.common.EjbFactory.getObjectInstance处为null(EjbFactory.java:50)位于org.apache.naming.factory.EjbFactory.getObjectInstance(EjbFactory.java:161)也就是说,我仍然得到-->>ejb ref deploymentId是空的,因此,在这里,解释为什么使用您的解决方案,而不仅仅是如何使用是一个很好的实践。这将使您的答案更有价值,并帮助进一步的读者更好地理解您是如何做到这一点的。我还建议您查看我们的常见问题解答:。
    <local>org.acme.HelloHome</local> 
    <local>org.acme.Hello</local>