将外部库配置为Glassfish模块

时间:2012-05-29 20:55:22

标签: java maven glassfish osgi

我有几个使用外部库的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>

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

修改

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

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

2 个答案:

答案 0 :(得分:1)

您可以查看glassfish文档的这一部分,名为模块和应用程序版本

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

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

答案 1 :(得分:1)

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

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