Apache Felix+Java EE+OSGi Web应用程序



我正在构建一个具有一些Java EE功能的OSGi应用程序。问题是,我正在寻找一种方法来打包应用程序及其所有依赖项,这样用户只执行jar文件,并执行OSGi框架以及OSGi应用程序和依赖项。然后用户只转到web浏览器并打开应用程序。

我发现的第一个问题是在OSGi框架(ApacheFelix)中执行JavaEE应用程序来执行它。我应该将哪些依赖项导入到Felix中才能启用Java EE应用程序?我尝试过其他一些方法,比如:

  • 脱脂玻璃鱼3.1.2
  • 阿帕奇白羊座
  • 月食双子座
  • 斗鱼

而且仍然没有设法获得一个简单的Java EE应用程序和JSF,在OSGi下工作。OSGi和JavaEE之间存在着一种依赖噩梦,只有Glassfish能够做到这一点。

有人知道如何让一个简单的JavaEE应用程序在ApacheFelix中工作吗?一旦我们完成了这项工作,将所有这些组件嵌入到一个Jar中可能就不会那么复杂了,Apache Maven Assembly插件可以帮助实现这一点。

您要做的是在OSGi中执行类似于传统WAR文件的东西?从技术上讲,您需要做的实际上是创建一个"wab",一个web应用程序捆绑包。要做到这一点,你可以像创建任何其他捆绑包一样使用maven捆绑包插件,但你指定它是一个"wab"(请参阅其他地方)。

然后,您需要将它部署到felix中,使其使用"servlet桥"。你可以用香草猫来做,但这并不容易。

试试Apache Karaf。Karaf是Felix的包装器,它提供了安装实现"特性"的库集的巧妙方法。你需要的功能是"战争"功能,它安装各种东西,包括码头等。

因此,在karaf命令行中,您可以执行"features install war"然后将您的wab捆绑包放入deploy文件夹中,并交叉手指。

更好的是,您可以使用karaf maven插件创建自己的"features.xml"文件,该文件确定捆绑包使用的其他功能和依赖项,然后将该features.xml文件放入karaf的部署文件夹中。

如果你对此有任何具体问题,请告诉我。我有几乎所有这些的例子,但恐怕你的学习曲线相当陡峭:(

检查智慧框架
文档不是很好,但它是一个很好的框架。
我推荐并将在我的下一个项目中使用。

最新更新