[Security & JAAS/JBoss] - Re: FORM based authenticated session not logged out properly
by mp30130
Ok; I have simplified my test and removed my portal from the equation; I am simply using JSPs and the LdapExtLoginModule, and BASIC authentication. I still observe the same issue ? where I am granted access to resources when I would expect to have to re-login after invalidating my session.
I have a secure directory which has a resource constraint on it. In the secure directory, I have a invalidate.jsp file. When this jsp file is visited, I invalidate the session. I would then expect I would not be able to visit any other pages under my secure directory; rather, I would expect that I would be prompted to login again if I visit another page under my secure directory. It appears that even though I have set flushOnSessionInvalidation=true in my jboss-web.xml configuration, it appears that caching is still going on and the LdapExtLoginModule.login is being called w/o having me needing to reenter the password through the BASIC authentication dialog box.
Here is the output from my simplified test program. The session invalidation occurs at
2006-12-11 23:22:47,446 and the auto re-login occurs at 2006-12-11 23:23:28,886. How do I disable this caching and force a re-login?
2006-12-11 23:22:44,304 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/secure/invalidate.jsp --> false
| 2006-12-11 23:22:44,304 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/secure/invalidate.jsp --> true
| 2006-12-11 23:22:44,305 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/secure/invalidate.jsp --> false
| 2006-12-11 23:22:44,305 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/secure/invalidate.jsp --> true
| 2006-12-11 23:22:44,305 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling hasUserDataPermission()
| 2006-12-11 23:22:44,305 DEBUG [org.apache.catalina.realm.RealmBase] User data constraint has no restrictions
| 2006-12-11 23:22:44,305 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling authenticate()
| 2006-12-11 23:22:44,305 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Begin authenticate, username=testuser
| 2006-12-11 23:22:44,306 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] Begin isValid, principal:testuser, cache info: org.jboss.security.plugins.JaasSecurityManager$DomainInfo@bcecc7[Subject(7838822).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)),credential.class=java.lang.String@21479899,expirationTime=1165899151778]
| 2006-12-11 23:22:44,306 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] Begin validateCache, info=org.jboss.security.plugins.JaasSecurityManager$DomainInfo@bcecc7[Subject(7838822).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)),credential.class=java.lang.String@21479899,expirationTime=1165899151778];credential.class=java.lang.String@21479899
| 2006-12-11 23:22:44,306 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] End validateCache, isValid=true
| 2006-12-11 23:22:44,306 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] End isValid, true
| 2006-12-11 23:22:44,306 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] User: testuser is authenticated
| 2006-12-11 23:22:44,306 TRACE [org.jboss.security.SecurityAssociation] pushSubjectContext, subject=Subject:
| Principal: testuser
| Principal: Roles(members:trader)
| , sc=org.jboss.security.SecurityAssociation$SubjectContext@d34b8c{principal=testuser,subject=325274}
|
| 2006-12-11 23:22:44,306 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] getPrincipal, cache info: org.jboss.security.plugins.JaasSecurityManager$DomainInfo@bcecc7[Subject(7838822).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)),credential.class=java.lang.String@21479899,expirationTime=1165899151778]
| 2006-12-11 23:22:44,306 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Mapped from input principal: testuserto: testuser
| 2006-12-11 23:22:44,306 TRACE [org.jboss.security.SecurityAssociation] getSubject, sc=org.jboss.security.SecurityAssociation$SubjectContext@d34b8c{principal=testuser,subject=325274}
| 2006-12-11 23:22:44,307 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] getUserRoles, subject: Subject:
| Principal: testuser
| Principal: Roles(members:trader)
|
| 2006-12-11 23:22:44,307 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] End authenticate, principal=GenericPrincipal[testuser(trader,)]
| 2006-12-11 23:22:44,307 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Authenticated 'testuser' with type 'BASIC'
| 2006-12-11 23:22:44,307 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling accessControl()
| 2006-12-11 23:22:44,307 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Checking roles GenericPrincipal[testuser(trader,)]
| 2006-12-11 23:22:44,307 DEBUG [org.apache.catalina.realm.RealmBase] Username testuser has role trader
| 2006-12-11 23:22:44,307 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] No role found: trader
| 2006-12-11 23:22:44,307 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Successfully passed all security constraints
| 2006-12-11 23:22:44,307 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] Begin invoke, callerGenericPrincipal[testuser(trader,)]
| 2006-12-11 23:22:44,307 TRACE [org.jboss.security.SecurityAssociation] pushRunAsIdentity, runAs=null
| 2006-12-11 23:22:44,307 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] Restoring principal info from cache
| 2006-12-11 23:22:44,307 TRACE [org.jboss.security.SecurityAssociation] pushSubjectContext, subject=Subject:
| Principal: testuser
| Principal: Roles(members:trader)
| , sc=org.jboss.security.SecurityAssociation$SubjectContext@1da1845{principal=testuser,subject=325274}
| 2006-12-11 23:22:44,307 TRACE [org.jboss.web.tomcat.security.RunAsListener] jsp, runAs: null
| 2006-12-11 23:22:44,307 TRACE [org.jboss.web.tomcat.security.RunAsListener] jsp, runAs: null
| 2006-12-11 23:22:46,648 DEBUG [org.apache.catalina.session.ManagerBase] Start expire sessions StandardManager at 1165897366647 sessioncount 0
| 2006-12-11 23:22:46,648 DEBUG [org.apache.catalina.session.ManagerBase] End expire sessions StandardManager processingTime 1 expired sessions: 0
| 2006-12-11 23:22:46,648 DEBUG [org.apache.catalina.session.ManagerBase] Start expire sessions StandardManager at 1165897366648 sessioncount 0
| 2006-12-11 23:22:46,648 DEBUG [org.apache.catalina.session.ManagerBase] End expire sessions StandardManager processingTime 0 expired sessions: 0
| 2006-12-11 23:22:47,435 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Session Created with id=1C3E4585A5D9B5916FB1C2B2DDC911C9
| 2006-12-11 23:22:47,446 INFO [STDOUT] Invalidating session...
| 2006-12-11 23:22:47,446 INFO [STDOUT] ***** request = org.apache.catalina.connector.RequestFacade@1024864
| 2006-12-11 23:22:47,447 DEBUG [org.apache.catalina.realm.RealmBase] Username testuser has role trader
| 2006-12-11 23:22:47,447 INFO [STDOUT] Invalidating the session: org.apache.catalina.session.StandardSessionFacade@deb65f
| 2006-12-11 23:22:47,447 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Session Destroy with id=1C3E4585A5D9B5916FB1C2B2DDC911C9
| 2006-12-11 23:22:47,450 TRACE [org.jboss.security.SecurityAssociation] getSubject, sc=org.jboss.security.SecurityAssociation$SubjectContext@1da1845{principal=testuser,subject=325274}
| 2006-12-11 23:22:47,450 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Jacc Subject = Subject:
| Principal: testuser
| Principal: Roles(members:trader)
|
| 2006-12-11 23:22:47,450 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] securityDomain=mydomain
| 2006-12-11 23:22:47,450 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Authenticated Principal=testuser2006-12-11 23:22:47,450 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Before flush of authentication cache::
| 2006-12-11 23:22:47,451 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Number of authenticated principals remaining in cache=1
| 2006-12-11 23:22:47,451 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Authenticated principal in cache=testuser
| 2006-12-11 23:22:47,451 TRACE [org.jboss.security.plugins.JaasSecurityManager$DomainInfo] destroy, subject=Subject:
| Principal: testuser
| Principal: Roles(members:trader)
| , this=org.jboss.security.plugins.JaasSecurityManager$DomainInfo@bcecc7[Subject(7838822).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)),credential.class=java.lang.String@21479899,expirationTime=1165899151778], activeUsers=0
| 2006-12-11 23:22:47,451 TRACE [org.jboss.security.plugins.JaasSecurityManager$DomainInfo] logout, subject=Subject:
| Principal: testuser
| Principal: Roles(members:trader)
| , this=org.jboss.security.plugins.JaasSecurityManager$DomainInfo@bcecc7[Subject(7838822).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)),credential.class=java.lang.String@21479899,expirationTime=1165899151778]
| 2006-12-11 23:22:47,451 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] logout
| 2006-12-11 23:22:47,451 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] After flush of authentication cache::
| 2006-12-11 23:22:47,451 TRACE [org.jboss.web.tomcat.security.SecurityFlushSessionListener] Number of authenticated principals remaining in cache=0
| 2006-12-11 23:22:47,452 TRACE [org.jboss.web.tomcat.security.RunAsListener] jsp, runAs: null
| 2006-12-11 23:22:47,452 TRACE [org.jboss.web.tomcat.security.RunAsListener] jsp, runAs: null
| 2006-12-11 23:22:47,453 TRACE [org.jboss.security.SecurityAssociation] popRunAsIdentity, runAs=null
| 2006-12-11 23:22:47,453 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] End invoke, callerGenericPrincipal[testuser(trader,)]
| 2006-12-11 23:22:47,453 TRACE [org.jboss.security.SecurityAssociation] clear, server=true
| 2006-12-11 23:22:56,650 DEBUG [org.apache.catalina.session.ManagerBase] Start expire sessions StandardManager at 1165897376650 sessioncount 0
| 2006-12-11 23:22:56,650 DEBUG [org.apache.catalina.session.ManagerBase] End expire sessions StandardManager processingTime 0 expired sessions: 0
| 2006-12-11 23:23:16,653 DEBUG [org.apache.catalina.session.ManagerBase] Start expire sessions StandardManager at 1165897396653 sessioncount 0
| 2006-12-11 23:23:16,653 DEBUG [org.apache.catalina.session.ManagerBase] End expire sessions StandardManager processingTime 0 expired sessions: 0
| 2006-12-11 23:23:16,653 DEBUG [org.apache.catalina.session.ManagerBase] Start expire sessions StandardManager at 1165897396653 sessioncount 0
| 2006-12-11 23:23:16,653 DEBUG [org.apache.catalina.session.ManagerBase] End expire sessions StandardManager processingTime 0 expired sessions: 0
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Security checking request GET /testsec/pages/
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/ --> false
| 2006-12-11 23:23:20,538 DEBUG [org.apache.catalina.realm.RealmBase] No applicable constraint located
| 2006-12-11 23:23:20,539 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Not subject to any constraint
| 2006-12-11 23:23:20,539 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] Begin invoke, callernull
| 2006-12-11 23:23:20,539 TRACE [org.jboss.security.SecurityAssociation] pushRunAsIdentity, runAs=null
| 2006-12-11 23:23:20,539 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:20,539 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:20,541 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:20,541 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:20,541 TRACE [org.jboss.security.SecurityAssociation] popRunAsIdentity, runAs=null
| 2006-12-11 23:23:20,541 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] End invoke, callernull
| 2006-12-11 23:23:20,541 TRACE [org.jboss.security.SecurityAssociation] clear, server=true
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Security checking request GET /testsec/pages/secure/
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/secure/ --> false
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/secure/ --> true
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[SecretProtection]' against GET /pages/secure/ --> false
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[secure pages]' against GET /pages/secure/ --> true
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling hasUserDataPermission()
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.realm.RealmBase] User data constraint has no restrictions
| 2006-12-11 23:23:28,885 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling authenticate()
| 2006-12-11 23:23:28,885 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Begin authenticate, username=testuser
| 2006-12-11 23:23:28,886 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] Begin isValid, principal:testuser, cache info: null
| 2006-12-11 23:23:28,886 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] defaultLogin, principal=testuser
| 2006-12-11 23:23:28,886 TRACE [org.jboss.security.auth.login.XMLLoginConfigImpl] End getAppConfigurationEntry(mydomain), authInfo=AppConfigurationEntry[]:
| [0]
| LoginModule Class: org.jboss.security.auth.spi.LdapExtLoginModule
| ControlFlag: LoginModuleControlFlag: required
| Options:name=roleFilter, value=(memberUid={0})
| name=baseFilter, value=(uid={0})
| name=bindCredential, value=somePortal
| name=bindDN, value=cn=SomePortal,dc=somebrokerage,dc=com
| name=roleRecursion, value=-1
| name=java.naming.provider.url, value=ldap://ldapserver:389
| name=roleAttributeID, value=cn
| name=baseCtxDN, value=dc=somebrokerage,dc=com
| name=rolesCtxDN, value=ou=Group,dc=somebrokerage,dc=com
|
| 2006-12-11 23:23:28,886 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] initialize, instance=@8443349
| 2006-12-11 23:23:28,886 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] login
| 2006-12-11 23:23:28,906 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] Assign user to role trader
| 2006-12-11 23:23:28,907 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] User 'testuser' authenticated, loginOk=true
| 2006-12-11 23:23:28,907 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] commit, loginOk=true
| 2006-12-11 23:23:28,907 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] defaultLogin, lc=javax.security.auth.login.LoginContext@56c88c, subject=Subject(25727428).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader))
| 2006-12-11 23:23:28,907 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] updateCache, inputSubject=Subject(25727428).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)), cacheSubject=Subject(18477885).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader))
| 2006-12-11 23:23:28,907 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] Inserted cache info: org.jboss.security.plugins.JaasSecurityManager$DomainInfo@b041f3[Subject(18477885).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)),credential.class=java.lang.String@21479899,expirationTime=1165899151778]
| 2006-12-11 23:23:28,907 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] End isValid, true
| 2006-12-11 23:23:28,907 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] User: testuser is authenticated
| 2006-12-11 23:23:28,907 TRACE [org.jboss.security.SecurityAssociation] pushSubjectContext, subject=Subject:
| Principal: testuser
| Principal: Roles(members:trader)
| , sc=org.jboss.security.SecurityAssociation$SubjectContext@1b9e1e7{principal=testuser,subject=10368983}
| 2006-12-11 23:23:28,908 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] getPrincipal, cache info: org.jboss.security.plugins.JaasSecurityManager$DomainInfo@b041f3[Subject(18477885).principals=org.jboss.security.SimplePrincipal@32394345(testuser)org.jboss.security.SimpleGroup@27381857(Roles(members:trader)),credential.class=java.lang.String@21479899,expirationTime=1165899151778]
| 2006-12-11 23:23:28,908 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Mapped from input principal: testuserto: testuser
| 2006-12-11 23:23:28,908 TRACE [org.jboss.security.SecurityAssociation] getSubject, sc=org.jboss.security.SecurityAssociation$SubjectContext@1b9e1e7{principal=testuser,subject=10368983}
| 2006-12-11 23:23:28,908 TRACE [org.jboss.security.plugins.JaasSecurityManager.mydomain] getUserRoles, subject: Subject:
| Principal: testuser
| Principal: Roles(members:trader)
|
| 2006-12-11 23:23:28,908 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] End authenticate, principal=GenericPrincipal[testuser(trader,)]
| 2006-12-11 23:23:28,908 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Authenticated 'testuser' with type 'BASIC'
| 2006-12-11 23:23:28,908 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling accessControl()
| 2006-12-11 23:23:28,908 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Checking roles GenericPrincipal[testuser(trader,)]
| 2006-12-11 23:23:28,908 DEBUG [org.apache.catalina.realm.RealmBase] Username testuser has role trader
| 2006-12-11 23:23:28,908 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] No role found: trader
| 2006-12-11 23:23:28,908 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Successfully passed all security constraints
| 2006-12-11 23:23:28,908 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] Begin invoke, callerGenericPrincipal[testuser(trader,)]
| 2006-12-11 23:23:28,908 TRACE [org.jboss.security.SecurityAssociation] pushRunAsIdentity, runAs=null
| 2006-12-11 23:23:28,908 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] Restoring principal info from cache
| 2006-12-11 23:23:28,909 TRACE [org.jboss.security.SecurityAssociation] pushSubjectContext, subject=Subject:
| Principal: testuser
| Principal: Roles(members:trader)
| , sc=org.jboss.security.SecurityAssociation$SubjectContext@1642565{principal=testuser,subject=10368983}
| 2006-12-11 23:23:28,909 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:28,909 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:28,910 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:28,910 TRACE [org.jboss.web.tomcat.security.RunAsListener] default, runAs: null
| 2006-12-11 23:23:28,910 TRACE [org.jboss.security.SecurityAssociation] popRunAsIdentity, runAs=null
| 2006-12-11 23:23:28,910 TRACE [org.jboss.web.tomcat.security.SecurityAssociationValve] End invoke, callerGenericPrincipal[testuser(trader,)]
| 2006-12-11 23:23:28,910 TRACE [org.jboss.security.SecurityAssociation] clear, server=true
| 2006-12-11 23:23:36,657 DEBUG [org.apache.catalina.session.ManagerBase] Start expire sessions StandardManager at 1165897416657 sessioncount 0
| 2006-12-11 23:23:36,657 DEBUG [org.apache.catalina.session.ManagerBase] End expire sessions StandardManager processingTime 0 expired sessions: 0
| 2006-12-11 23:23:36,657 DEBUG [org.apache.catalina.session.ManagerBase] Start expire sessions StandardManager at 1165897416657 sessioncount 0
| 2006-12-11 23:23:36,657 DEBUG [org.apache.catalina.session.ManagerBase] End expire sessions StandardManager processingTime 0 expired sessions: 0
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3992970#3992970
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3992970
19 years, 4 months
[EJB/JBoss] - Using entity bean in JBoss storing
by ponds81
Using entity bean in JBoss storing "IMAGE" data type in SYBASE
We are using JBoss-4.0.4.GA, Entity Bean 2.x (CMP), Sybase 12.5
File Name :- jconn2.jar
File Version :- 1.4.2_04
File Size :- 876 kb
When we try to insert an object in to column of data type "IMAGE" in Sybase by using EJB 2.x we get the fallowing exception
2006-11-24 13:31:58,328 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.parentTraceEnabled=true
2006-11-24 13:31:58,359 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.nestedTraceEnabled=false
2006-11-24 13:31:58,359 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.detectDuplicateNesting=true
2006-11-24 13:31:58,218 WARN [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Exception destroying ManagedConnection org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@a97cec[state=DESTROYED mc=org.jboss.resource.adapter.jdbc.local.LocalManagedConnection@1f71b53 handles=0 lastUse=1164355312640 permit=false trackByTx=false mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$OnePool@22f376 context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@9ddfa3]
org.jboss.resource.JBossResourceException: SQLException; - nested throwable: (java.sql.SQLException: JZ0C0: Connection is already closed.)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkException(BaseWrapperManagedConnection.java:541)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.destroy(BaseWrapperManagedConnection.java:255)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.doDestroy(InternalManagedConnectionPool.java:539)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.returnConnection(InternalManagedConnectionPool.java:329)
at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.returnConnection(JBossManagedConnectionPool.java:552)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.returnManagedConnection(BaseConnectionManager2.java:407)
at org.jboss.resource.connectionmanager.BaseConnectionManager2$BaseConnectionEventListener.connectionErrorOccurred(BaseConnectionManager2.java:768)
at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.connectionErrorOccurred(TxConnectionManager.java:550)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.broadcastConnectionError(BaseWrapperManagedConnection.java:327)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.connectionError(BaseWrapperManagedConnection.java:313)
at org.jboss.resource.adapter.jdbc.WrappedConnection.checkException(WrappedConnection.java:757)
at org.jboss.resource.adapter.jdbc.WrappedStatement.checkException(WrappedStatement.java:768)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:320)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCIdentityColumnCreateCommand.executeInsert(JDBCIdentityColumnCreateCommand.java:51)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.performInsert(JDBCAbstractCreateCommand.java:286)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.execute(JDBCAbstractCreateCommand.java:137)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:572)
at org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:222)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntity(CachedConnectionInterceptor.java:266)
at org.jboss.ejb.EntityContainer.createLocalHome(EntityContainer.java:612)
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:324)
at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1113)
at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:90)
at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:192)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:212)
at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:90)
at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:117)
at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61)
at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28)
at org.jboss.ejb.plugins.CallValidationInterceptor.invokeHome(CallValidationInterceptor.java:41)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:109)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:313)
at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:126)
at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:99)
at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:121)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:508)
at org.jboss.ejb.Container.invoke(Container.java:891)
at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyFactory.java:342)
at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:118)
at $Proxy94.create(Unknown Source)
_____________________________________________________________________________________________________
Here is the code for the bean
/**
* RecoverLogBean is an EntityBean. This EJBean illustrates:
*
* Container-managed JDBC persistence and transactions;
* the code in this file never directly accesses the data storage.
* Application-defined exceptions.
* Use of EJB 2.0 relationships.
* Use of EJB-QL in query methods.
*
* The javadoc comments in this document are critical and should be changed with consideration.
* The EJBGen tool reads these comments and creates corresponding
* EJB2.0 XML files as well as Home and Remote interfaces
*
* This bean uses EJBGen tags.
*
* @ejb.bean description="RecoverLog"
* name="RecoverLog"
* local-jndi-name="abs.RecoverLog"
* type="CMP"
* primkey-field = "id"
* view-type="local"
* cmp-version = "2.x"
*
* @jboss.persistence
* table-name = "recoverLog"
*
* @ejb.pk class = "java.lang.Integer"
*
* @jboss.unknown-pk
* column-name = "id"
* jdbc-type = "INTEGER"
* sql-type = "INTEGER"
* class = "java.lang.Integer"
*
*
* @jboss.entity-command name = "sybase-fetch-key"
* class = "org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCSybaseCreateCommand"
* @jboss.entity-command-attribute name = "pk-sql"
* value = "SELECT @@IDENTITY"
*
* @ejb.finder
* signature = "Collection findAll()"
* query = "SELECT OBJECT(o) FROM RecoverLog o WHERE o.id IS NOT NULL"
*
* @ejb.finder
* signature = "Collection findByStatus(java.lang.String status)"
* query = "SELECT OBJECT(o) FROM RecoverLog o WHERE o.status = ?1"
*
* @ejb.finder
* signature = "Collection findByStatusUnique(java.lang.String status)"
* query = "SELECT OBJECT(o) FROM RecoverLog o WHERE o.status = ?1 AND o.id = (SELECT MIN(o1.id) FROM RecoverLog o1 WHERE o1.status = ?1 AND o1.attemptCount = (SELECT MIN(o2.attemptCount) FROM RecoverLog o2 WHERE o2.status = ?1))"
*
* @jboss.declared-sql alias = "o"
* signature = "Collection findByStatusUnique(java.lang.String status)"
* where = "o.status = {0} AND o.id = (SELECT MIN(o1.id) FROM RecoverLog o1 WHERE o1.status = {0} AND o1.attemptCount = (SELECT MIN(o2.attemptCount) FROM RecoverLog o2 WHERE o2.status = {0}))"
*
*/
abstract public class RecoverLogBean implements EntityBean
{
// ----------------------------------------------------------- Constants
// JNDI name of the EJB home object
// NOTE: Any changes here should also be reflected in the deployment descriptor.
public final static String JNDI_NAME = "abs.RecoverLog";
public final static String TYPE_CANCEL_BET = "Bet Cancel";
public final static String TYPE_PERSIST_BET = "Bet Persist";
public final static String TYPE_ACCOUNT_BALANCE = "Account Balance";
public final static String STATUS_PENDING = "Pending";
public final static String STATUS_RESOLVED = "Resolved";
public final static String STATUS_INPROGRESS = "InProgress";
// Added for CR 4311 - status for reaching the max attempt with failures
public static final String STATUS_DISCARDED = "Discarded";
// ----------------------------------------------------------- Member Variables
/**
* The container assigned reference to the entity
*/
private EntityContext context;
// ----------------------------------------------------------- Constructors
public RecoverLogBean() { /* do nothing */ }
// ----------------------------------------------------------- Public EJB Methods
/**
* Sets the context of the bean
* @param ec EntityContext
*/
public void setEntityContext(EntityContext ec) { context = ec; }
/**
* Clears the context of the bean
*/
public void unsetEntityContext() { this.context = null; }
/**
* This method is called when the container picks this entity object
* and assigns it to a specific entity object. Insert code here to
* acquire any additional resources that it needs when it is in the
* ready state.
*/
public void ejbActivate() { /* do nothing */ }
/**
* This method is called when the container diassociates the bean
* from the entity object identity and puts the instance back into
* the pool of available instances. Insert code to release any
* resources that should not be held while the instance is in the
* pool.
*/
public void ejbPassivate() { /* do nothing */ }
/**
* The container invokes this method on the bean whenever it
* becomes necessary to synchronize the bean's state with the
* state in the database. This method is called after the container
* has loaded the bean's state from the database.
*/
public void ejbLoad() { /* do nothing */ }
/**
* The container invokes this method on the bean whenever it
* becomes necessary to synchronize the state in the database
* with the state of the bean. This method is called before the
* container extracts the fields and writes them into the database.
*/
public void ejbStore() { /* do nothing */ }
/**
* The container invokes this method in response to a client-invoked
* remove request. Insert code to implement any actions before the
* bean is removed from the database.
*/
public void ejbRemove() throws javax.ejb.RemoveException { /* do nothing */ }
/**
* This method is invoked when a client invokes the matching create()
* on the home interface. Initialize the fields that will be used
* used by the container to create a record in the database
*
* @ejb.create-method view-type = "local"
*
* @param info RecoverLogInfo
* @return Integer pk
* @throws CreateException
*/
public Integer ejbCreate(RecoverLogInfo info) throws CreateException
{
//this.setId(new Long(new Date().getTime()));
setAttemptCount(info.getAttemptCount());
if(info.getStatus()==null)
setStatus(STATUS_PENDING);
else
setStatus(info.getStatus());
Object o = info.getObject();
if(o instanceof BetPersistLogObject)
this.setType(TYPE_PERSIST_BET);
else if(o instanceof BetCancelLogObject)
this.setType(TYPE_CANCEL_BET);
else if(o instanceof BalanceLogObject) // Added for CR#3274 dt:5aug04
this.setType(TYPE_ACCOUNT_BALANCE);
this.setReferenceName(info.getReferenceName());
setObject(o);
setTimeEntered(info.getTimeEntered());
setTimeUpdated(info.getTimeUpdated());
return null;
}
/**
* The container invokes this method after invoking the ejbCreate
* method with the same arguments.
* @param info RecoverLogInfo
* @throws CreateException
*/
public void ejbPostCreate(RecoverLogInfo info) throws CreateException
{
// do nothing
}
// ----------------------------------------------------------- Public Business Methods
_____________________________________________________________________________________________________
Here is the data sourse file for sybase ie. sybaseDataSource-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- ===================================================================== -->
<!-- -->
<!-- JBoss Server Configuration -->
<!-- -->
<!-- New ConnectionManager setup for Sybase ASE/ASA jConnect driver -->
<!-- Thanks to Marc Zampetti <zampetti(a)aol.net> -->
<!-- This is a minimal example. See the generic example for other stuff -->
<!-- ===================================================================== -->
<!-- $Id: sybase-ds.xml,v 1.4 2004/09/15 14:37:40 loubyansky Exp $ -->
<local-tx-datasource>
<jndi-name>sybaseDataSource</jndi-name>
<connection-url>jdbc:sybase:Tds:system-name:5000/abs_dev?JCONNECT_VERSION=6</connection-url>
<driver-class>com.sybase.jdbc2.jdbc.SybDriver</driver-class>
<user-name>abs_dev</user-name>
abs_dev
<min-pool-size>5</min-pool-size>
<max-pool-size>5</max-pool-size>
<track-statements/>true<track-statements/>
<new-connection-sql><![CDATA[SELECT COUNT(*) FROM SYSTEMPROPERTY]]></new-connection-sql>
<check-valid-connection-sql><![CDATA[SELECT COUNT(*) FROM SYSTEMPROPERTY]]></check-valid-connection-sql>
<no-tx-separate-pools/>
<track-connection-by-tx/>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.SybaseExceptionSorter</exception-sorter-class-name>
<type-mapping>Sybase</type-mapping>
</local-tx-datasource>
______________________________________________________________________________
The Script which create the table is as fallows
create table recoverLog1 (
id numeric(8,0) identity ,
status varchar(30) not null ,
type varchar(30) not null ,
referenceName varchar(60) not null ,
object varchar(260) not null ,
attemptCount numeric(2,0) not null ,
timeEntered datetime not null ,
timeUpdated datetime null ,
constraint PK_recoverlog1 PRIMARY KEY CLUSTERED ( id )
) with identity_gap = 50 on 'default'
go
create unique index type_referenceName_ux on RecoverLog1 (type, referenceName)
go
create index recoverLogIdx on recoverLog1 (id)
go
grant select on recoverLog1 to public
go
grant update on recoverLog1 to public
go
grant insert on recoverLog1 to public
go
_________________________________________________________________________________________
The fallowing things were observed
1) No call to callback method ie. ejbPostCreate, ejbStore
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3992962#3992962
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3992962
19 years, 4 months
[Tomcat, HTTPD, Servlets & JSP] - Session attribute event listener problem !!!!
by sumit.malik@redalkemi.com
Hi Everyone !!
Previously i have posted a query and now i can make out where exactly the problem is lying...
Please refer http://www.jboss.com/index.html?module=bb&op=viewtopic&t=96839
Here is actual log trace from server.log file
Code:
| ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/test]] Session attribute event listener threw exception
|
|
| java.lang.RuntimeException: Could not resolve beanClass method from proxy call: public abstract void
| javax.ejb.EJBLocalObject.remove() throws javax.ejb.RemoveException,javax.ejb.EJBException
| at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:169)
| at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98)
| at $Proxy128.remove(Unknown Source)
| at net.java.dev.strutsejb.web.SessionRemover.attributeRemoved(SessionRemover.java:39)
| at org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:
| 1623)
| at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1179)
| at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1151)
| at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1234)
| at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java
| :129)
| at org.apache.jsp.update2AppTrans_jsp._jspService(update2AppTrans_jsp.java:85)
| at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
| at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
| at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
| at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
| ava:252)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
|
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
| ava:202)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
|
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
| at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.ja
| va:174)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
| at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Htt
| p11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcp
| Endpoint.java:527)
| at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
| at java.lang.Thread.run(Thread.java:595)
|
|
Here i have found that there its the tomcat instance running with EJB3 deployer which is invalidation the session. I haven't got much assistance in this regard.
Please assist on this regard because here i m just stuck up with stateful session bean funcationality. Message driven and stateless session bean are running smooth fashion but just session invalidate problem from tomcat is creatin the problem.
Any suggestion would be a great help for me....
Looking forward for you responses...
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3992960#3992960
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3992960
19 years, 4 months