Problem with EJB call EJB
peiguo Apr 26, 2008 1:31 AMHi,
I was experimenting how to make a EJB to EJB call, and I started with let a EJB call itself. but no luck, could someone please help and point me to the right direction?
The EJB code (modified based on some ws code in jboss4guide):
package org.jboss.ws.hello; import javax.ejb.*; import javax.naming.*; public class HelloBean implements SessionBean, Hello { @EJB(beanName = "org.jboss.ws.hello.HelloBean") private HelloBean h; public int hello(int a, int b) { return a + b; } public int minus(int a, int b) { try { h.minus(2,1); } catch (Exception e) { e.printStackTrace(); } return a - b; } public void ejbCreate() { System.out.println("create"); }; public void ejbRemove() { System.out.println("remove"); }; public void ejbActivate() { System.out.println("activate"); } public void ejbPassivate() { System.out.println("passivate"); } public void setSessionContext(SessionContext ctx) {} }
Here is the ejb-jar.xml (I am guessing that the ejb-ref portion is not needed if I am using @EJB annotation???):
<?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" version="2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"> <display-name>chapter 12 EJB JAR</display-name> <enterprise-beans> <session> <ejb-name>HelloBean</ejb-name> <service-endpoint>org.jboss.ws.hello.Hello</service-endpoint> <ejb-class>org.jboss.ws.hello.HelloBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> <ejb-ref> <ejb-ref-name>local/HelloBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>org.jboss.ws.hello.HelloBean</home> <remote>org.jboss.ws.hello.HelloBean</remote> <ejb-link>HelloBean</ejb-link> <injection-target>local/HelloBean</injection-target> </ejb-ref> </session> </enterprise-beans> <assembly-descriptor> <method-permission> <unchecked/> <method> <ejb-name>HelloBean</ejb-name> <method-name>*</method-name> </method> </method-permission> <container-transaction> <method> <ejb-name>HelloBean</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>
And here is the stack trace:
2008-04-25 21:52:54,257 ERROR [STDERR] java.lang.NullPointerException 2008-04-25 21:52:54,279 ERROR [STDERR] at org.jboss.ws.hello.HelloBean.minus(HelloBean.java:45) 2008-04-25 21:52:54,282 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2008-04-25 21:52:54,305 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 2008-04-25 21:52:54,308 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 2008-04-25 21:52:54,311 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585) 2008-04-25 21:52:54,314 ERROR [STDERR] at org.jboss.invocation.Invocation.performCall(Invocation.java:359) 2008-04-25 21:52:54,316 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:237) 2008-04-25 21:52:54,319 ERROR [STDERR] at org.jboss.wsf.container.jboss42.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor.java:85) 2008-04-25 21:52:54,322 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158) 2008-04-25 21:52:54,325 ERROR [STDERR] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:169) 2008-04-25 21:52:54,329 ERROR [STDERR] at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63) 2008-04-25 21:52:54,332 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121) 2008-04-25 21:52:54,340 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350) 2008-04-25 21:52:54,342 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181) 2008-04-25 21:52:54,345 ERROR [STDERR] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168) 2008-04-25 21:52:54,347 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205) 2008-04-25 21:52:54,350 ERROR [STDERR] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138) 2008-04-25 21:52:54,352 ERROR [STDERR] at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648) 2008-04-25 21:52:54,388 ERROR [STDERR] at org.jboss.ejb.Container.invoke(Container.java:960) 2008-04-25 21:52:54,393 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2008-04-25 21:52:54,396 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 2008-04-25 21:52:54,399 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 2008-04-25 21:52:54,411 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585) 2008-04-25 21:52:54,414 ERROR [STDERR] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 2008-04-25 21:52:54,423 ERROR [STDERR] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 2008-04-25 21:52:54,425 ERROR [STDERR] at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) 2008-04-25 21:52:54,427 ERROR [STDERR] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 2008-04-25 21:52:54,430 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 2008-04-25 21:52:54,432 ERROR [STDERR] at org.jboss.wsf.container.jboss42.InvocationHandlerEJB21.invoke(InvocationHandlerEJB21.java:147) 2008-04-25 21:52:54,447 ERROR [STDERR] at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:220) 2008-04-25 21:52:54,449 ERROR [STDERR] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:408) 2008-04-25 21:52:54,458 ERROR [STDERR] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:272) 2008-04-25 21:52:54,463 ERROR [STDERR] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:189) 2008-04-25 21:52:54,466 ERROR [STDERR] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:122) 2008-04-25 21:52:54,474 ERROR [STDERR] at org.jboss.wsf.stack.jbws.EndpointServlet.service(EndpointServlet.java:84) 2008-04-25 21:52:54,477 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 2008-04-25 21:52:54,479 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 2008-04-25 21:52:54,481 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 2008-04-25 21:52:54,490 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 2008-04-25 21:52:54,494 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 2008-04-25 21:52:54,496 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 2008-04-25 21:52:54,498 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 2008-04-25 21:52:54,508 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 2008-04-25 21:52:54,510 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 2008-04-25 21:52:54,512 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 2008-04-25 21:52:54,514 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 2008-04-25 21:52:54,524 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 2008-04-25 21:52:54,526 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 2008-04-25 21:52:54,528 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 2008-04-25 21:52:54,530 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 2008-04-25 21:52:54,531 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 2008-04-25 21:52:54,533 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 2008-04-25 21:52:54,535 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 2008-04-25 21:52:54,537 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595)