The patch Misagh introduced in 4.1.3 caused a different issue once the
backing database connection timed out. I have tracked down what the missing
transactional config was for 4.1.x and added it to the documentation.
The JpaTicketRegistry transactional config for 4.1.x should include all of
the following pointcuts/advice:
<tx:advice id="txCentralAuthenticationServiceAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="destroyTicketGrantingTicket" read-only="false"
/>
<tx:method name="grantServiceTicket" read-only="false" />
<tx:method name="delegateTicketGrantingTicket"
read-only="false" />
<tx:method name="validateServiceTicket" read-only="false" />
<tx:method name="createTicketGrantingTicket" read-only="false"
/>
<tx:method name="getTicket" read-only="true" />
<tx:method name="getTickets" read-only="true" />
</tx:attributes>
</tx:advice>
<tx:advice id="txRegistryAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="deleteTicket" read-only="false" />
<tx:method name="addTicket" read-only="false" />
<tx:method name="updateTicket" read-only="false" />
<tx:method name="getTicket" read-only="true" />
<tx:method name="getTickets" read-only="true" />
<tx:method name="sessionCount" read-only="true" />
<tx:method name="serviceTicketCount" read-only="true" />
</tx:attributes>
</tx:advice>
<tx:advice id="txRegistryServiceTicketDelegatorAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="grantTicketGrantingTicket" read-only="false" />
</tx:attributes>
</tx:advice>
<tx:advice id="txRegistryTicketGrantingTicketDelegatorAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="markTicketExpired" read-only="false" />
<tx:method name="grantServiceTicket" read-only="false" />
</tx:attributes>
</tx:advice>
<tx:advice id="txRegistryLockingAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="getOwner" read-only="true" />
<tx:method name="acquire" read-only="false" />
<tx:method name="release" read-only="false" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="ticketRegistryOperations" expression="execution(*
org.jasig.cas.ticket.registry.JpaTicketRegistry.*(..))"/>
<aop:pointcut id="ticketRegistryLockingOperations"
expression="execution(*
org.jasig.cas.ticket.registry.support.JpaLockingStrategy.*(..))"/>
<aop:pointcut id="ticketRegistryServiceTicketDelegatorOperations"
expression="execution(*
org.jasig.cas.ticket.registry.AbstractDistributedTicketRegistry$ServiceTicketDelegator.*(..))"/>
<aop:pointcut
id="ticketRegistryTicketGrantingTicketDelegatorOperations"
expression="execution(*
org.jasig.cas.ticket.registry.AbstractDistributedTicketRegistry$TicketGrantingTicketDelegator.*(..))"/>
<aop:pointcut id="casOperations" expression="execution(*
org.jasig.cas.CentralAuthenticationServiceImpl.*(..))"/>
<aop:advisor advice-ref="txRegistryAdvice"
pointcut-ref="ticketRegistryOperations"/>
<aop:advisor advice-ref="txRegistryLockingAdvice"
pointcut-ref="ticketRegistryLockingOperations"/>
<aop:advisor
advice-ref="txRegistryTicketGrantingTicketDelegatorAdvice"
pointcut-ref="ticketRegistryTicketGrantingTicketDelegatorOperations"/>
<aop:advisor advice-ref="txRegistryServiceTicketDelegatorAdvice"
pointcut-ref="ticketRegistryServiceTicketDelegatorOperations"/>
<aop:advisor advice-ref="txCentralAuthenticationServiceAdvice"
pointcut-ref="casOperations"/>
</aop:config>
This is only the configuration for the JpaTicketRegistry and does *NOT*
include pointcuts/advice for the JpaServiceRegistryDaoImpl.
Relevant github issue/PRs:
https://github.com/Jasig/cas/issues/1378
https://github.com/Jasig/cas/pull/1386
I have tested out the updated config on the sample webapp Jean provided
here: https://github.com/jlorieux/cas-jpaTicket and verified it works just
putting the updated config in place.
-Daniel
On Wednesday, December 9, 2015 at 4:33:40 AM UTC-5, Jean Lorieux wrote:
>
> Thank you very much. I tried your patch and it is working fine on my side.
>
> On Monday, December 7, 2015 at 7:29:46 PM UTC+1, Misagh Moayyed wrote:
>>
>> This turned out to be a bug with the entity manager prematurely closing.
>> This will be fixed in 4.1.3; You can try to test this with 4.1.3 SNAPSHOT
>> for the time being until it’s released in a couple of weeks.
>>
>>
>>
>> *From:* [email protected] [mailto:[email protected]] *On Behalf Of *Jean
>> L.
>> *Sent:* Sunday, December 6, 2015 3:18 PM
>> *To:* jasig-cas-user <[email protected]>
>> *Cc:* [email protected]
>> *Subject:* Re: [cas-user] 4.1.2: JpaTicketRegistry: No transactional
>> EntityManager available
>>
>>
>>
>> Hi,
>>
>>
>>
>> I have the same "No transactional EntityManager available" issue on my
>> side, with a simple JPA Ticket registry (and JSON Service registry).
>>
>> I have also added a minimal GH project to help reproducing the issue:
>>
>> https://github.com/jlorieux/cas-jpaTicket
>>
>>
>>
>> In my case, the TGT ticket is successfully created in the database, but
>> not the ST ticket ("No transactional EntityManager available" occurs
>> before).
>>
>> I'm using a MySQL 5.5/Tomcat 8 backend.
>>
>>
>>
>> Regards,
>>
>>
>>
>> Jean L.
>>
>>
>>
>>
>> On Sunday, December 6, 2015 at 1:49:17 PM UTC+1, Robert Oschwald wrote:
>>
>> Misagh,
>>
>> I added a sample overlay project on GH with JPA Ticket+Service registry
>> config (using a shared TransactionManager in this case).
>> I receive the same error as in my project:
>> org.hibernate.hql.internal.ast.QuerySyntaxException:
>> AbstractRegisteredService is not mapped
>>
>> Here it is:
>>
>> https://github.com/robertoschwald/jasig-cas-examples-robertoschwald/tree/4.1.2_jpa
>>
>>
>> Note: The Master branch holds a default overlay config using in-memory
>> (which works and was the base for the JPA config example in 4.1.2_jpa).
>>
>> Config was done as described in
>> http://jasig.github.io/cas/4.1.x/installation/JPA-Ticket-Registry.html
>> and
>>
>> http://jasig.github.io/cas/4.1.x/installation/Service-Management.html#registered-services
>>
>>
>> See comment at line 153 in deployerConfigContext of cas-server-overlay.
>>
>> Please have a look. Thanks!
>>
>> Robert
>>
>>
>>
>> > Am 02.12.2015 um 19:12 schrieb Misagh Moayyed <[email protected]>:
>> >
>> > I ran a quick test, with both JPA service registry and JPA ticket
>> registry defined in an overlay using the same transaction manager. No
>> issues.
>> >
>> > Post your overlay somewhere on github or pastebin and we might be able
>> to spot something. Otherwise so far, it’s more likely a config issue on
>> your end.
>> >
>> > - Misagh
>> >
>> >> On Dec 1, 2015, at 10:15 PM, Tai Hu <[email protected]> wrote:
>> >>
>> >> Do you find the solution for this "No transactional EntityManager
>> available" issue? I just ran into the exact same problem. For both
>> PostgreSQL and MySQL, merge method is never under a transaction. Thanks.
>> >>
>> >> On Monday, November 30, 2015 at 7:48:05 AM UTC-5, robertoschwald
>> wrote:
>> >> Hi all,
>> >>
>> >> while configuring CAS 4.1.2 with JpaTicketRegistry, I cannot get it to
>> work.
>> >> I always receive the following Exception:
>> >> Exception thrown executing
>> org.jasig.cas.web.flow.GenerateServiceTicketAction@6e6a43a4 in state
>> 'generateServiceTicket' of flow 'login'
>> >> javax.persistence.TransactionRequiredException: No transactional
>> EntityManager available
>> >> at
>> org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:275)
>>
>>
>> >> at com.sun.proxy.$Proxy49.merge(Unknown Source)
>> >> at
>> org.jasig.cas.ticket.registry.JpaTicketRegistry.updateTicket(JpaTicketRegistry.java:57)
>>
>>
>> >>
>> >>
>> >> I used the described config in
>> http://jasig.github.io/cas/4.1.x/installation/JPA-Ticket-Registry.html
>> and also added some pointcuts described in
>> >>
>> >> http://stackoverflow.com/a/33663812
>> >>
>> >> But it still fails.
>> >>
>> >> My JPA config is in spring-configuration/ticketRegistry.xml.
>> >>
>> >> Anything else I’m missing?
>> >>
>> >>
>> >> Robert
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> Groups "CAS Community" group.
>> >> To unsubscribe from this group and stop receiving emails from it, send
>> an email to [email protected].
>> >> Visit this group at
>> http://groups.google.com/a/apereo.org/group/cas-user/.
>> >
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups "CAS Community" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an email to [email protected].
>> > Visit this group at
>> http://groups.google.com/a/apereo.org/group/cas-user/.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "CAS Community" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> Visit this group at http://groups.google.com/a/apereo.org/group/cas-user/.
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "CAS Community" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> Visit this group at http://groups.google.com/a/apereo.org/group/cas-user/
>> .
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "CAS Community" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> Visit this group at http://groups.google.com/a/apereo.org/group/cas-user/
>> .
>>
>
--
You received this message because you are subscribed to the Google Groups "CAS
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/.