[英]OpenJPA persistence between OSGi bundles
我在Apache Karaf容器上部署了兩個OSGi
捆綁軟件。 可以說它們是A和B。A包是包含所有數據庫實體和持久性邏輯的主要包。 B OSGi
軟件包是一個應用程序,它使用A中的方法將一些數據存儲到數據庫中。 捆綁軟件B也具有CXF
Web服務端點。 持久性由OpenJPA
處理。
捆綁軟件A中的方法包裝了實體管理器的persist方法。 在捆綁軟件B中,有一種方法將對象作為參數,該對象在捆綁軟件A中定義,並且具有持久化數據的方法。 當我在捆綁軟件B中調用該方法時,一切正常,數據將按預期方式保存到數據庫中。
問題是我想更新B捆綁軟件的CXF
終結點實現類中的一個實體,該類作為Spring bean公開,並且OSGi
引用了捆綁軟件A中的對象,該對象包含find
語句以查找我需要更新的實體。
當我調用find
方法時,該實體會正確返回給我,但是當我設置一些新值時,事務不會被提交,數據也不會出現在數據庫中。
據我所知, OpenJPA
功能之一是,當您對某個對象調用持久化時,隨后您可以為其設置一些新數據,並進行必要的事務以更新該實體。 在我看來,它似乎不起作用。 我嘗試使用org.springframework.transaction.annotation.Transactional
注釋對CXF
端點實現類進行注釋。 但這不是很好。
也許有人知道問題出在哪里? 我是否需要編寫查詢來更新CXF
端點中的實體?
在這種情況下,我建議從春季切換到藍圖。 如果查看一下Karaf使用的白羊星座藍圖(例如),則可以從捆綁軟件A中檢索DAO,例如從捆綁軟件B中調用“更改方法”,並將其附加到捆綁軟件中的Transaction Manager中一種。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.