Apparently my mail client decided to screw me over ;-) here is the complete msg.


I've used a corner of the se-jcr (spring-extensions jcr) library v0.9 to get this going in our application (a horribly old/not maintained library).

Our transactions are driven by the use of @Transactional to allow us to have tests running with transactions.

I ended up not using the OSV pattern for JCR, it gave me more trouble than benefits. Instead I ended up using:

SessionFactoryUtils.getSession() and SessionFactoryUtils.releaseSession() from the spring module, this ensures that the JCR session is registered with the spring transaction synchronization stuff and did not impact my pre-transactional code much.


On 05-09-2013 19:51, andreas wrote:


It seems like the Jackrabbit session commits independently of the other code. I have no idea why.


Fra: Chris Poulsen [via Jackrabbit] [mailto:[hidden email]]
Sendt: 5. september 2013 09:49
Til: andreas
Emne: Re: Jackrabbit JCA and JTA



I don't know about file storing vs. transactions, but I would expect it
to work like any other transactional change to the repository.

Getting the JTA setup correctly can be somewhat of a tricky task - Are
you sure that you are in a transaction in your method (and that you are
in the correct transaction)?

Have you tried adding a simple node in the transaction method to see if
a simple node is rolled back? Also you can usually ask spring and the
JTA provider to produce really detailed logs to help you figure out what
is going on.


On 04-09-2013 18:09, andreas wrote:

> Hi
> I am developing an application that uses both Jackrabbit and a database. In
> Jackrabbit I store the files that I upload, and the database I store all the
> other data in the app. I am using Spring 3.2, Hibernate 4.x and Jackrabbit
> 2.6.2. I have downloaded the Jackrabbit JCA version and deployed it to JBoss
> 7.1.1. I have configured it correctly I think. I can upload file to it and
> it is saved. I also debugged my application and I saw that the session
> object that invoke save() and logout() on is of type XaSession. I am using
> the datastore.
> The way I tested my code is like this: I have one method in the service
> layer of my app annotated with @Transactional. Inside the method I first add
> a file to the content repository, then I force a RunTimeException to be
> thrown (and the code that should run instead of the exception would be to
> save my object to the database through Hibernate). I cleared the datastore
> (no files inside it) but when the exception is thrown the file that I added
> isn't removed from the datastore.
> So, is this correct? Does files in datastore stay in the datastore - not
> rolled back? Or should it be removed. I am using the
> <tx:jta-transaction-manager /> annotation in Spring config.
> Could someone shed some light over this because I don't understand if I got
> it working, or if I need to do something else to get it working? And where
> does the metadata of the file that I add get stored? I have configured a own
> database for the persistence manager but I don't see anything useful in the
> database tables? There are only a lot of what seems to be binary things
> there? Is there a way to verify if a file is inserted or not in the database
> even though the actual file is stored on disk (datastore)?
> Thank you
> - Andreas
> --
> View this message in context: click here.

View this message in context: SV: Jackrabbit JCA and JTA
Sent from the Jackrabbit - Dev mailing list archive at