Pergunta

Estamos atualmente no processo de migração de nossa aplicação do nosso ambiente de produção para um novo centro de dados.

  • atual ambiente de produção: Java 1.4, Java EE 3, foi de 5,1, JSF 2.1
  • New Data Center Ambiente: Java 1.5, Java EE 5, o WAS 6.1, JSF 2.1
Nossa aplicação é construída em JSF 2.1 e contém o código abaixo em uma das chamadas AJAX:
request.getSession().getServletContext().getRequestDispatcher(
                    "/results.faces").include(request, response);
E é aí que nos deparamos com questões.

Caso 1: estrutura EAR de acordo com as especificações padrões
. EAR -> WAR -> WEB-INF -> lib -> * .jar (frascos todas as aplicações específicas estão sob WEB-INF / lib). Isso não funciona e nós kee em obter exceções para classe não encontrados pelo carregador de classe. Além disso, a chamada AJAX acima falhar (não saída gerada)

Caso 2: EAR contém todos os arquivos JAR do aplicativo no root (MANIFEST.MF tem o classpath especificado manualmente)
. Esta abordagem funciona perfeitamente e todos os arquivos JAR são carregados sem quaisquer problemas. Além disso, a chamada AJAX também passa bem.

Todas as ideias por que isso poderia ser happenning.

- Ashish

Foi útil?

Solução

Sim, é porque os servidores de aplicativos Java EE tem uma hierarquia de carregadores de classe que é algo como isto: primeiro o carregador de classe de bootstrap é chamado; próximo é o carregador de classe de nível EAR, em seguida, o carregador de guerra de classe nível. Mais elevados carregadores de classe nível não vai olhar para baixo para as classes que necessitam. Se não encontrar o que eles precisam de um ClassNotFoundException será lançada.

Assim, os JARs em WEB-INF / lib não eram visíveis para o carregador EAR classe nível. Quando você mover esses JARs-se a resolver o problema. Faz todos os JARs visíveis a todas as guerras em seu ouvido também.

Uma coisa que você pode querer verificar se a especificação para o seu web.xml e outros arquivos. O servlet e JSP especificações alterado em algum lugar ao longo do caminho, então JARs como JSTL e tal foi a partir da versão 1.0 para 1.1. Você pode querer verificar cuidadosamente o seu web.xml e todos os JARs para se certificar de que elas coincidam com as especificações suportadas pelo seu servidor de aplicações Java EE.

Infelizmente, a atualização do servidor de aplicativo não é tão fácil como se jogando um EAR ou WAR em.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top