[cas-user] Hibernate generated schema not liking the ticket registry

547 views
Skip to first unread message

Karl Nielsen

unread,
May 16, 2012, 4:02:37 PM5/16/12
to cas-...@lists.jasig.org
I have been following the End to end example on the wiki here: https://wiki.jasig.org/display/CASUM/End-to-end+Windows+Example and the JpaTicketRegistry https://wiki.jasig.org/display/CASUM/JpaTicketRegistry

I am using MySQL 5

I have upgraded things to use the 3.4.12 release of CAS

When I go to test my login I get this error thrown. Any idea as to why?

Hibernate: 
    insert 
    into
        casadm.SERVICETICKET
        (NUMBER_OF_TIMES_USED, CREATION_TIME, EXPIRATION_POLICY, LAST_TIME_USED, PREVIOUS_LAST_TIME_USED, ticketGrantingTicket_ID, FROM_NEW_LOGIN, TICKET_ALREADY_GRANTED, SERVICE, ID) 
    values
        (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2012-05-16 13:53:51,373 ERROR [org.hibernate.util.JDBCExceptionReporter] - <Cannot add or update a child row: a foreign key constraint fails (`casadm`.`serviceticket`, CONSTRAINT `FK7645ADE132A2C0E5` FOREIGN KEY (`ticketGrantingTicket_ID`) REFERENCES `TICKETGRANTINGTICKET` (`ID`))>
2012-05-16 13:53:51,374 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] - <Could not synchronize database state with session>
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:179)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:467)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy68.grantServiceTicket(Unknown Source)
at org.jasig.cas.web.flow.GenerateServiceTicketAction.doExecute(GenerateServiceTicketAction.java:39)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:105)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:105)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
at org.springframework.webflow.engine.ViewState.handleEvent(ViewState.java:254)
at org.springframework.webflow.engine.ViewState.resume(ViewState.java:218)
at org.springframework.webflow.engine.Flow.resume(Flow.java:545)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:259)
at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169)
at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody2(SafeDispatcherServlet.java:115)
at org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody3$advice(SafeDispatcherServlet.java:44)
at org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:1)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.github.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
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:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
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:680)
Caused by: java.sql.BatchUpdateException: Cannot add or update a child row: a foreign key constraint fails (`casadm`.`serviceticket`, CONSTRAINT `FK7645ADE132A2C0E5` FOREIGN KEY (`ticketGrantingTicket_ID`) REFERENCES `TICKETGRANTINGTICKET` (`ID`))
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2035)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1458)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 95 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`casadm`.`serviceticket`, CONSTRAINT `FK7645ADE132A2C0E5` FOREIGN KEY (`ticketGrantingTicket_ID`) REFERENCES `TICKETGRANTINGTICKET` (`ID`))
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4098)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4030)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2134)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2434)
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1987)
... 98 more

-- 
You are currently subscribed to cas-...@lists.jasig.org as: jasig-cas-user...@googlegroups.com
To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user

Jonathan Windle

unread,
May 16, 2012, 4:19:26 PM5/16/12
to cas-...@lists.jasig.org
Hello,

You might try changing

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>

to

<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>

In the ticketRegistry.xml file.

I also recently experienced some problems with CAS and MySQL 5 although I was getting slightly different errors. Setting the correct dialect for MySQL 5 fix my problem.

Thanks,
Jonathan


From: Karl Nielsen [karlnie...@gmail.com]
Sent: Wednesday, May 16, 2012 13:02
To: cas-...@lists.jasig.org
Subject: [cas-user] Hibernate generated schema not liking the ticket registry

-- 
You are currently subscribed to cas-...@lists.jasig.org as: jonatha...@bellevuecollege.edu

To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user

Karl Nielsen

unread,
May 16, 2012, 6:44:32 PM5/16/12
to cas-...@lists.jasig.org
I actually tried that Jonathan and it solved some other problems that I was having earlier, but it hasn't fixed the issue that I having below. 

-- 
You are currently subscribed to cas-...@lists.jasig.org as: karlnie...@gmail.com

To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user

Marvin S. Addison

unread,
May 17, 2012, 9:24:42 AM5/17/12
to cas-...@lists.jasig.org
> Caused by:
> com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
> Cannot add or update a child row: a foreign key constraint fails
> (`casadm`.`serviceticket`, CONSTRAINT `FK7645ADE132A2C0E5` FOREIGN KEY
> (`ticketGrantingTicket_ID`) REFERENCES `TICKETGRANTINGTICKET` (`ID`))

Seems to suggest that the parent TGT doesn't exist in the
TICKETGRANTINGTICKET table for the ST you're trying to create. Have you
confirmed that the parent record exists? If it doesn't, then it begs
the question why not, but at least you'll be tracking the root problem
instead.

M

Karl Nielsen

unread,
May 18, 2012, 4:04:56 PM5/18/12
to cas-...@lists.jasig.org
So I have cleaned up a bunch of stuff trying to track down the problem and I still don't see it. 

Here is what I have done:

I am using the war overlay method: 

    <properties>

        <cas.version>3.4.12</cas.version>

        <hibernate.core.version>3.6.0.Final</hibernate.core.version>

    </properties>

...

    <dependency>

        <groupId>org.hibernate</groupId>

<artifactId>hibernate-core</artifactId>

<version>${hibernate.core.version}</version>

        <scope>runtime</scope>

    </dependency>

    <dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-entitymanager</artifactId>

<version>${hibernate.core.version}</version>

<scope>runtime</scope>

    </dependency>



changed my deployConfigContext.xml to include this (commenting out the in-memory one):

 <bean id="serviceRegistryDao" class="org.jasig.cas.services.JpaServiceRegistryDaoImpl" p:entityManagerFactory-ref="entityManagerFactory" />

    

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

        <property name="dataSource" ref="libs.dataSource.cas"/>

        <property name="jpaVendorAdapter">

            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">

                <property name="generateDdl" value="true"/> <!-- CHANGE BACK TO FALSE -->

                <property name="showSql" value="true" />

            </bean>

        </property>

        <property name="jpaPropertyMap">

            <map>

                <!-- <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>  -->

                <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>

                <entry key="hibernate.hbm2ddl.auto" value="update"/>

                <entry key="hibernate.format_sql" value="true"/>

                <entry key="hibernate.default_schema" value ="casadm" />

            </map>

        </property>

    </bean>


    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" p:entityManagerFactory-ref="entityManagerFactory" />


    <tx:annotation-driven transaction-manager="transactionManager"/>


and added this for the AuthenticationHandler:

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

    <property name="dataSource" ref="libs.dataSource.cas" /> <!-- CHANGE TO CREW -->

    <property name="sql" value="select password from crewadm.web_login where login_id = ?" />

</bean>


then changed the ticketRegistry.xml to this:

<!-- Ticket Registry -->

  <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.JpaTicketRegistry" />

 

  <!-- TICKET REGISTRY CLEANER -->

  <bean id="ticketRegistryCleaner"

    class="org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner"

    p:ticketRegistry-ref="ticketRegistry"

    p:lock-ref="cleanerLock" />

 

  <bean id="cleanerLock"

    class="org.jasig.cas.ticket.registry.support.JpaLockingStrategy"

    p:uniqueId="${host.name}"

    p:applicationId="cas-ticket-registry-cleaner" />

 

  <bean id="ticketRegistryCleanerJobDetail"

    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"

    p:targetObject-ref="ticketRegistryCleaner"

    p:targetMethod="clean" />

 

  <bean id="periodicTicketRegistryCleanerTrigger"

    class="org.springframework.scheduling.quartz.SimpleTriggerBean"

    p:jobDetail-ref="ticketRegistryCleanerJobDetail"

    p:startDelay="20000"

    p:repeatInterval="1800000" />



If I login to just my server it is successful, but if I login to  my an app that redirects to CAS, the login page is displayed, but I get this logged to the tomcat console: 

2012-05-18 13:50:02,898 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN
=============================================================
WHO: [username: testuser]
WHAT: java.lang.NullPointerException
ACTION: TICKET_GRANTING_TICKET_NOT_CREATED
APPLICATION: CAS
WHEN: Fri May 18 13:50:02 MDT 2012
CLIENT IP ADDRESS: fe80:0:0:0:e2f8:47ff:fe2f:eba8%5
SERVER IP ADDRESS: fe80:0:0:0:e2f8:47ff:fe2f:eba8%5
=============================================================

Also, when cleaning up I am getting this error: 

2012-05-18 13:59:30,297 ERROR [org.quartz.core.JobRunShell] - <Job DEFAULT.ticketRegistryCleanerJobDetail threw an unhandled Exception: >
org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'clean' on target class [class org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; nested exception is java.lang.NullPointerException
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:273)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: java.lang.NullPointerException

The in memory model was working, do I have something mismatched with the upgrade to 3.4.12? 


TIA,

~karl~




On Thu, May 17, 2012 at 7:24 AM, Marvin S. Addison <marvin....@gmail.com> wrote:
Caused by:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Cannot add or update a child row: a foreign key constraint fails
(`casadm`.`serviceticket`, CONSTRAINT `FK7645ADE132A2C0E5` FOREIGN KEY
(`ticketGrantingTicket_ID`) REFERENCES `TICKETGRANTINGTICKET` (`ID`))

Seems to suggest that the parent TGT doesn't exist in the TICKETGRANTINGTICKET table for the ST you're trying to create.  Have you confirmed that the parent record exists?  If it doesn't, then it begs the question why not, but at least you'll be tracking the root problem instead.


M

--
You are currently subscribed to cas-...@lists.jasig.org as: karlnie...@gmail.com

To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user

Marvin S. Addison

unread,
May 21, 2012, 9:51:59 AM5/21/12
to cas-...@lists.jasig.org
> If I login to just my server it is successful, but if I login to my an app
> that redirects to CAS, the login page is displayed, but I get this logged
> to the tomcat console:
>
> 2012-05-18 13:50:02,898 INFO
> [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] -<Audit
> trail record BEGIN
> =============================================================
> WHO: [username: testuser]
> WHAT: java.lang.NullPointerException
> ACTION: TICKET_GRANTING_TICKET_NOT_CREATED
> APPLICATION: CAS
> WHEN: Fri May 18 13:50:02 MDT 2012
> CLIENT IP ADDRESS: fe80:0:0:0:e2f8:47ff:fe2f:eba8%5
> SERVER IP ADDRESS: fe80:0:0:0:e2f8:47ff:fe2f:eba8%5
> =============================================================

There should be some further logging to help indicate _why_ the TGT was
not created. Turn up the org.jasig.cas category to DEBUG and retry and
see if that gives more information. See
https://wiki.jasig.org/display/CASUM/Logging for more information on
logging config.

> Also, when cleaning up I am getting this error:
>
> 2012-05-18 13:59:30,297 ERROR [org.quartz.core.JobRunShell] -<Job
> DEFAULT.ticketRegistryCleanerJobDetail threw an unhandled Exception:>
> org.springframework.scheduling.quartz.JobMethodInvocationFailedException:
> Invocation of method 'clean' on target class [class
> org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed;
> nested exception is java.lang.NullPointerException
> at
> org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:273)
> at
> org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
> at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> at
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
> Caused by: java.lang.NullPointerException

Is that the complete stack trace? Knowing exactly where the NPE occurs
would be helpful, but I don't see it from the trace above.

M

--

Karl Nielsen

unread,
May 21, 2012, 1:16:46 PM5/21/12
to cas-...@lists.jasig.org
I increased the log level and an interesting to note is that it throws a NPE just doing the cleanup. This is just from me bouncing the server with the database dropped and letting it regenerate itself:

2012-05-21 11:08:37,143 ERROR [org.quartz.core.JobRunShell] - <Job DEFAULT.ticketRegistryCleanerJobDetail threw an unhandled Exception: >
org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'clean' on target class [class org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; nested exception is java.lang.NullPointerException
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:273)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: java.lang.NullPointerException
at org.jasig.cas.ticket.registry.support.JpaLockingStrategy.acquire_aroundBody0(JpaLockingStrategy.java:116)
at org.jasig.cas.ticket.registry.support.JpaLockingStrategy.acquire_aroundBody1$advice(JpaLockingStrategy.java:44)
at org.jasig.cas.ticket.registry.support.JpaLockingStrategy.acquire(JpaLockingStrategy.java:1)
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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy9.acquire(Unknown Source)
at org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody0(DefaultTicketRegistryCleaner.java:73)
at org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody1$advice(DefaultTicketRegistryCleaner.java:44)
at org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean(DefaultTicketRegistryCleaner.java:1)
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 org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264)
... 3 more
2012-05-21 11:08:37,144 ERROR [org.quartz.core.ErrorLogger] - <Job (DEFAULT.ticketRegistryCleanerJobDetail threw an exception.>
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'clean' on target class [class org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; nested exception is java.lang.NullPointerException]
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'clean' on target class [class org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; nested exception is java.lang.NullPointerException
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:273)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 more
Caused by: java.lang.NullPointerException
at org.jasig.cas.ticket.registry.support.JpaLockingStrategy.acquire_aroundBody0(JpaLockingStrategy.java:116)
at org.jasig.cas.ticket.registry.support.JpaLockingStrategy.acquire_aroundBody1$advice(JpaLockingStrategy.java:44)
at org.jasig.cas.ticket.registry.support.JpaLockingStrategy.acquire(JpaLockingStrategy.java:1)
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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy9.acquire(Unknown Source)
at org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody0(DefaultTicketRegistryCleaner.java:73)
at org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody1$advice(DefaultTicketRegistryCleaner.java:44)
at org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean(DefaultTicketRegistryCleaner.java:1)
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 org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264)
... 3 more




After running the app and going to the "secure" area, it dumps out this stack trace:

2012-05-21 11:14:20,359 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - <Reloading registered services.>
Hibernate: 
    select
        abstractre0_.id as id0_,
        abstractre0_.allowedToProxy as allowedT3_0_,
        abstractre0_.anonymousAccess as anonymou4_0_,
        abstractre0_.description as descript5_0_,
        abstractre0_.enabled as enabled0_,
        abstractre0_.evaluation_order as evaluation7_0_,
        abstractre0_.ignoreAttributes as ignoreAt8_0_,
        abstractre0_.name as name0_,
        abstractre0_.serviceId as serviceId0_,
        abstractre0_.ssoEnabled as ssoEnabled0_,
        abstractre0_.theme as theme0_,
        abstractre0_.expression_type as expression1_0_ 
    from
        casadm.RegisteredServiceImpl abstractre0_
2012-05-21 11:14:20,364 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - <Loaded 0 services.>
2012-05-21 11:14:26,265 INFO [org.jasig.cas.web.flow.InitialFlowSetupAction] - <Setting path for cookies to: /cas/>
2012-05-21 11:14:26,301 ERROR [org.jasig.cas.ticket.registry.JpaTicketRegistry] - <Error getting ticket TGT-2-cUeJC1IctNzqsdfgGowJNO1lldqdAO3JftW1ryPZyM23BY0OcR-cas from registry.>
java.lang.NullPointerException
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getRawTicket(JpaTicketRegistry.java:113)
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getTicket_aroundBody4(JpaTicketRegistry.java:107)
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getTicket_aroundBody5$advice(JpaTicketRegistry.java:44)
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getTicket(JpaTicketRegistry.java:1)
at org.jasig.cas.ticket.registry.AbstractTicketRegistry.getTicket_aroundBody0(AbstractTicketRegistry.java:35)
at org.jasig.cas.ticket.registry.AbstractTicketRegistry.getTicket_aroundBody1$advice(AbstractTicketRegistry.java:44)
at org.jasig.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:1)
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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at $Proxy8.getTicket(Unknown Source)
at org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket_aroundBody2(CentralAuthenticationServiceImpl.java:172)
at org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket_aroundBody3$advice(CentralAuthenticationServiceImpl.java:44)
at org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket(CentralAuthenticationServiceImpl.java:1)
at org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket_aroundBody4(CentralAuthenticationServiceImpl.java:251)
at org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket_aroundBody5$advice(CentralAuthenticationServiceImpl.java:44)
at org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket(CentralAuthenticationServiceImpl.java:1)
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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
at org.perf4j.aop.AbstractTimingAspect$1.proceed(AbstractTimingAspect.java:47)
at org.perf4j.aop.AgnosticTimingAspect.runProfiledMethod(AgnosticTimingAspect.java:53)
at org.perf4j.aop.AbstractTimingAspect.doPerfLogging(AbstractTimingAspect.java:45)
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 org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
at com.github.inspektr.audit.AuditTrailManagementAspect.handleAuditTrail(AuditTrailManagementAspect.java:126)
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 org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy39.grantServiceTicket(Unknown Source)
at org.jasig.cas.web.flow.GenerateServiceTicketAction.doExecute(GenerateServiceTicketAction.java:39)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Flow.start(Flow.java:535)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:364)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:222)
at org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:140)
at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:193)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
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:680)
2012-05-21 11:14:26,306 ERROR [org.jasig.cas.ticket.registry.JpaTicketRegistry] - <Error getting ticket TGT-2-cUeJC1IctNzqsdfgGowJNO1lldqdAO3JftW1ryPZyM23BY0OcR-cas from registry.>
java.lang.NullPointerException
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getRawTicket(JpaTicketRegistry.java:113)
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getTicket_aroundBody4(JpaTicketRegistry.java:107)
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getTicket_aroundBody5$advice(JpaTicketRegistry.java:44)
at org.jasig.cas.ticket.registry.JpaTicketRegistry.getTicket(JpaTicketRegistry.java:1)
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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy8.getTicket(Unknown Source)
at org.jasig.cas.audit.spi.TicketOrCredentialPrincipalResolver.resolveFromInternal(TicketOrCredentialPrincipalResolver.java:57)
at org.jasig.cas.audit.spi.TicketOrCredentialPrincipalResolver.resolveFrom_aroundBody2(TicketOrCredentialPrincipalResolver.java:45)
at org.jasig.cas.audit.spi.TicketOrCredentialPrincipalResolver.resolveFrom_aroundBody3$advice(TicketOrCredentialPrincipalResolver.java:44)
at org.jasig.cas.audit.spi.TicketOrCredentialPrincipalResolver.resolveFrom(TicketOrCredentialPrincipalResolver.java:1)
at com.github.inspektr.audit.AuditTrailManagementAspect.handleAuditTrail(AuditTrailManagementAspect.java:134)
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 org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy39.grantServiceTicket(Unknown Source)
at org.jasig.cas.web.flow.GenerateServiceTicketAction.doExecute(GenerateServiceTicketAction.java:39)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
at org.springframework.webflow.engine.State.enter(State.java:194)
at org.springframework.webflow.engine.Flow.start(Flow.java:535)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:364)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:222)
at org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:140)
at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:193)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
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:680)
2012-05-21 11:14:26,309 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN
=============================================================
WHO: audit:unknown
ACTION: SERVICE_TICKET_NOT_CREATED
APPLICATION: CAS
WHEN: Mon May 21 11:14:26 MDT 2012
CLIENT IP ADDRESS: 172.16.221.1
SERVER IP ADDRESS: 172.16.221.1
=============================================================

>
start[1337620503423] time[34] tag[QueryDatabaseAuthenticationHandler]
2012-05-21 11:15:03,457 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - <AuthenticationHandler: org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler successfully authenticated the user which provided the following credentials: [username: testuser]>
2012-05-21 11:15:03,458 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - <Resolved principal testuser>
2012-05-21 11:15:03,459 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - <Principal found: testuser>
2012-05-21 11:15:03,461 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN
=============================================================
WHO: [username: testuser]
WHAT: supplied credentials: [username: testuser]
ACTION: AUTHENTICATION_SUCCESS
APPLICATION: CAS
WHEN: Mon May 21 11:15:03 MDT 2012
CLIENT IP ADDRESS: 172.16.221.1
SERVER IP ADDRESS: 172.16.221.1
=============================================================

>
2012-05-21 11:15:03,461 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN
=============================================================
WHO: [username: testuser]
WHAT: java.lang.NullPointerException
ACTION: TICKET_GRANTING_TICKET_NOT_CREATED
APPLICATION: CAS
WHEN: Mon May 21 11:15:03 MDT 2012
CLIENT IP ADDRESS: 172.16.221.1
SERVER IP ADDRESS: 172.16.221.1
=============================================================



M

--
You are currently subscribed to cas-...@lists.jasig.org as: karlnie...@gmail.com

To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user

Karl Nielsen

unread,
May 21, 2012, 3:45:49 PM5/21/12
to cas-...@lists.jasig.org
So it would appear that no matter what I do, my entityManagerFactory is null. Tracing through the code and even trying to wire it in rather than have it injected using the PostProcessor, it is still null.



It is literally the configuration right off the wiki page with the datasource changed:

 <!-- Ticket Registry -->

  <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.JpaTicketRegistry"  p:entityManagerFactory-ref="entityManagerFactory"/>

  

  <!--

    Injects EntityManager/Factory instances into beans with

    @PersistenceUnit and @PersistenceContext

  

  <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

   -->


  <!-- Use the following for versions prior to 3.4.11 -->

  <!--

  <bean id="ticketRegistry"

    class="org.jasig.cas.ticket.registry.JpaTicketRegistry">

    <constructor-arg index="0" ref="entityManagerFactory" />

  </bean>

  -->


  <bean id="entityManagerFactory"

    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

    <property name="dataSource" ref="libs.dataSource.cas"/>

    <property name="jpaVendorAdapter">

      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">

        <property name="generateDdl" value="true"/>

        <property name="showSql" value="true" />

      </bean>

    </property>

    <property name="jpaProperties">

      <props>

        <!-- Use MySQLDialect at your own risk.  See MySQL section below for details. -->

        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>

        <prop key="hibernate.hbm2ddl.auto">update</prop>

      </props>

    </property>

  </bean>


  <bean id="transactionManager"

    class="org.springframework.orm.jpa.JpaTransactionManager"

    p:entityManagerFactory-ref="entityManagerFactory" />


  <tx:annotation-driven transaction-manager="transactionManager" />

  

  <jee:jndi-lookup id="libs.dataSource.cas" jndi-name="jdbc/cas" resource-ref="true"/>


  <!-- <bean id="dataSource"

    class="org.apache.commons.dbcp.BasicDataSource"

    p:driverClassName="com.mysql.jdbc.Driver"

    p:url="jdbc:mysql://localhost:3306/test?autoReconnect=true"

    p:password="notthepassword"

    p:username="mysql_user" /> -->


  <!-- TICKET REGISTRY CLEANER -->

  <bean id="ticketRegistryCleaner"

    class="org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner"

    p:ticketRegistry-ref="ticketRegistry"

    p:lock-ref="cleanerLock" />


  <!--

   Use JpaLockingStrategy for 3.4.11 and later.

   This bean is only needed for HA setups where multiple nodes are attempting

   cleanup on a shared database, but it doesn't substantially impact performance

   and is easy to setup and is therefore recommended for all JpaTicketRegistry deployments.

   This component automatically creates the LOCKS table so no further configuration

   is required.

  -->

  <bean id="cleanerLock"

    class="org.jasig.cas.ticket.registry.support.JpaLockingStrategy"

    p:uniqueId="${host.name}"

    p:applicationId="cas-ticket-registry-cleaner" />


  <!--

    Use JdbcLockingStrategy on 3.4.10 and before for HA setups where multiple nodes are attempting

    cleanup on a shared database.  This bean requires additional configuration:

     1. Creation of LOCKS table (see below)

     2. Setting ticket.cleaner.database.platform property

    Note that the ticket.cleaner.database.platform property should be set in cas.properties

    or some other properties file that is loaded by a PropertyPlaceholderConfigurer bean in

    the Spring context.

    Allowed values for ticket.cleaner.database.platform:

      * SqlServer for Microsoft SQL Server

      * HSQL for HSQLDB

      * SQL92 for any platform that supports the SQL-92 FOR UPDATE clause. (e.g. PostgreSQL, Oracle)

  -->

  <!--

  <bean id="cleanerLock"

    class="org.jasig.cas.ticket.registry.support.JdbcLockingStrategy"

    p:uniqueId="${host.name}"

    p:platform="${ticket.cleaner.database.platform}"

    p:applicationId="cas-ticket-registry-cleaner"

    p:dataSource-ref="dataSource" />

  -->


  <bean id="ticketRegistryCleanerJobDetail"

    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"

    p:targetObject-ref="ticketRegistryCleaner"

    p:targetMethod="clean" />


  <bean id="periodicTicketRegistryCleanerTrigger"

    class="org.springframework.scheduling.quartz.SimpleTriggerBean"

    p:jobDetail-ref="ticketRegistryCleanerJobDetail"

    p:startDelay="20000"

    p:repeatInterval="1800000" />

</beans>

Marvin S. Addison

unread,
May 22, 2012, 9:32:30 AM5/22/12
to cas-...@lists.jasig.org
> So it would appear that no matter what I do, my entityManagerFactory is
> null. Tracing through the code and even trying to wire it in rather than
> have it injected using the PostProcessor, it is still null.

Very odd. Did you have this configuration or a similar one working with
a previous CAS version? That is to say, is this this an upgrade or a
new install?

I see you're referencing a JNDI data source, presumably defined in the
container. I wonder if that's causing problems. Can you try a data
source defined in Spring context and see whether that produces a
different result?

M

--

ppostma1

unread,
Jan 28, 2013, 3:10:42 PM1/28/13
to jasig-c...@googlegroups.com, cas-...@lists.jasig.org, marvin....@gmail.com
sorry to shoot in a reply without planning to stick around but your problem looks familiar. If you followed the end-to-end example on Jasigs website, or a few how-to's, they are pretty old. JPA was changed a bit in the 4.11-4.12 and requires this line in some places to activate the proper persistence with Hibernate:

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

*https://wiki.jasig.org/display/CASUM/JpaTicketRegistry

Reply all
Reply to author
Forward
0 new messages