我在熔絲ESB中爲JPA的RESOURCE_LOCAL
交易類型遇到問題。OpenJPA - 交易管理不可用...(Fuse ESB)
我也沒有完全瞭解JTA
或RESOURCE_LOCAL
對我更好。
我的persistence.xml:
<persistence-unit name="invoicePersistence" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/invDataSource)</jta-data-source>
<non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/invDataSource)</non-jta-data-source>
<class>com.company.service.Invoice</class>
<!-- etc... -->
</persistence-unit>
我的豆blueprint.xml:
<reference id="invDataSource" interface="javax.sql.DataSource" filter="(datasource.name=invDataSource)"/>
<bean id="invoiceDao" class="com.company.project.InvoiceDao">
<jpa:context unitname="invoicePersistence" property="entityManager"/>
<tx:transaction method="*" value="Required" />
</bean>
而且我的代碼:
entityManager.getTransaction().begin();
entityManager.persist(a);
entityManager.persist(b);
entityManager.getTransaction().commit();
和異常,使用事務型RESOURCE_LOCAL
在我的persistence.xml中:
java.lang.IllegalStateException: Transaction management is not available for container managed EntityManagers.
我也嘗試在我的persistence.xml中使用事務類型JTA
,但後來我收到OptimisticLockException
。
我不確定哪種方法更好(RESOURCE_LOCAL或JTA),但主要是我的代碼對象a
和b
需要在事務中保存(全部或全部)。
我在Fuse ESB(駱駝,cxf等)中運行。
感謝您的任何提示或幫助。