【问题标题】:Configure external libraries as Glassfish modules将外部库配置为 Glassfish 模块
【发布时间】:2012-06-04 02:45:56
【问题描述】:

我有几个使用外部库的 OSGI 包和 WAR 包:

       <dependencies>       
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>        
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>4.2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
            <version>4.2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>osgi-cdi-api</artifactId>
            <version>3.1-b41</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>

可以将这些库复制到 Glassfish 服务器的 /modules 目录中,而不是将这些库构建到每个 OSGI 包和 WAR 包中。我想可以只使用一个副本没有任何问题吗?

编辑

我发现这些库可以通过以下命令部署为 Glassfish 中的模块:

[root@Testserver bin]# sh asadmin add-library /opt/primefaces.jar 但是,例如在一个简单的 WAR 包中,我需要修改什么才能使用 Glassfish 模块?我想必须将 WAR 包配置为使用外部库?

【问题讨论】:

    标签: java maven glassfish osgi


    【解决方案1】:

    我不认为问题出在您的 war 文件中,但请确保您可以检查 MANIFEST 文件。如果 Import-Package 标头正确,则您无法从 war 文件中执行任何操作。如果是这种情况,必须有办法说服 Glassfish 使模块对 web 应用可见(我不是 Glassfish 专家,抱歉)。

    否则,请修复 Import-Package 标头(您现在可以手动执行此操作)。

    【讨论】:

      【解决方案2】:

      您可以查看 glassfish 文档的这一部分,称为 Module and Application Versions

      http://docs.oracle.com/cd/E26576_01/doc.312/e24929/overview.htm#gkhhv

      "应用程序和模块版本控制允许同一应用程序的多个版本存在于 GlassFish Server 域中,这简化了升级和回滚任务。在任何给定的服务器上最多可以启用一个应用程序或模块的一个版本版本控制为部署、查看和管理模块和应用程序的多个版本的工具提供扩展,包括管理控制台和与部署相关的 asadmin 子命令。同一模块或应用程序的不同版本可以具有相同的上下文根或 JNDI 名称。版本控制的使用是可选的。"

      【讨论】:

      • 我看到了这个帖子,但我不明白如何使用它。问题是当我部署模块时,WAR 包看不到它。我需要在 WAR 包中进行额外的配置,但我不知道该怎么做。
      猜你喜欢
      • 1970-01-01
      • 2011-10-16
      • 2017-09-02
      • 2017-10-17
      • 2016-12-20
      • 2015-07-03
      • 2014-01-03
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多