1 Reply Latest reply on Aug 28, 2013 11:45 AM by Wolf-Dieter Fink

    EJB3.0 : Dependency injection in Servlet problem

    ganesh jadhav Newbie

      Hi,

      I am trying few things in EJB3.0 DI, using Jboss EAP 6. I created an EAR, with a web module+ EJB (a SLSB).

      I am trying to inject EJB in a servlet. The deployment is successful, but when i try to access the servlet I get exception.

       

      i) Bean local interface.

      package com.gj.ejb3;

      import javax.ejb.Local;

      @Local
      public interface HelloWorldIx {
          public String sayHello(String name);

      }

       

      ii) Bean Class

       

      package com.gj.ejb3;

      import javax.ejb.Local;
      import javax.ejb.Stateless;

      /**
      * Session Bean implementation class HelloWorldSessionBean
      */
      @Stateless(name="HelloWorldSessionBean")
      @Local(HelloWorldIx.class)
      public class HelloWorldSessionBean implements HelloWorldIx {

          /**
           * Default constructor.
           */
          public HelloWorldSessionBean() {
              // TODO Auto-generated constructor stub
          }

      /**
           * @see HelloWorldIx#sayHello()
           */
          public String sayHello(String name) {
              System.out.println("came");
         return name.toUpperCase();
          }

      }

       

      iii) Servlet

       

      package com.gj.servlets;

      import javax.ejb.EJB;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;

      import com.gj.ejb3.HelloWorldIx;
      import com.gj.ejb3.SimpleBeanLocal;

      public class LifeCycle extends HttpServlet {

      @EJB(beanName="HelloWorldSessionBean")
          private HelloWorldIx helloWorldIx;

       

      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("dopost");
        String name=request.getParameter("name");
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();
        if(helloWorldIx!=null)
        System.out.println(helloWorldIx.sayHello(name));
        else
        System.out.println("Bean is null");
        out.println("<html><head></head><body>service Name " +name+"</body></html>");
      }

      }

       

      iv) Exception: when I access the servlet, the server shows this error.

       

      java.lang.IllegalArgumentException: Can not set com.gj.ejb3.HelloWorldIx field com.gj.servlets.LifeCycle.helloWorldIx to com.gj.ejb3.HelloWorldIx$$$view1

      sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)

      sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java

       

      Am I missing any configuration????

       

       

      Regards

      Ganesh