2013-10-25 4 views
0

Как развернуть веб-приложение (войну) на разных автономных экземплярах GlassFish, используя разные версии Mojarra для каждого экземпляра.Различные версии Mojarra для автономных экземпляров в GlassFish 3

Мы планируем обновить версию Mojarra от версии 2.1.6, используемую по умолчанию от GF 3.1.2.2 до Mojarra 2.1.24. В наших приложениях JSF мы используем PrimeFaces от версии 2.2 до 3.5. Прежде чем мы приступим к разработке с нашим приложением, после обновления 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 в instance-root/lib/applibs и настройка --libraries опции при развертывании dowsn't работы.

Спасибо за любые идеи.

+0

Glassfish, как контейнер приложения JavaEE, обеспечивает свою собственную реализацию JSF, которые вы можете изменить. Планируете ли вы иметь разные версии на разных серверах и просто измените версию своей моджары? –

+0

Правильно. У меня есть DAS и многие автономные экземпляры на одной машине. Причина этого довольно проста. Некоторые из моих веб-приложений работают на Mojarra 2.1.6 и стабильны. Но одно из Web-приложений работает с Primefaces и нуждается в более новой версии Mojarra. Но я не хочу обновлять отверстие DAS и все отдельные экземпляры. Нет времени проверять все веб-приложения на каждом экземпляре. Возможно ли связать определенную версию 'javax.faces.jar 'с Приложением над' pom.xml'. – AdemC

+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-библиотеки, чтобы создать тот, который вам интересен. В SO есть некоторые темы, которые объясняют, что вам нужно сделать для их обновления.

В других случаях вы также можете использовать собственную реализацию JSF для каждого приложения, правильно настроив сервер, чтобы не использовать свои библиотеки.

Смотрите также:

How to update Mojarra version in GlassFish