如何使用Maven Cargo插件将Web应用程序包(WAB,OSGI + JavaEE)部署到Glassfish 3.x中

时间:2013-04-22 15:22:27

标签: maven glassfish osgi cargo wab

我正在尝试使用Maven Cargo插件来部署一组OSGI包和一个混合应用程序.war(使用OSGI的Restservice的Web应用程序)也称为Web应用程序包(或WAB)(例如参见{{3 }})。

将OSGI包部署到Glassfish 3.1.x中工作正常,但我还没有找到部署Web应用程序包的方法。

它的包装是“战争”,但我必须将其部署为OSGI捆绑包。那我该如何判断货物插件呢?

我尝试使用的maven配置:

  <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.0</version>
    <configuration>
      <wait>false</wait>

      <container>
        <containerId>glassfish3x</containerId>
        <home>${glassfish.home}</home>
        <type>installed</type>
      </container>
      <configuration>
        <type>existing</type>
        <home>${glassfish.home}</home>
        <properties>
          <cargo.hostname>localhost</cargo.hostname>
          <cargo.rmi.port>4848</cargo.rmi.port>
          <cargo.domain.name>${glassfish.domain}</cargo.domain.name>
        </properties>
      </configuration>
      <deployables>
        <deployable>
          <groupId>com.acme.rest</groupId>
          <artifactId>rest-api</artifactId>
          <type>bundle</type>
        </deployable>
      </deployables>
    </configuration>
  </plugin>

但是出现以下错误:

[错误]无法执行目标org.codehaus.cargo:cargo-maven2-plugin:1.4.0:在项目rest-api上重新部署(default-cli):工件[com.acme.rest:rest-api: bundle]不是项目的依赖项。 - &GT; [帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标org.codehaus.cargo:cargo-maven2-plugin:1.4.0:在项目rest-api上重新部署(default-cli):Artifact [com.acme.rest: rest-api:bundle]不是项目的依赖项。

部署为组件类型“web”有效,但后来我无法使用OSGI包...

是否有人有部署Web应用程序包和OSGI包的经验?

3 个答案:

答案 0 :(得分:1)

我不知道货物插件,但是要使用asadmin客户端部署wab,必须传递一个--type = osgi选项,如下所示:

asadmin deploy --type = osgi foo.war

那么,看看你是否可以配置货物插件来传递这个选项。

Sahoo

答案 1 :(得分:0)

诀窍是:

<deployable>
  <groupId>com.acme.rest</groupId>
  <artifactId>rest-api</artifactId>
  <type>war</type>
  <implementation>org.codehaus.cargo.container.deployable.Bundle</implementation>
</deployable>

你仍然有一个WAR工件,但Bundle会欺骗Cargo将其部署为OSGi。

答案 2 :(得分:0)

尝试使用版本1.4.7,它增加了对asadmin参数的支持以及@Sahoo提到的参数。

<cargo.glassfish.deploy.arg.1>--type=osgi foo.war</cargo.glassfish.deploy.arg.1>

允许传递Glassfish部署的额外参数 https://jira.codehaus.org/browse/CARGO-1245