我在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容器中注册的资源?
答案 0 :(得分:0)
@ Martin的评论让我想到多线程部分。我得到了这个工作:
ctx.lookup(...)
中调用BundleActivator
。这是因为,在桥接模式下,运行ClassLoader
代码的线程的Activator
可以查找父WAR文件中定义的所有类和资源。 META-INF/context.xml
通过<ResourceLink global="foo/bar" name="foo/bar" type="javax.sql.DataSource"/>