我在Apache Karaf容器上部署了兩個OSGi
包。可以說它們是A和B.A bundle是包含所有數據庫實體和持久性邏輯的主包。 B OSGi
軟件包是一種應用程序,它使用A中的方法將一些數據存儲到數據庫中。捆綁B也有CXF
網絡服務端點。持久性由OpenJPA
處理。OSJi包之間的OpenJPA持久性
捆綁包中的方法包裝實體管理器的持久化方法。在bundle B中,有一種方法將一個對象作爲bundle A中定義的參數,並具有持久化數據的方法。當我在捆綁包B中調用該方法時,一切正常,數據按預期持久保存到數據庫中。
的問題是,我想更新B中捆綁的CXF
端點實現類的實體,其公開爲一個Spring bean和具有OSGi
參考從包一個對象包含find
語句來找到我需要的實體更新。
當我調用find
方法時,實體返回給我,但是當我設置一些新值時,事務不會被提交,並且數據不會出現在數據庫中。
因爲我知道OpenJPA
的功能之一是,當你調用持久化到一個對象,然後你可以設置一些新的數據,並且需要的事務來更新該實體。它似乎沒有在我的情況下工作。我試圖用org.springframework.transaction.annotation.Transactional
註釋來註釋CXF
端點實現類。但是,這不起作用。
也許有人知道哪裏可能會出現問題?我是否需要在CXF
端點寫更新我的實體的查詢?
這個問題很難遵循。也許你可以提供一些示例代碼或圖來說明? – 2012-09-09 17:41:40