2012-05-07 107 views
3

我正在使用JBossAS7。 我的應用程序有一些OSGI模塊和大的非OSGI部分。 我嘗試通過JNDI在非osgi子系統中查找osgi服務,但它們不在JNDI上下文中。 我在JBOSS 7 - Osgi Bundles not present in JNDI TREE發現了類似的問題,但我沒有找到任何解決方案。如果JBoss團隊還沒有實現這個功能,我現在該如何解決這個問題?無法通過JNDI查找OSGI服務

我嘗試添加我的服務手動JNDI上下文,但是因爲JNDI上下文(根據https://issues.jboss.org/browse/AS7-421

回答

6

它不是完全集成的,但(監控JBOSGI-81檢查狀態)只讀了一個例外,但是我想你可以通過採用Apache Aries JNDI OSGi捆綁包並將它們部署到JBoss AS7中來完成此項工作。

要做到這一點,部署並啓動

的JNDI包會抱怨它不能設置一些靜態與NamingManager,但是你可以忽略它,因爲AS7 JNDI負責處理這個問題。 通過上面安裝,你應該能夠做到

osgi:service/org.foo.SomeInterface 

osgi:servicelist 

類型查找...例如束你可以嘗試以下查找這是由框架註冊的啓動級別服務:

osgi:service/org.osgi.service.startlevel.StartLevel 

我只是AS7 7.1.2嘗試它和它的作品對我來說...

一件事請注意,如果您正在查找的實體實現了在另一個AS7/MSC模塊或OSGi包中定義的接口,則需要確保消費者能夠看到它,以便能夠投射到此接口。在OSGi世界中,您只需導入包,但在AS7模塊(例如war文件)中,您可以通過添加Dependencies清單頭來實現此目的。

+0

我添加模塊清單中的依賴關係,但有一個例外 org.jboss.modules.ModuleNotFoundException:模塊[MODULE_NAME]:主未在本地模塊加載@ 19e3118a實測值(根:[jboss_directory] ​​\模塊) – Ivan

+0

目前還不清楚對我來說你的設置是什麼,以及它抱怨什麼樣的依賴。也許你想在JBoss OSGi論壇[https://community.jboss.org/en/jbossosgi](https://community.jboss.org/en/jbossosgi)上詳細發佈你的場景。在上面的描述中,我簡單地安裝並啓動了Aries捆綁包。模塊依賴關係涉及如果要將通過JNDI查找的對象轉換爲特定的API ... –

+0

我可以證實此解決方案正在使用7.1.1.Final。謝謝! – eis