segunda-feira, 6 de fevereiro de 2012

Atualizando o Mojarra no Glassfish


por @DaniloMagrini

        Por padrão, a versão presente no Glassfish versão 3.1.1 é o Mojarra 2.1.2, no entanto tivemos alguns problemas com essa versão e decidimos atualizar para a versão 2.1.6 do Mojarra. Devido a pouca documentação existente e depois de muitas horas tentando atualizar decidimos compartilhar o sucesso na atualização para que ninguém perca muito tempo tentando realizar o mesmo trabalho. Gostariamos de salientar que esse procedimento pode funcionar em outras versões do Glassfish e do Mojarra, porém os procedimentos por nós realizados, foram utilizando as versões relatadas acima.

        Inicialmente baixe a versão 2.1.6 do Mojarra aqui. Note que o nome do arquivo é javax.faces-2.1.6.jar porém é conveniente renomeá-lo para apenas javax.faces.jar. Feito isso, podemos iniciar o processo de atualização, sendo que para isso é importante que a instância do Glassfish que iremos atualizar esteja parada. Os procedimentos de atualização são:

  1. Localize o diretório modules dentro do diretório de instalação do Glassfish. No meu caso fica em /opt/glassfish-3.1.1/glassfish/modules ;
  2. Dentro de modules apague (ou renomeie para outra extensão) os arquivos jsf-api.jar e jsf-impl.jar ;
  3. Copie o arquivo baixado javax.faces.jar para dentro do diretório modules ;
  4. Editar os arquivos default-web.xml que se encontram dentro de domains/domain1/config e lib/templates e substituir todas as referências de jsf-api.jar e jsf-impl.jar para javax.faces.jar ;

DICA: A forma mais fácil de fazer a substituição do item 4) é procurar por “jsf-api.jar”. Provavelmente ele se encontra dentro da tag <param-value> do <param-name>system-jar-includes</param-name> conforme abaixo:

...
<init-param>
<param-name>system-jar-includes</param-name>
<param-value>
/lib/
\lib\
jstl-impl.jar
el-impl.jar
javax.servlet.jar
javax.servlet.jsp.jar
javax.servlet.jsp.jstl.jar
javax.jms.jar
jsf-api.jar ==> REMOVER
jsp-impl.jar
jsf-impl.jar ==> REMOVER
javax.faces.jar ==> INCLUIR
jspcaching-connector.jar
web-glue.jar
bean-validator.jar
javax.ejb.jar
...

Uma vez realizadas essas alterações basta inicializar o Glassfish e verificar que o Mojarra já se encontrará na versão 2.1.6. Segue o log:

Informações: Grizzly Framework 1.9.36 started in: 2ms - bound to [0.0.0.0:8080]
Informações: Grizzly Framework 1.9.36 started in: 4ms - bound to [0.0.0.0:8181]
Informações: The Admin Console is already installed, but not yet loaded.
Informações: The Admin Console is starting. Please wait.
Informações: WEB0169: Created HTTP listener [http-listener-1] on host/port [0.0.0.0:8080]
Informações: WEB0169: Created HTTP listener [http-listener-2] on host/port [0.0.0.0:8181]
Informações: WEB0169: Created HTTP listener [admin-listener] on host/port [0.0.0.0:4848]
Informações: WEB0171: Created virtual server [server]
Informações: WEB0171: Created virtual server [__asadmin]
Informações: WEB0172: Virtual server [server] loaded default web module []
Informações: SEC1002: Security Manager is OFF.
Informações: SEC1010: Entering Security Startup Service
Informações: SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.
Informações: SEC1115: Realm [admin-realm] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
Informações: SEC1115: Realm [file] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
Informações: SEC1115: Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] successfully created.
Informações: SEC1011: Security Service(s) Started Successfully
Informações: Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
Informações: Inicializando Mojarra 2.1.6 (SNAPSHOT 20111206) para o contexto
Informações: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
Informações: REST00001: Listening to REST requests at context: /management/domain
Informações: WEB0671: Loading application [__admingui] at [/]
Informações: CORE10010: Loading application __admingui done in 8.933 ms
Informações: The Admin Console application is loaded.

Um comentário:

  1. Parabéns! muito bom esse post; só queria acrescentar uma coisa: pra quem vai seguir esse tutorial, após terminar todo o processo descrito acima,"caso não funcione", tente limpar todo o conteudo de dentro da pasta "...domains/domain1/osgi-cache" que fica na pasta de instalação do glassfish. Aqui funcionou depois que fiz isso !!!

    ResponderExcluir