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
Post a Comment