Search code examples
javajpa-2.0eclipselinkjta

can you create your own JTA transaction?


I am loading a large set of data into a database from a webservice. I am using eclipslink for persistence and running the application on glassfish 3.0. I run into problems on my test data set in that there are a few foreign key constraint violations. I am fine with the violation, I do not want that data if it is not complete. My problem however comes in that the exception is thrown in the container. That then marks my transaction for a rollback, and I get no data at all then.

I would like to continue using JTA but am not sure if I can do what I want to achieve, and that is create my own JTA transaction so I can control when it commits,etc. I am not sure if that is a good idea though as I feel by doing so I may be destroying some of the benefits of using JTA.

So is it possible to get a JTA transaction?


Solution

  • Do the database work in a method of a session bean. Annotate that method with:

    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    

    It will be given its own transaction. The outer transaction will be suspended while it does its stuff.