[ 
https://issues.apache.org/jira/browse/JCR-769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480020
 ] 

Claus Köll commented on JCR-769:
--------------------------------

hi dominique,
yes you have understood me
i have read the JCR-335 and you are right.
but let see this szenario

you must open a "Admin"Session next to a normal "User"Session 
so you have 2 XASession in one Transaction and this wil not work now.
you are right the second session makes no updates but maybe it will.

i think we must look that we use the same TransactionContext as "shareable" 
like a shareable DataSource in EJBContainer.
so we can check it in the XAResources before we make a exclusive lock.

The same behaviour we have in EJBContainer with DataSources.
If you have a Transaction with 2 Entity Beans and a IsolationLevel like 
serializeable you must also look to get a reference from the the same 
DataSource (Connection)
to prevent a lock on db from the first ejb.

> Unable to login with two different Credentials to same workspace in one 
> Transaction
> -----------------------------------------------------------------------------------
>
>                 Key: JCR-769
>                 URL: https://issues.apache.org/jira/browse/JCR-769
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: jca
>    Affects Versions: 1.2.1
>         Environment: Websphere 5.1.1 J2C Adapter
>            Reporter: Claus Köll
>         Attachments: patch.txt, stacktrace.txt
>
>
> I'm using the Jackrabbit 1.2.1 JCA adapter and trying to access in a 
> SessionBean-Method with Container Transaction a Workspace with 2 different 
> Credentials. 
> The Method takes about 400ms to finish but no commit on TransactionContextr 
> occurs (Debugging ..) only the prepare was called 2 times .
> The Container hangs on the PostInvoke Method about 5 seconds and then i get a 
> "javax.transaction.xa.XAException" 
> with the Warn Message: Transaction rolled back because timeout expired
> The code ..
> Context ctx = new InitialContext(); 
> Repository repository = (Repository) ctx.lookup("java:comp/env/jackrabbit"); 
> Credentials credentials = new SimpleCredentials("user1", 
> "password1".toCharArray()); 
> Credentials credentials2 = new SimpleCredentials("user2", 
> "password2".toCharArray()); 
> Session session1 = repository.login(credentials, "default"); 
> Session session2 = repository.login(credentials2, "default"); 
> Session1 adds a node to the workspace .. and with the session2 i do nothing 
> except the login !
> If i make no second login the Method works fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to