2013-06-12 45 views
0

我試圖讓我的第一個Java企業應用程序和使用UserTransaction小號IllegalStateException異常。 因此,我使用帶有java:comp/UserTransaction的JNDI查找來獲取我的UserTransaction對象。同時使用的UserTransaction(Java EE的)

public void myMethod(MyEntity e) throws ApplicationException { 
    try { 
     this.ut = getUserTransaction(); 
     this.ut.begin(); 
     this.myStatefulBean.myBusinessMethod(e); 
    } catch ... 

當我開始我的交易與.begin()和嘗試(之前其正常工作開始一個UserTransaction)來調用我的狀態bean的任何方法,我得到一個EJBTransactionRolledbackException,導致我出現以下錯誤:

java.lang.IllegalStateException: cannot add non-XA Resource to global JTS transaction 

我正在使用的Bean註釋爲@DataSourceDefinitionclassName = "org.apache.derby.jdbc.ClientXADataSource"因此沒有非XA資源。 我在做什麼錯?

我使用openjpa 2.2.1,Java EE版本6

回答

0

自己解決了這個問題。我在DataSourceDefinition name = "java:global/jdbc/testDB"作爲名稱使用,但在我的persistence.xml數據源名稱定義爲<jta-data-source>testDB</jta-data-source>

這似乎在CMT的,但不是在一個UserTransaction工作。將persistence.xml中的條目更正爲<jta-data-source>java:global/jdbc/testDB</jta-data-source>解決了該問題。