【问题标题】:how to deploy Maven dependencies automatically into JBoss as OSGI bundles?如何将 Maven 依赖项作为 OSGI 包自动部署到 JBoss 中?
【发布时间】:2013-02-04 11:26:42
【问题描述】:

我有一个部署独立 OSGí Apache ServiceMix 应用程序的项目。它有大量的依赖项,它是用 Maven 构建的。现在我想将此应用程序部署到 JBoss AS 中。我发现了一个有趣的 Maven 插件,叫做 jboss-as-maven-plugin (org.jboss.as.plugins) 来部署任何东西。我使用maven-bundle-plugin (org.apache.felix) 来构建我的包,它工作正常,但是当我部署项目包时,由于不满足依赖关系,部署失败。

如何使用 Maven 目标自动捆绑和部署所有依赖关系树?可能吗?我的项目在pom.xml 上声明了几十个依赖项,其中一些是我工作区中的其他项目。

【问题讨论】:

  • @Lucas Tycho 与此问题无关。

标签: maven deployment osgi jboss7.x apache-servicemix


【解决方案1】:

目前我知道的唯一解决方案是 Karaf 功能。你可以create a feature file out of your pom dependencies

我发现jboss似乎支持subsystems。这可能有助于指定运行应用程序所需的包。它似乎不是 OSGi 子系统规范,但对于 jboss 这可能已经有所帮助。对于 OSGi 规范 5,有一个标准化的子系统规范,它可以提供一种跨容器执行此操作的标准方法。

如果 jboss 支持 OBR(OSGi 包存储库),那么您可以限制必须指定的依赖项的数量。

【讨论】:

  • 我使用了 JBoss 的子系统,但我没有达到我的目标,因为它在 JBoss 7.1 问题 (issues.jboss.org/browse/AS7-5544) 中显示,请参阅我的最后一条评论。 Karaf 本身就是一个依赖项,因为我还没有实现在 JBoss 中拥有一个配置良好的实例。我有很多问题要实现我的目标:-((。谢谢你,我继续努力!
  • 使用 Karaf 作为服务器而不是 JBoss 会不会更好?
  • 需要将我们的应用程序部署到 JBoss 中。我们必须同时支持独立的 Apache ServiceMix(使用 Apache Karaf)和 JBoss 部署。
  • 好的,我明白了。从框架开发人员的角度来看,目前没有通用的方法来指定适用于所有 OSGi 容器的捆绑包组是非常糟糕的。我希望子系统和存储库规范能够缩小这一差距,但需要一些时间才能支持这些。
  • 是的,我遵循了问题指南,但似乎所有功能都将完全部署在 JBoss AS 7.2 中。我们没有时间等待稳定版本:-((
【解决方案2】:

如果您的应用程序不使用 OSGi,您可以考虑将您的应用程序打包为可部署在 JBoss 中的 WAR。

然后您需要使用 web.xml 来引导您的应用程序,例如使用 Spring XML 文件。

这里有一个 Camel 示例作为 WAR:http://camel.apache.org/servlet-tomcat-example.html

【讨论】:

  • 显然我们的应用程序使用 OSGi,这就是我们选择 Apache ServiceMix(和 Apache Felix 作为 OSGi 容器)的原因。我们的应用程序包含一组 OSGi 包和功能。
  • 是的,可以,但是您可以部署在 OSGi 容器中,并且不使用任何 OSGi 服务,例如 osgi 服务注册表或其配置管理服务等。如果不使用它,您可以将您的应用程序部署在非OSGi 容器。
  • 我们的应用使用服务注册表。事实上,我们的应用大量使用了 OSGi 服务。
【解决方案3】:

您可以使用 org.apache.sling 插件自动安装您的捆绑包

            <plugin>
                <groupId>org.apache.sling</groupId>
                <artifactId>maven-sling-plugin</artifactId>
                <executions>
                    <execution>
                        <id>install-bundle</id>
                        <goals>
                            <goal>install</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <slingUrl>http://localhost:8181/system/console/install</slingUrl>
                    <user>karaf</user>
                    <password>karaf</password>
                </configuration>
            </plugin>

您可以从 Adob​​e 网站找到详细的 pom.xml:https://docs.adobe.com/docs/en/cq/5-6-1/developing/developmenttools/how-to-build-aem-projects-using-apache-maven.html

http://www.cqblueprints.com/tipsandtricks/build-and-deploy-osgi/build-deploy-osgi-1.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2011-12-06
    • 1970-01-01
    • 2012-11-23
    相关资源
    最近更新 更多