在运行时向OSGI部署战争

我的要求是在运行时将War文件部署到OSGI中。

为了实现这一点,我正在尝试以下代码:

BundleContext bundlecontext = FrameworkUtil.getBundle(this.getclass()).getBundleContext();
Bundle b = bundlecontext.installBundle("file:" + "./war/testwar.war");
b.start();

但是,通过使用以上代码,我无法实现这一目标。

由于我是OSGI的新手,所以对OSGi的了解很少。 因此,我需要对此有所帮助。

jinchangming1988 回答:在运行时向OSGI部署战争

OSGi运行时不是应用程序服务器,而是管理模块(捆绑包)的环境。 war通常不是OSGi捆绑软件,因此无法按照您的安装方式进行安装。

有很多方法可以实现您想要的,很难提出建议。以下是其中一些:

  1. 将WAR转换为WAB(Web应用程序捆绑包)。这样,您可以将其安装到任何OSGi运行时中。您还需要安装其他可以处理Web请求的捆绑软件(例如HTTP Whiteboard实现)

  2. 使用基于OSGi的产品,该产品可以自动将war转换为bundlesLiferay Portal会这样做,但是如果您只想运行一个应用程序,那么学习它可能会太多。

  3. 如果因为您所处的环境而用apache-karaf标记了问题,请查看War deployer。该功能将允许您在Karaf中安装war文件。如果您想通过代码来实现,则可以查看该功能的代码并遵循相同的方法。

本文链接:https://www.f2er.com/2963872.html

大家都在问