2013-11-28 22 views
1

我正在爲學習目的編寫一個小型的OSGi應用程序。 我成功地設置了Gemini JPA和DBAccess服務來使用JPA,並且它工作正常,只要我使用persistence.xml來配置持久性單元即可。OSGi和雙子座JPA:使用配置管理員

然後我偶然發現了This Example.這似乎是一個非常棒的功能,可以在運行時提供持久性單元配置。除非它不起作用。我嘗試了精確的代碼(對於獨立配置),並且它被執行,但框架中沒有任何更改。據我瞭解,不應該有新的服務提供新的持久性單位嗎?

我正在使用Equinox框架,安裝並運行gemini和dbaccess的所有必需軟件包,並且ConfigurationAdmin軟件包(org.eclipse.equinox.cm)已安裝並在我的代碼執行時運行。

我訪問配置管理是這樣的:

ServiceReference<ConfigurationAdmin> s = context 
      .getServiceReference(ConfigurationAdmin.class); 
ConfigurationAdmin admin = context.getService(s); 

回答

0

也許一個啓動順序問題:必須建立配置數據源查找的持久性。嘗試重新啓動持久性捆綁軟件或將持久性捆綁軟件的開始級別更改爲更高級別,以便稍後啓動。

此外,安裝Felix web console以查看配置數據是否確實註冊到配置管理器可能會很方便。

+0

兩者都是正確的。我可以在webconsole中看到註冊的配置,並且我也看不到此配置的新Entitymanager-factory服務,如問題 – Simiil

+0

中所述。也許您應該發佈一些有關確切設置和您設置的屬性的更多詳細信息。我認爲你仍然需要告訴JPA實現,該bundle需要設置用於導出EMF,因爲這是你目前似乎缺少的。 –

+0

是的,我認爲這可能是這種情況,但我不知道該怎麼做。 turotial明確指出'......獨立配置僅在持久性包中沒有持久性描述符的情況下使用' – Simiil