GlassFish 3中独立实例的不同Mojarra版本

时间:2013-10-25 11:26:15

标签: maven jsf-2 glassfish-3 mojarra

如何在不同的GlassFish独立实例上部署web-app(war),同时在每个实例上使用不同的Mojarra版本。

我们计划将使用的Mojarra版本从GF 3.1.2.2默认使用的2.1.6更新为Mojarra 2.1.24。在我们的JSF应用程序中,我们使用的是版本2.2到3.5的PrimeFaces。在我们使用我们的应用程序进行生产之前,在Mojarra更新之后,我们希望在同一节点内的独立GlassFish实例上进行测试。

我们如何才能完成,在此独立实例上部署的应用程序使用的是域管理服务器上提供的不同Mojarra版本。该项目是用maven构建的。

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.1.24</version>
        <scope>runtime</scope>
    </dependency>

尝试编译,提供和运行时的依赖范围。在部署时

[#|2013-10-25T13:11:25.122+0200|INFO|glassfish3.1.2|javax.enterprise.resource.webcontainer.jsf.config|_ThreadID=150;_ThreadName=Thread-2;|Mojarra 2.1.6 (SNAPSHOT 20111206) für Kontext '/TestApp'

在部署dows时,即使将javax.jaces.jar放在instance-root/lib/applibs并设置--libraries选项也不行。

感谢任何想法。

1 个答案:

答案 0 :(得分:1)

嗯,你能做的就是使用Maven profiles to include conditional dependencies。 Glassfish包含jsf API和开箱即用的实现。因此,您对项目的需求是指定要编码的API,并将其标记为提供,因为您不需要部署它们:

<profiles>
    <profile>
        <id>old-glassfish</id>
        <dependencies>
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>jsf-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>new-glassfish</id>
        <dependencies>
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>jsf-api</artifactId>
                <version>2.1</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

我不做Glassfish,但你也应该改变提供的JSF库来建立你感兴趣的那个。这里有一些线索可以解释你需要做些什么才能更新它们

另外,您还可以为每个应用程序使用自己的JSF实现,正确配置服务器而不使用其捆绑的库。

另见:

How to update Mojarra version in GlassFish