首页 文章

我如何构建和应用程序作为OSGI捆绑包和WAR

提问于
浏览
2

我正在开发和应用一系列将在Karaf上运行的OSGI包 . Bundles具有相当大的互操作性,既暴露了一堆服务,又消耗了彼此的服务 .

但是,我非常希望能够与bundle一起构建应用程序的WAR文件 . 有一些客户端根本不允许在其服务器上安装OSGI容器 .

所以我的问题是,将OSGI服务逻辑与应用程序逻辑分开的最佳方法是什么?激活器没有问题,因为它们在WAR部署中只是未使用,但是我有很多调用来从bundlecontext中检索服务,比如分散在我的代码中的 bundleContext.getServiceReference(stuffISortOfNeed.class) . bundleContext当前是激活器设置的静态对象 .

这不会在对OSGI一无所知的WAR容器中执行 .

是否有可能以某种方式隐藏BundleContext和getServiceReference调用远离实际应用程序?我最好喜欢类似注入的方法,我可以用@Annotations定义我的服务,为OSGI定义和注入,为PlainOldJava定义一个 .

1 回答

  • 2

    要真正拥有POJO,您可以使用Blueprint XML注册Web应用程序包(WAB) . 一个很好的例子可以在pax web project中找到 .

    通过在注释上使用XML,您只有一个额外的资源文件,如果您将捆绑包组装为war文件中的libs,则不会对特定注释产生额外的依赖关系 .

相关问题