[keycloak-dev] JPA connections provider and multiple transaction support

Stian Thorgersen stian at redhat.com
Fri Jul 11 08:29:49 EDT 2014


To prevent creating multiple EntityManager's for a single request I've added a JPAConnectionProvider that is used to share an EntityManager instance between multiple providers.

  https://github.com/stianst/keycloak/blob/master/connections/jpa/src/main/java/org/keycloak/connections/jpa/DefaultJpaConnectionProviderFactory.java
  https://github.com/stianst/keycloak/blob/master/connections/jpa/src/main/java/org/keycloak/connections/jpa/DefaultJpaConnectionProvider.java

In the future we could consider adding support for multiple persistence-units, but for now I think we should have a limitation that all JPA providers use the same database/persistence-unit.

I've also added some very basic support to KeycloakSession so providers can enlist their transactions with the session:

  https://github.com/stianst/keycloak/blob/master/model/api/src/main/java/org/keycloak/models/KeycloakSession.java
  https://github.com/stianst/keycloak/blob/master/model/api/src/main/java/org/keycloak/models/KeycloakTransactionManager.java

The idea being that a provider when used can enlist its transaction with the session.

I've not committed any of this to master as I wanted to have everyone's opinion on it first.


More information about the keycloak-dev mailing list