有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在运行时将war部署到OSGI中

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

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

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

但我无法通过使用上述代码实现这一点

因为我是OSGI新手,所以对OSGI的了解很少。 我需要帮助实现这一点


共 (1) 个答案

  1. # 1 楼答案

    OSGi运行时不是应用服务器,而是管理模块(捆绑包)的环境。war通常不是OSGi捆绑包,不能按您的方式安装

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

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

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

    3. 如果您用apache-karaf标记问题,因为这是您的环境,那么请查看War deployer。该功能将允许您在Karaf中安装war文件。如果您想从代码开始,您可以查看该特性的代码并遵循相同的方法