[keycloak-user] Trying to use JTA transactions for JPA causes errors

Stian Thorgersen stian at redhat.com
Fri Mar 14 09:15:01 EDT 2014


We can use a JTA data-source with some additional configuration for Hibernate (without the ejb container). I've done this in the past and it works fine, but I don't see a use-case for it.

----- Original Message -----
> From: "Bill Burke" <bburke at redhat.com>
> To: keycloak-user at lists.jboss.org
> Sent: Friday, 14 March, 2014 1:11:22 PM
> Subject: Re: [keycloak-user] Trying to use JTA transactions for JPA causes errors
> 
> And, there is no container to manage the transactions anyways!  Nothing
> runs in an EJB container.  I thought you could use a JTA datasource
> without a container to manage them.  That the datasource would just be a
> regular datasource if there was no active transaction., guess I was wrong...
> 
> FYI, you don't need a TM anyways as there is only one "transactional"
> resource and we manage the sessions via a filter.
> 
> On 3/14/2014 4:53 AM, Stian Thorgersen wrote:
> > Keycloak has been designed to work in multiple environments, not just
> > JavaEE. That's why container managed transactions are not used. JTA
> > transactions are not required either as there's a single database, hence
> > no need for distributed transactions.
> >
> > Can you provide me with some more information about the errors you are
> > seeing? Including the server log, persistence.xml, etc. It should work
> > perfectly well with resource local transactions.
> >
> > If you have a real requirement for using JTA a data-source we can certainly
> > look into supporting that.
> >
> > ----- Original Message -----
> >> From: "Dean Peterson" <peterson.dean at gmail.com>
> >> To: keycloak-user at lists.jboss.org
> >> Sent: Thursday, 13 March, 2014 6:40:23 PM
> >> Subject: [keycloak-user] Trying to use JTA transactions for JPA causes
> >> errors
> >>
> >> I get transaction rollback errors frequently. Every time I leave the
> >> application idle for a few minutes and come back, the system has
> >> transaction
> >> errors. I have to refresh multiple times for the keycloak admun-ui to
> >> start
> >> responding again. I realized my settings were using local database
> >> transactions and that does not work well. I am using JBOSS and J2EE so I
> >> definitely want to use the container managed transactions. I switched the
> >> settings in my management console and changed my persistence.xml to this:
> >>
> >> <persistence xmlns=" http://java.sun.com/xml/ns/persistence "
> >> xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
> >> xsi:schemaLocation=" http://java.sun.com/xml/ns/persistence
> >> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd "
> >> version="1.0">
> >> <persistence-unit name="jpa-keycloak-identity-store"
> >> transaction-type="JTA">
> >> <jta-data-source>java:jboss/datasources/ui_users</jta-data-source>
> >> <class>org.keycloak.models.jpa.entities.ApplicationEntity</class>
> >> <class>org.keycloak.models.jpa.entities.CredentialEntity</class>
> >> <class>org.keycloak.models.jpa.entities.OAuthClientEntity</class>
> >> <class>org.keycloak.models.jpa.entities.RealmEntity</class>
> >> <class>org.keycloak.models.jpa.entities.RequiredCredentialEntity</class>
> >> <class>org.keycloak.models.jpa.entities.ApplicationRoleEntity</class>
> >> <class>org.keycloak.models.jpa.entities.RealmRoleEntity</class>
> >> <class>org.keycloak.models.jpa.entities.SocialLinkEntity</class>
> >> <class>org.keycloak.models.jpa.entities.UserEntity</class>
> >> <class>org.keycloak.models.jpa.entities.UserRoleMappingEntity</class>
> >> <class>org.keycloak.models.jpa.entities.ScopeMappingEntity</class>
> >>
> >> <exclude-unlisted-classes>true</exclude-unlisted-classes>
> >>
> >> <properties>
> >> <property name="hibernate.dialect"
> >> value="org.hibernate.dialect.SQLServer2008Dialect"/>
> >> <property name="hibernate.hbm2ddl.auto" value="update"/>
> >> </properties>
> >> </persistence-unit>
> >> </persistence>
> >>
> >>
> >>
> >>
> >>
> >> Now when I start the server I get the following error:
> >>
> >> java.lang.NullPointerException
> >> at
> >> org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:76)
> >> at
> >> .
> >> .
> >> .
> >> org.keycloak.models.jpa.JpaKeycloakSessionFactory.createSession(JpaKeycloakSessionFactory.java:21)
> >> at
> >> .
> >> .
> >> .
> >> jboss.undertow.deployment.default-server.default-host./auth: Failed to
> >> start
> >> service
> >> Caused by: java.lang.RuntimeException: Failed to construct public
> >> org.keycloak.server.KeycloakServerApplication(javax.servlet.ServletContext)
> >> throws java.io.FileNotFoundException
> >>
> >> Any ideas why this is happening?
> >>
> >> Thanks,
> >>
> >> Dean Peterson
> >>
> >> _______________________________________________
> >> keycloak-user mailing list
> >> keycloak-user at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/keycloak-user
> > _______________________________________________
> > keycloak-user mailing list
> > keycloak-user at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/keycloak-user
> >
> 
> --
> Bill Burke
> JBoss, a division of Red Hat
> http://bill.burkecentral.com
> _______________________________________________
> keycloak-user mailing list
> keycloak-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-user
> 


More information about the keycloak-user mailing list