从eclipse产品/启动配置中导出WAB

时间:2016-02-18 16:20:07

标签: java eclipse osgi wab

在我的团队中,我们正在开发Web应用程序的Java后端。我们使用OSGi 到目前为止,在初始开发阶段和简化过程中,我们使用Jetty作为servlet容器,并且为了部署到测试服务器,我们只是导出我们的eclipse产品(捆绑在一起的所有东西)并运行相应的.exe文件。

我们正在使用OSGi来实现模块化和解耦。在这种特殊情况下,我们对动态安装/卸载软件包不感兴趣,因此将所有内容捆绑在一起并将其部署在一起的eclipse产品非常方便。

现在我们想从Jetty迁移到GlassFish,这意味着我们需要以不同的方式打包我们的捆绑包。从我收集到的WAB对我们来说是正确的。例如,见:

  

基本上,[WAB]是一个带有OSGi捆绑包清单的Web应用程序。因此,整个Web应用程序可以作为单个OSGi包部署在任何具有WAB支持的框架上。从技术上讲,bundle可以作为Web应用程序部署到Servlet容器。但它可以访问BundleContext。这允许Web应用程序与在同一框架中运行的其他bundle或Web应用程序互操作   https://stackoverflow.com/a/11345694/285091

理想情况下,我们希望转到我们的.product文件(或启动配置)并从那里导出WAB,因为我们已经拥有了所有必要的捆绑包,并具有相应的设置(自动启动设置和启动级别)。但是,这似乎不可能 - 是吗?

请注意,使用" root"捆绑并只是打包它及其依赖关系不会完成这项工作,因为还有其他捆绑包不能通过遵循该过程进行打包。例如,在我的工作区中,我有:

- com.example.root
- com.example.something
- com.example.something.impl.a
- com.example.something.impl.b

其中:

  • com.example.something是一个包含2个实现的API包:
    • com.example.something.impl.a
    • com.example.something.impl.b
  • com.example.root取决于com.example.something,但不取决于它的任何实施
  • 我们实际上是com.example.something.impl.b,而不是com.example.something.impl.a

如果我们尝试打包root及其依赖项,我们会错过impl.b

所以,基本上:鉴于我们已经有一个启动配置/ eclipse产品,其中包含我们对服务器端应用程序所需的确切捆绑设置,有没有办法生成相应的WAB?如果没有任何直接的方式,并且鉴于我们不使用maven(排除maven-bundle-plugin),那么接下来最好的是什么?

0 个答案:

没有答案