Minha aplicação tem três módulos, todos no mesmo .EAR .
O primeiro módulo já funciona perfeitamente e está em produção.
Estou desenvolvendo o segundo agora, e ao chamar um servlet
do primeiro (que já funciona), recebo a mensagem:
500 Internal Server Error
java.lang.ClassCastException: br.com.apexsystems.model.Produto
at _conteudo._ct4__prod._jspService(_ct4__prod.java:56)
[SRC:/conteudo/ct4_prod.jsp:11]
at com.orionserver[Oracle9iAS (9.0.2.3) Containers for J2EE].http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:302)
Onde produto é uma classe que uso para passar os dados do DAO:
public class Produto implements Serializable {
…
}
O problema está no seu jsp /conteudo/ct4_prod.jsp. Como você está acessando a classe Produto no jsp?
A classe Produto, só tem em um modulo? Só existe a br.com.apexsystems.model.Produto?
Eu estou conversando com o Rafael pelo ICQ e ele sugeriu colocar
um System.out.println(“request de teste=”+request.getAttribute(“produto”));
pra checar a saida, e ele busca certo:
request de teste=br.com.apexsystems.model.Produto@14b146
verifica se tu tem a classe Produto em mais de um jar, se existir, pode estar ocorrendo algum problema de ClassLoader carregando duas classes diferentes para contextos diferentes.
Imprima o class loader de cada classe, assim coma a classe de do objeto que esta no request soh para ter certeza. realmente parece algum problema de classlaoding/stubing.
Estava comentando com o Luca agora a pouco em outro Thread (http://www.guj.com.br/forum/viewtopic.php?t=15945).
O arquivo ear e os arquivos jar que estão dentro deste ear têm ClassLoaders diferentes.
Eu acredito que possa existir mais de uma classe Produto em seus jars, e por isso está ocorrendo o ClassCastException.
Dá uma verificada nisso…
Containers bons costumam sobrescrever o toString() dos classloaders pra oferecerem alguma informação útil.
Mas para achar esse tipo de erro o mais fácil é usar o identity hashcode dos objetos em questão, ou ==, como o Paulo sugeriu.
[quote=“boaglio”]A linha q dá erro é a de buscar o atributo:
br.com.apexsystems.model.Produto produto = (Produto) request.getAttribute("produto");
[/quote]
Por que esse codigo não é apenas: