JNDI在桥接模式下在OSGi中查找

时间:2014-05-07 19:58:08

标签: java osgi jndi

背景

我在Tomcat6容器中嵌入了基于Apache Felix in the bridged mode的OSGi运行时。 Tomcat6中的conf / server.xml文件中指定了许多JDBC连接。

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

问题

标准的JNDI查找似乎不适用于部署到OSGi容器的bundle。

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

OSGi运行时是否需要执行任何特殊操作才能查找在父Tomcat6容器中注册的资源?

1 个答案:

答案 0 :(得分:0)

@ Martin的评论让我想到多线程部分。我得到了这个工作:

  1. 确保在ctx.lookup(...)中调用BundleActivator。这是因为,在桥接模式下,运行ClassLoader代码的线程的Activator可以查找父WAR文件中定义的所有类和资源。
  2. 确保父WAR META-INF/context.xml通过<ResourceLink global="foo/bar" name="foo/bar" type="javax.sql.DataSource"/>
  3. 公开JNDI资源