java - Weblogic Error: Caused by: weblogic.transaction.internal.AppSetRollbackOnlyException: setRollbackOnly called on transaction -


i porting application jboss 7as weblogic 12c.

so far, able run application , create new records in database.

however, below error when trying update existing records;

error committing transaction: javax.ejb.transactionrolledbacklocalexception: error committing transaction:  @ weblogic.ejb.container.internal.ejbruntimeutils.throwtransactionrolledbacklocal(ejbruntimeutils.java:231)     @ weblogic.ejb.container.internal.ejbruntimeutils.throwejbexception(ejbruntimeutils.java:134)     @ weblogic.ejb.container.internal.baselocalobject.postinvoke1(baselocalobject.java:362)     @ weblogic.ejb.container.internal.baselocalobject.__wl_postinvoketxretry(baselocalobject.java:205)     @ weblogic.ejb.container.internal.sessionlocalmethodinvoker.invoke(sessionlocalmethodinvoker.java:46)     ... caused by: weblogic.transaction.internal.appsetrollbackonlyexception: setrollbackonly called on transaction 

the error happens when call javax.persistence.entitymanager.merge(object) inside stateless ejb transactions container managed.

my initial thoughts container calling javax.transaction.usertransaction.setrollbackonly() somewhere, changed ejb's transaction management bmt , managed transaction myself. same error occurred.

i suspect datasource or persistence.xml have problem.

below persistence.xml's properties

<persistence version="2.0"          xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"          xsi:schemalocation="     http://java.sun.com/xml/ns/persistence     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">     <persistence-unit name="myunitname" transaction-type="jta">     <provider>org.hibernate.ejb.hibernatepersistence</provider>     <jta-data-source>myds</jta-data-source>   <properties>  <property name="hibernate.hbm2ddl.auto" value="update" />  <property name="hibernate.show_sql" value="false" />  <property name="hibernate.format_sql" value="false" />  <property name="hibernate.dialect" value="org.hibernate.dialect.oracle10gdialect" />  <property name="hibernate.max_fetch_depth" value="1"/>  <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.weblogicjtaplatform"/>  </properties> 

please assist.

this default behaviour of weblogic jta realization. obtain root exception should set system property weblogic.transaction.allowoverridesetrollbackreason true.

one of solution add line <domain_home>/bin/setdomainenv.cmd:

set java_options=%java_options% -dweblogic.transaction.allowoverridesetrollbackreason=true

or linux equivalent <domain_home>/bin/setdomainenv.sh


Comments