2014-05-07 81 views
1

背景

我嵌入在容器的tomcat6基於Apache Felix in the bridged mode OSGi運行時。在Tomcat6的conf/server.xml文件中指定了一堆JDBC連接。JNDI查找在橋接模式

<Resource name="foo/bar" ... /> 

問題

標準JNDI查找似乎並沒有從部署到OSGi容器包工作。

ctx.lookup("java:comp/env/foo/bar"); 

有什麼特別需要做的OSGi運行時能夠查找父的Tomcat6容器註冊的資源?

+0

暴露了JNDI資源,你能提供有關環境的信息,是一個包激活內部或在白羊座藍圖應用程序發出的ctx.lookup?由於分叉的線程,在我們的環境中,我只能夠在已經啓動服務器的線程內部獲取jndi-ressources。 –

回答

0

@ Martin的評論讓我想起了多個線程部分。我得到了這個工作:

  1. 確保ctx.lookup(...)被調用BundleActivator。這是因爲在橋接模式下,運行代碼Activator的線程的ClassLoader可以查找父WAR文件中定義的所有類和資源。
  2. 確保父WAR的META-INF/context.xml通過<ResourceLink global="foo/bar" name="foo/bar" type="javax.sql.DataSource"/>