2016-10-25 48 views
0

我正在編寫一個在WebSphere Liberty Profile 8.5.5中運行的JEE7應用程序。我們正在使用JPA(通過WLP中的Eclipselink實現)。如何獲得多個持久性單元的EntityManager(s)

我在同一個'persistence.xml'文件中有多個持久單元。我還需要訪問同一班級中的兩個單元。

我得到一個運行時錯誤,當我嘗試使用第二的EntityManager:

@PersistenceContext(unitName = "wwer-list") 
private EntityManager entityManagerWwerList; 
@PersistenceContext(unitName = "main-dashboard") 
private EntityManager entityManagerMainDashboard; 

E WTRN0062E: An illegal attempt to use multiple resources that have only one-phase capability has occurred within a global transaction. 

如何擺脫這種錯誤的?

此外,我使用的所有表格僅用於閱讀。那麼如何指定我只需要只讀JPA訪問?

+0

我從錯誤消息中獲得了此信息。 http://www-01.ibm.com/support/docview.wss?uid=swg21247192。我的理解是,你需要分佈式事務處理跨兩個持久單元。你可能不得不使用像Bitronix事務管理器這樣的東西來實現 – kjsebastian

+0

你的persistence.xml是什麼樣的? –

+0

\t jdbc/wwer-list com.ibm.youribm.services.expensesaggregator.ejb.dao .jpa.entity。WwerEntity <持久性單元名稱= 「主儀表板」> \t \t JDBC /主儀表板 \t \t com.ibm.youribm.services.expensesaggregator.ejb.dao.jpa.entity.DashboardEntity ... – Westy

回答

0

由於使用ConnectionPoolDataSource和其他配置爲(單階段提交)的其中一個數據源使用XADataSource進行配置,因此會提示此問題。

如果您想繼續使用相同的數據源配置,則必須將服務器配置更新爲「Acccept Heuristic Hazard」。

在管理控制檯中,單擊EAR,選中複選框「Accept heuristic hazard」。重新啓動服務器。

此鏈接啓用最後參與者支持也可能有所幫助。 http://www.ibm.com/support/knowledgecenter/SSAW57_7.0.0/com.ibm.websphere.nd.doc/info/ae/webui_pme/ui/ueac_laoextensionsettings.html

+0

謝謝。但我沒有故意配置XADataSource,我沒有在任何地方設置。我只需要讀取數據源,就不會有更新。 – Westy

0

我無法確定沒有您的persistence.xml和server.xml配置,但看起來支持<persistence-unit>配置的<dataSource>元素不支持XA。

默認情況下,<dataSource>應該是一個javax.sql.XADataSource(因此XA能力),但是如果你使用的是JDBC驅動程序不提供的XADataSource實現,自由會選擇一個更簡單的DataSource實現(即javax.sql.ConnectionPoolDataSource或純javax.sql.DataSource) 。

每當您發出UserTransaction.begin()並持續到您發出commit()rollback()時,全局交易即爲。您還可以通過其他方式進入全局事務。

由於您想要只讀訪問權限,因此將您的DataSources轉換爲XA可能會矯枉過正。相反,嘗試從等式中消除全局交易。如果無法消除全局事務,則可以通過以下方式在server.xml中指定XADataSource:

<dataSource type="javax.sql.XADataSource" ...> 
    <jdbcDriver .../> 
    <properties .../> 
</dataSource> 
+0

我沒有使用全局事務,或者至少不是故意的。這純粹是隻讀服務。那麼我如何擺脫全球交易? XA確實聽起來像是過火了,而且在我看來,它也會減慢速度。 – Westy

相關問題