在运行时向OSGI部署战争

问题描述 投票:0回答:1

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

为了实现我正在尝试通过以下代码:

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

但是我无法通过使用以上代码来实现。

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

java eclipse osgi apache-karaf equinox
1个回答
0
投票

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

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

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

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

  3. 如果您用的是apache-karaf标记问题,因为那是您的环境,请查看War deployer。该功能将允许您在Karaf中安装war文件。如果您想通过代码完成此操作,则可以查看该功能的代码并遵循相同的方法。

© www.soinside.com 2019 - 2024. All rights reserved.