0 Replies Latest reply on Dec 30, 2012 3:49 PM by Sergio Collantes

    Tomcat 7 DatabaseServerLoginModule "Transaction Manager is null"

    Sergio Collantes Newbie

      Hi all,

       

      I'm trying to use Picketbox 3.0.0 in Tomcat 7 (using TomEE-plus 1.5.1). I want to use a DatabaseServerLoginModule, so I have defined the following configuration:

       

      login.cofig

       

      ajn2LoginModule {

          org.jboss.security.auth.spi.DatabaseServerLoginModule required

          dsJndiName="java:jdbc/ajn"

          principalsQuery="select password from usuario where username=?"

          rolesQuery="select rolename, 'Roles' from rol where  username=?";

      };

       

      server.xml

       

      <Realm className="org.apache.catalina.realm.JAASRealm" appName="ajn2LoginModule" />

       

      web.xml

       

      <security-constraint>

        <web-resource-collection>

         <web-resource-name>Aplicacion</web-resource-name>

         <url-pattern>/*</url-pattern>

         <http-method>GET</http-method>

         <http-method>POST</http-method>

        </web-resource-collection>

        <auth-constraint>

         <role-name>Cliente</role-name>

        </auth-constraint>

      </security-constraint>

      <login-config>

        <auth-method>FORM</auth-method>

        <form-login-config>

         <form-login-page>/index.html</form-login-page>

         <form-error-page>/index.html</form-error-page>

        </form-login-config>

      </login-config>

       

       

      Everything seems to be. When I try to retrieve a protected page the security system redirects me to a login form, where

      I submit a username and password. Then the server shows the following information:

       

       

      30-dic-2012 21:01:42 org.apache.catalina.realm.JAASRealm authenticate

      ADVERTENCIA: Excepción de Login autenticando nombre de usuario sergio

      javax.security.auth.login.LoginException: java.lang.IllegalStateException: Transaction Manager is null

                at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPassword(DatabaseServerLoginModule.java:158)

                at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:245)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

                at java.lang.reflect.Method.invoke(Method.java:597)

                at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)

                at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)

                at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)

                at java.security.AccessController.doPrivileged(Native Method)

                at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)

                at javax.security.auth.login.LoginContext.login(LoginContext.java:579)

                at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:409)

                at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:332)

                at org.apache.catalina.realm.CombinedRealm.authenticate(CombinedRealm.java:146)

                at org.apache.tomee.catalina.TomEERealm.authenticate(TomEERealm.java:43)

                at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:296)

                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:450)

                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)

                at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)

                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

                at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)

                at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)

                at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

                at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

                at java.lang.Thread.run(Thread.java:662)

                at javax.security.auth.login.LoginContext.invoke(LoginContext.java:872)

                at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)

                at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)

                at java.security.AccessController.doPrivileged(Native Method)

                at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)

                at javax.security.auth.login.LoginContext.login(LoginContext.java:579)

                at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:409)

                at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:332)

                at org.apache.catalina.realm.CombinedRealm.authenticate(CombinedRealm.java:146)

                at org.apache.tomee.catalina.TomEERealm.authenticate(TomEERealm.java:43)

                at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:296)

                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:450)

                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)

                at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)

                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

                at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)

                at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)

                at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

                at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

                at java.lang.Thread.run(Thread.java:662)

       

       

       

      I don't understand why is required a transaction to perform the queries but anyway, I don't know how to

      create the transaction, or to disable this requirement. I haven't found information about this topic, so I

      suppose it won't be hard to solve it (or maybe it has no solution at all)

       

      Thanks in advance,