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 楼答案
OSGi运行时不是应用服务器,而是管理模块(捆绑包)的环境。
war
通常不是OSGi捆绑包,不能按您的方式安装有很多不同的方法来实现你想要的,很难提出建议。以下是其中一些:
将WAR转换为WAB(Web应用程序包)。通过这种方式,您可以将其安装到任何OSGi运行时中。您还需要安装其他可以处理web请求的捆绑包(例如HTTP白板实现)
使用基于OSGi的产品,该产品可以自动将
war
转换为bundles
Liferay Portal可以做到这一点,但如果您只想运行一个应用程序,那么学习它可能太多了如果您用
apache-karaf
标记问题,因为这是您的环境,那么请查看War deployer。该功能将允许您在Karaf中安装war文件。如果您想从代码开始,您可以查看该特性的代码并遵循相同的方法