2 Replies Latest reply on Jun 8, 2012 6:57 PM by niharika

    NotContextException when looking up Autenticator

    niharika

      Hi,

       

      I'm migrating from Jboss 4.2.2 to 7.1.1. I'm using Seam 2, jsf facelets 1.1.11 and richfaces 3.2.2. The server starts up without any errors. It displays JNDI bindings for AutenticatorAction. AuthenticatorAction has authenticate method which authenticates the user. When it tries to authenticate, I get a NotContextException.

       

      Here are the details.

       

      14:47:28,692 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-5) JNDI bindings for session bean named AuthenticatorAction in deployment unit subdeployment "emsi.jar" of deployment "emsi.ear" are as follows:

              java:global/emsi/emsi.jar/AuthenticatorAction!org.partners.betr.emsi.seam.Authenticator
              java:app/emsi.jar/AuthenticatorAction!org.partners.betr.emsi.seam.Authenticator
              java:module/AuthenticatorAction!org.partners.betr.emsi.seam.Authenticator
              java:global/emsi/emsi.jar/AuthenticatorAction
              java:app/emsi.jar/AuthenticatorAction
              java:module/AuthenticatorAction

       

      Authenticator/Action are packaged inside emsi.jar

       

      Authenticator.java

       

      package org.partners.betr.emsi.seam;

       

      import javax.ejb.Local;

       

      @Local
      public interface Authenticator
      {
         boolean authenticate();
      }

       

      AuthenticatorAction.java

       

      package org.partners.betr.emsi.seam;

       

      @Stateless
      @Name("authenticator")
      public class AuthenticatorAction implements Authenticator {

         @Out(required=false, scope = SESSION)
         private User user;
        
         private static final Log sLog = LogFactory.getLog(AuthenticatorAction.class);
        
      @EJB
      private UserManagement mUserManagement;
        
         public boolean authenticate() {
         
          String lUsername = Identity.instance().getCredentials().getUsername();
          String lPassword = Identity.instance().getCredentials().getPassword();
         
          User lUser = mUserManagement.validateUser(lUsername, lPassword);
         
          if (lUser != null && lUser instanceof Admin) {
           user = lUser;
           return true;
          }
          else
           return false;

         }

      }

       

      Stacktrace:

       

      15:19:11,700 ERROR [org.jboss.seam.security.jaas.SeamLoginModule] (http-localhost-127.0.0.1-8080-5) Error invoking login method: org.jboss.seam.InstantiationException: Could not instantiate S

              at org.jboss.seam.Component.newInstance(Component.java:2041) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.Component.getInstance(Component.java:1923) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.Component.getInstance(Component.java:1890) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53) [jboss-seam.jar:2.1.0.BETA1]

              at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [jsf-impl-2.1.7-jbossorg-2.jar:]

              at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [jsf-impl-2.1.7-jbossorg-2.jar:]

              at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.el.parser.AstValue.getTarget(AstValue.java:34) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.el.parser.AstValue.invoke(AstValue.java:95) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:174) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.security.jaas.SeamLoginModule.login(SeamLoginModule.java:109) [jboss-seam.jar:2.1.0.BETA1]

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_19]

              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_19]

              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_19]

              at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_19]

              at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) [rt.jar:1.6.0_19]

              at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) [rt.jar:1.6.0_19]

              at javax.security.auth.login.LoginContext$5.run(LoginContext.java:706) [rt.jar:1.6.0_19]

              at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.6.0_19]

              at javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:703) [rt.jar:1.6.0_19]

              at javax.security.auth.login.LoginContext.login(LoginContext.java:575) [rt.jar:1.6.0_19]

              at org.jboss.seam.security.Identity.authenticate(Identity.java:317) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.security.Identity.authenticate(Identity.java:306) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.security.Identity.login(Identity.java:235) [jboss-seam.jar:2.1.0.BETA1]

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_19]

              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_19]

              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_19]

              at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_19]

              at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:329) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:342) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.el.parser.AstValue.invoke(AstValue.java:96) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [jboss-el-1.0_02.CR2.jar:1.0_02.CR2]

              at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) [jsf-facelets-1.1.11-classpath15B1.jar:1.1.11]

              at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]

              at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) [jsf-impl-2.1.7-jbossorg-2.jar:]

              at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]

              at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]

              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]

              at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]

              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]

              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]

              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.1.0.BETA1]

              at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507) [richfaces-impl-3.2.2.GA.jar:3.2.2.GA]

              at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) [jboss-seam.jar:2.1.0.BETA1]

              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]

              at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]

              at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]

              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]

              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]

              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]

              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]

              at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_19]

      Caused by: javax.naming.NotContextException: emsi/emsi.jar/AuthenticatorAction

              at org.jboss.as.naming.util.NamingUtils.notAContextException(NamingUtils.java:140)

              at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:197)

              at org.jboss.as.naming.InitialContext.lookup(InitialContext.java:123)

              at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:214)

              at javax.naming.InitialContext.lookup(InitialContext.java:392) [rt.jar:1.6.0_19]

              at org.jboss.seam.Component.instantiateSessionBean(Component.java:1312) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.Component.instantiate(Component.java:1276) [jboss-seam.jar:2.1.0.BETA1]

              at org.jboss.seam.Component.newInstance(Component.java:2019) [jboss-seam.jar:2.1.0.BETA1]

              ... 82 more

       

       

      Contents of my ear:

       

      lib

      META-INF

      emsi.jar

      emsi.war

      jboss-seam-excel.jar

      jboss-seam.jar

       

      components.xml

       

       

       

       

          <core:init jndi-pattern="java:global/emsi/emsi.jar/#{ejbName}/local" debug="false"/>
         
          <component class="org.jboss.seam.transaction.EjbSynchronizations" jndi-name="java:app/jboss-seam/EjbSynchronizations"/>
          <component class="org.jboss.seam.async.TimerServiceDispatcher" jndi-name="java:app/jboss-seam/TimerServiceDispatcher"/>
         
          <import>org.jboss.seam.excel.exporter</import>

          <transaction:ejb-transaction/>

          <security:identity authenticate-method="#{authenticator.authenticate}"  />

       

       

       

       

       

      faces-config.xml

       

      <application>

        <view-handler>org.ajax4jsf.application.AjaxViewHandler</view-handler>

      </application>

        • 1. Re: NotContextException when looking up Autenticator
          jaikiran

          java:global/emsi/emsi.jar/#{ejbName}/local

           

          That's a wrong JNDI name pattern. Notice the JNDI names logged on the server console. For example:

           

          java:global/emsi/emsi.jar/AuthenticatorAction

           

          So the pattern should be

           

          java:global/emsi/emsi.jar/#{ejbName}

           

          (assuming the EJB exposes just one view). Otherwise you'll have to use a pattern like:

           

          java:global/emsi/emsi.jar/#{ejbName}!#{interfaceName}

           

          I don't know how you'll get hold of the interface name in that pattern, in Seam.

          • 2. Re: NotContextException when looking up Autenticator
            niharika

            Thanks Jaikiran! Removing 'local' from the JND pattern did the trick

             

            Thanks again!