I had this working, including sharing Jpa/Mongo connection providers. Which I sent out an
email to get feedback for......
----- Original Message -----
From: "Bill Burke" <bburke(a)redhat.com>
To: keycloak-dev(a)lists.jboss.org
Sent: Saturday, 12 July, 2014 12:42:07 AM
Subject: Re: [keycloak-dev] JPA connections provider and multiple transaction support
Ok, I committed something.
* KeycloakSession keeps track of enlisted provider KeycloakTransactions.
* KeycloakSession.getTransaction().commit() and rollback() will iterate
these enlisted transactions
* getProvider() just returns a provider
* model() and sessions() creates a ModelProvider or UserSessionProvider
and enlists their transactions.
* model() and sessions() throw IllegalStateException if
KeycloakSession.transaction hasn't started yet.
* KeycloakSession has an enlist() method.
On 7/11/2014 6:11 PM, Bill Burke wrote:
> Actually I think there is a better way.
>
> public interface TransactionManaged {
>
> KeycloakTransaction getTransaction();
> }
>
> public interface KeycloakSession implements TransactionManaged {}
> public interface UserProvider implements TransactionManaged{}
>
> etc.
>
>
> KeycloakSession.getProvider() will check to see if the provider is
> transaction managed. If KeycloakSession has an active transaction, then
> a transaction will be created for that provider and registered with an
> internal TM.
>
>
>
>
> On 7/11/2014 3:52 PM, Bill Burke wrote:
>> Please get this in. I can't finish with UserProvider split until you do.
>>
>> On 7/11/2014 8:29 AM, Stian Thorgersen wrote:
>>> 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/...
>>>
https://github.com/stianst/keycloak/blob/master/connections/jpa/src/main/...
>>>
>>> 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/o...
>>>
https://github.com/stianst/keycloak/blob/master/model/api/src/main/java/o...
>>>
>>> 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.
>>> _______________________________________________
>>> keycloak-dev mailing list
>>> keycloak-dev(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/keycloak-dev
>>>
>>
>
--
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com
_______________________________________________
keycloak-dev mailing list
keycloak-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/keycloak-dev