在OSGi Bundle中导出包

时间:2014-11-20 13:43:17

标签: servlets classpath jboss7.x osgi-bundle

我有一个OSGi Bundle和一个servlet。现在我想从servlet访问bundle。为此,我在servlet中使用以下内容:

@Resource
BundleContext context
...

ServiceReference ref = context.getServiceReference("package.MyOSGiServiceInterface");
MyOSGiServiceInterface service = context.getService(ref); 

问题是我的servlet不知道MyOSGiServiceInterface'因为它是在OSGiBundle中定义的。在Eclipse中,我在Build Path中添加了对Project Project的引用。但在运行时它显然无法找到它。

要解决我用

玩的问题
(in bundle manifest)
Export-Package: package-of-osgi-service-interface 

(in servlet manifest)
Import-Package: package-of-osgi-service-Interface 
Dependencies: ...,deployment.MyBundle

但我无法解决。

错过了什么?如何告诉JBoss将包含OSGiBundle中的MyOSGiServiceInterface的包添加到类路径中?

谢谢你的回答!

(JBoss AS 7.1.1)

--> error message <--

1 个答案:

答案 0 :(得分:0)

最终我解决了它。我必须将正确的设置组合放在一起才能实现我的目标:

  • 将每个bundle:File - Export - “Deployable plug-ins and fragments”部署到文件夹中:“jboss / standalone / deployments”
  • 捆绑-清单:
    • Bundle-SymbolicName:TestBundle
    • Bundle-Version:1.0.0
    • Export-Package:“package-which-includes-my-service”
  • Servlet的清单:
    • 依赖项:org.osgi.core,org.jboss.osgi.framework,deployment.TestBundle:1.0.0
    • 导入 - 包:“package-which-includes-my-service”