5 Replies Latest reply on Apr 27, 2008 12:59 PM by peiguo

    Problem with EJB call EJB

    peiguo

      Hi,

      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)
      


        • 1. Re: Problem with EJB call EJB
          jaikiran

          Are you sure there were no errors during deployment?

          @EJB(beanName = "org.jboss.ws.hello.HelloBean")
          private HelloBean h;


          This should have been:


          @EJB(beanName = "HelloBean")
           private HelloBean h;


          or even this should work:

          @EJB
           private HelloBean h;


          And by the way, you don't need the ejb-jar.xml for any of this.


          • 2. Re: Problem with EJB call EJB
            peiguo

            Thank for your reply. I tried your first option, and got the same null pointer error. Your second option actually was the first thing I tried when I first started to experiment.

            I am using 4.2.2.GA if that means anything.

            I have attempted to upgrade to 5.0.0.Beta4, but it gave me some wierd error when I deploy. Instead of making it more complicated, I will just try to stay with 4 stream now.

            • 3. Re: Problem with EJB call EJB
              peiguo

              I just notoced that,t the beginning of my ejb-jar.xml, it says version="2.1". That might be part of the problem, what's the correct schema and version etc?

              • 4. Re: Problem with EJB call EJB
                jaikiran

                Let's stick to JBoss-4.2.2 GA. Did you try removing the ejb-jar.xml from your packaging?

                • 5. Re: Problem with EJB call EJB
                  peiguo

                  Thank you very much and you are right, once ejb-jar.xml is removed things worked.

                  Thank you very much!