3 Replies Latest reply on Aug 11, 2010 6:03 PM by Sebastian Bromberg

    web service component injection is null

    Mark Durant Newbie

      I've created a bare-bones Seam project for web service testing using JBoss Tools in Eclipse, and I've modified its default AuthenticatorAction to this:

      @Stateless(name = "AuthenticatorAction")
      public class AuthenticatorAction implements Authenticator {
           public boolean authenticate() {
                return true;
           public String getEchoBack() {
                return "echoBack!";

      I've deployed the project successfully to the server, and am able to log in through the generated home/login process.  The getEchoBack method is used by a web service SLSB which I've also added to the project:

      @WebService(name = "EchoService", serviceName = "EchoService")
      public class EchoService implements EchoServiceInterface {
           AuthenticatorAction authenticator;
           public String echo(String in) {          
                return authenticator.getEchoBack() + ": " + in;

      And the EchoServiceInterface is simply:

      public interface EchoServiceInterface {
           public String echo(String in);

      When I deploy this to my app server, I see the service successfully deployed inside of the main ear, and I'm able to view the server-generated WSDL.  I can also do a test request/response against the service, so long as I don't try to get anything from the authenticator.  When I add the call to authenticator.getEchoBack(), though, the authenticator object is always null, and the service call fails.

      I've tried many little adjustments to make it work, including adding create=true to the @In annotation for the authenticator, as well as taking out the injection altogether and using:

      AuthenticatorAction authenticator =

      When I try that, though, I get the following error:

      Caused by: java.lang.IllegalStateException: No application context active
           at org.jboss.seam.Component.forName(Component.java:1945)
           at org.jboss.seam.Component.getInstance(Component.java:2005)

      I read this morning where I can add LifeCycle calls to fix that problem, so I next tried:

           public String echo(String in) {
                AuthenticatorAction authenticator = (AuthenticatorAction) Component
                return authenticator.getEchoBack() + ": " + in;

      When I do that, though, I hit the next wall:

      EJB Exception: : org.jboss.seam.InstantiationException: Could not instantiate Seam component: authenticator
           at org.jboss.seam.Component.newInstance(Component.java:2144)
           at org.jboss.seam.Component.getInstance(Component.java:2021)
           at org.jboss.seam.Component.getInstance(Component.java:1983)
      Caused by: javax.naming.NameNotFoundException: While trying to look up comp/env/main-ear/AuthenticatorAction/local in /app/ejb/main-ejb.jar#EchoService.; remaining name 'comp/env/main-ear/AuthenticatorAction/local'
           at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
           at weblogic.jndi.internal.ApplicationNamingNode.lookup(ApplicationNamingNode.java:144)
           at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
           at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:380)...

      I'm at a loss as to what to try next.  Please help!