Erro ClassCastException em contextos diferentes

4 respostas
nadilsons

Bom dia,

Estou com a seguinte situação:

Tenho um objeto no scopo application onde duas aplicacões web (dois contextos) fazem acesso (configurei crossContext=“true” no server.xml do tomcat).
Então, eu consigo ter acesso a este objeto… porém só consigo acessá-lo como sendo do tipo Object. Quando tento fazer o cast, o container gera uma exceção de ClassCastException.

Alguém já se deparou com esta situação? Existe a possibilidade de eu fazer este cast?

Obrigado pela atenção,

Nadilson.

4 Respostas

T

Você tem na verdade duas classes diferentes, mesmo que sejam carregadas do mesmo arquivo .class, porque foram carregadas por classloaders diferentes.

Se essa classe, em vez de estar na aplicação, estiver em uma biblioteca que é carregada por um classloader que é comum para ambas as aplicações, você não terá esse problema.

T

Por exemplo, em vez de você compartilhar um objeto “Cliente”, você pode passar entre as duas aplicações um java.util.LinkedHashMap (por exemplo). É nojento, diga-se de passagem.

Antes:

class Cliente {
    public String nome;
    public String endereço;
}
     Cliente cliente = new Cliente();
     cliente.nome = "José Arimatéia";
     cliente.endereço = "R. Gólgota, 234";

Depois:

Map cliente = new LinkedHashMap();
     cliente.put ("nome", "José Arimatéia");
     cliente.put ("endereco", "R. Gólgota, 234");
nadilsons

Obrigado pela dica, Thingol.

Então eu vou colocar esta classe, que é comum nestas duas aplicações, em uma lib… e já digo o que aconteceu!

Nadilson

nadilsons

Grande Thingol!!!

Então bastou exportar a classe que é utilizada pelo dois contextos e colocá-la na common\lib do tomcat e o problema de cast não ocorre mais.

Muito obrigado mesmo pela dica! Salvou o dia!

Nadilson

Criado 14 de dezembro de 2006
Ultima resposta 14 de dez. de 2006
Respostas 4
Participantes 2