【发布时间】:2013-11-04 11:53:12
【问题描述】:
如何在不同的 GlassFish 独立实例上部署 Web 应用程序(战争),同时在每个实例上使用不同的 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'
即使将 javax.jaces.jar 放入 <em>instance-root</em>/lib/applibs 并在部署时设置 --libraries 选项也行不通。
感谢您的任何想法。
【问题讨论】:
-
Glassfish 作为 JavaEE 应用程序容器,提供了自己的 JSF 实现,您可以对其进行更改。您是否打算在不同的服务器上拥有不同的版本,而只是更改您的战争的 mojarra 版本?
-
没错。我在同一台机器上有一个 DAS 和许多独立实例。原因很简单。我的一些网络应用程序在 Mojarra 2.1.6 上运行并且很稳定。但是其中一个 Web-App 使用 Primefaces 运行,需要更新版本的 Mojarra。但我不想更新hole DAS 和所有独立实例。没有时间在每个实例上测试所有 Web 应用程序。是否可以绑定
javax.faces.jar' to the Application overpom.xml'的特定版本。 -
好的,但我想知道的是,您是为所有应用程序运行一个 glassfish 实例还是有不同的应用程序?我的意思是,每个 glassfish 实例只能包含一个特定的实现。
-
也对。一个实例只有一个应用程序。如果不是关键的,某些实例有多个。这个星座的原因是,我可以在不中断其他应用程序的情况下重启实例。
标签: maven jsf-2 glassfish-3 mojarra