« Return to Thread: committing / rollback question + entitymanager

Re: committing / rollback question + entitymanager

by Leon Derks-2 :: Rate this Message:

Reply to Author | View in Thread

Hello

I use a datasource.

Here are pieces of my persistence.xml:

<persistence-unit name="application-web" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<non-jta-data-source>java:comp/env/jdbc/myDS</non-jta-data-source>
<property name="eclipselink.target-database"
value="org.eclipse.persistence.platform.database.oracle.Oracle10Platform" />

Here is my datasource definition in the tomcat context.xml
<Resource name="jdbc/myDS" auth="Container"
        type="oracle.jdbc.pool.OracleDataSource"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        factory="oracle.jdbc.pool.OracleDataSourceFactory"
        url="jdbc:oracle:thin:@//localhost:1521/XE" user="test"
password="test"
        connectionCachingEnabled="true" connectionCacheName="AppCache"
        connectionCacheProperties="{MaxStatementsLimit=40, MinLimit=0,
InitialLimit=0,
            ValidateConnection=true, ConnectionWaitTimeout=10,
MaxLimit=20}" />

web.xml:
 <resource-ref>
        <description>Resource reference to the application
Datasource</description>
        <res-ref-name>jdbc/myDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

Is there something wrong with this configuration?

Leon

James Sutherland wrote:

> My guess would be that you have configured EclipseLink with a JTA DataSource,
> but the DataSource that you are using is not JTA.
>
> Otherwise something very odd is occurring.   Perhaps include your
> persistence.xml, and enable logging on finest to see when your transaction
> is begun/committed, it seems your connection is somehow being left in
> auto-commit mode, or perhaps your database does not support transactions.
>
>
>
> Leon Derks-2 wrote:
>  
>> Hello
>>
>> I have a problem with the rollback of my transaction. For some reason
>> the entities are saved in the db while the transaction has not committed.
>>
>> These are the steps:
>>
>> try{
>>     logger.debug(" Starting a transaction");
>>     entityManager.getTransaction().begin();
>>             //here do some entityManager.persist(entities);
>>            //then throw a runtime exception to fake an exception.
>>      logger.debug("Committing the transaction");
>>      entityManager.getTransaction().commit();
>> catch(Exception e) {
>>     logger.error(e);
>> }
>> finally {
>>      if (entityManager != null &&
>> entityManager.getTransaction().isActive()) {
>>                 logger.debug("Rolling back the transaction");
>>                 entityManager.getTransaction().rollback();
>> }
>>
>> This is my logging info:
>> Starting a transaction
>>         exception stacktrace...........
>> Rolling back the transaction
>>
>> As you can see the transaction is not committed but rolled back. However
>> there are entities in my db.
>>
>> How is this possible?
>> Leon
>>
>>    
>
>
> -----
> ---
> http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
> http://www.eclipse.org/eclipselink/
>  EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
> TopLink
> Wiki:  http://wiki.eclipse.org/EclipseLink EclipseLink ,
> http://wiki.oracle.com/page/TopLink TopLink
> Forums:  http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
> http://www.nabble.com/EclipseLink-f26430.html EclipseLink
> Book:  http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
>  

_______________________________________________
eclipselink-users mailing list
eclipselink-users@...
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

 « Return to Thread: committing / rollback question + entitymanager