簡體   English   中英

OSGi包之間的OpenJPA持久性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM