JavaEE 5, foi de 6,0 problema estranho com JSP inclui
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
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
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.