Troca de objeto entre aplicações diferentes  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Rafael Rossignol
Java Ninja
[Avatar]

Membro desde: 17/02/2004 09:26:58
Mensagens: 259
Offline

fiz um requestDispatcher.forward pra outra aplicação no mesmo server, no request q eu repassei, mandei um objeto como atributo de request
qdo vou pegar ele na outra aplicação, ele lança classCastException, sendo que a classe é a mesma.

Alguem sabe como resolver? se não tiver como resolver, como eu consigo fazer uma troca?

"A Imaginação é mais importante que o Conhecimento"
Albert Einstein
[Email] [ICQ]
LuizClaudio
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 21:50:51
Mensagens: 388
Offline

Huummm...vc poderia passar os atributos do como parâmetro em get, ou então, como as duas aplicações estão no mesmo servidor fazer um diretório com os objetos serializados, ou ainda, num sei, talvez usar Corba ou RMI, depende muito do que vc quer fazer!!

"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16
[WWW]
gilberto.souza
JavaChild

Membro desde: 19/07/2005 13:26:38
Mensagens: 134
Offline

Um jeito fácil de resover isso é colocar o objeto na sessão.

O Homem, filho do tempo, reparte com o mesmo tempo o seu saber e a sua ignorância. Do passado sabe pouco, do presente menos e, do futuro nada!
[Email] [MSN]
LuizClaudio
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 21:50:51
Mensagens: 388
Offline

gilberto.souza wrote:Um jeito fácil de resover isso é colocar o objeto na sessão.


Usar sessão mesmo para aplicações diferentes? vc já fez isso? Pensando bem, pode ser que der certo, afinal o objeto fica associado a sessão, num sei, mas isso num vai depender de como servletcontainer vai gerenciar isso, num sei!!???!!!

"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16
[WWW]
Bjornn Borg
JavaChild

Membro desde: 25/03/2004 15:03:50
Mensagens: 140
Offline

Vc tem certeza que isso funciona? Pelo que sei, quando vc encaminha o request para outra app, ocorre um redirect e a daí vc perde qualquer dado que haja no request...

Acho que você vai ter que bolar uma outra solução.

Tenha fé. O que é caro por R$ 10,00 poder ser barato por R$ 50,00 amanhã.

char[] name = {66,106,111,114,110,110,32,66,111,114,103};
char[] cert = {83,67,87,67,68,32,49,46,52};
LuizClaudio
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 21:50:51
Mensagens: 388
Offline

Bjornn Borg wrote:Vc tem certeza que isso funciona? Pelo que sei, quando vc encaminha o request para outra app, ocorre um redirect e a daí vc perde qualquer dado que haja no request...

Acho que você vai ter que bolar uma outra solução.


é eu tb acho que não, mas eu pensei, se o cara tivesse os atributos numa request get, tipo:

http://seilah.com.br/app?atributo1=valor1&atributo2=valor2


aí é só ver como mandar isso de um jeito onde o endereço fique preservado, num sei, numca fiz, é só uma idéia...

"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16
[WWW]
Rafael Rossignol
Java Ninja
[Avatar]

Membro desde: 17/02/2004 09:26:58
Mensagens: 259
Offline

LuizClaudio, vc quis dizer q pensou q eu tinha parameters.

Estou querendo repassar um login ja feito pra aplicações diferentes, na verdade estou criando um jar q vou partilhar entre as aplicações e faz com que o login esteja centralizado.

Estou usando o tomcat e ja testei um esquema de crossContext, que da pra redirecionar passando o request, eu debugo e o objeto chega (se não funcionasse não daria classCastException, e sim um nullPointer ou algo assim)

Sessão não funciona, ja tentei, sessão é por aplicação e não por containter.
Pelo que entendi até agora, o classpath é outro. O container deve considerar q são classes diferentes.
Quase consegui usando XMLDecoder e XMLEncoder, porém estou com problemas com algumas classes (instantiationException)

"A Imaginação é mais importante que o Conhecimento"
Albert Einstein
[Email] [ICQ]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Pelo jeito você quer fazer um SSO, certo?

Qual container você está usando? JBoss?

Porque se você duplicou a classe na outra app, pode ser que ele esteja usando o mesmo classloader para as duas aplicações e aí considera como classes diferentes e não como a mesma.

O ideal é, no login, criar um Cookie no cliente, e verificar se está logado peloa cookie, e não ficar enviando login pra cada app diferente.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
LuizClaudio
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 21:50:51
Mensagens: 388
Offline

O Grande Bé wrote:LuizClaudio, vc quis dizer q pensou q eu tinha parameters.

Não estava falando atributos do objeto que vc quer passar, mas como vc falou que é login num vai rolar vc ter um endereço tipo:

http://seilah.com.br/app?user=meu_user&senha=minha_senha


"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16
[WWW]
Rafael Rossignol
Java Ninja
[Avatar]

Membro desde: 17/02/2004 09:26:58
Mensagens: 259
Offline

Consegui contornar este problema serializando objeto inteiro e depois refazendo ele.

Criei dois servlets q fazem uma ponte
em um aplicativo um servlet de saida q encoda o objeto
e no outro um servlet de entrada
só q é estranho pois eu consegui recuperar o objeto setei na sessão pelo servlet, mas qdo tento recupera-lo depois não está mais lá.

"A Imaginação é mais importante que o Conhecimento"
Albert Einstein
[Email] [ICQ]
LuizClaudio
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 21:50:51
Mensagens: 388
Offline

Estranho....mas agora o problema é outro né? Essa vida de programador, sai duma fria pra entrar numa gelada.... bem que minha mãe falava, filho vai ser advogado eheheheheh num faço idéia do que pode ser, ainda mais sem ver o código, entretanto, posso dizer que eu uso o eclipse Web Tool pra debugar esse tipo de coisa..

"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16
[WWW]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Você quer um SSO (Login único)? Porque complicar?

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
edpipole
JavaTeenager

Membro desde: 29/03/2005 14:53:51
Mensagens: 165
Offline

meu....

procura sobre "crossContext tomcat" no nosso amigo google que ele vai ensinar pra vc...

na pratica vc tem q colocar o parametro crosscontext no server.xml do tomcat, com isso sera possivel vc ter acesso as sessões de outras aplicações.

abs, esse e o caminho das pedras.
espero ter ajudado...
micheldavid
HelloWorld

Membro desde: 06/03/2007 09:04:38
Mensagens: 10
Offline

Você pode criar um jar e colocar na pasta shared/lib ... estes jars são carregados apenas uma vez durante a execução do tomcat (outros servidores tem métodos diferentes para carregar bibliotecas compartilhadas).
Neste jar vc deve criar algo parecido com um Map, mas, singleton.
Futuramente pode até serializar e desserializar os dados do Map para manter as sessões autenticadas após reiniciar a aplicação, e também será necessário caso vc faça uso de um cluster.

Sobre o problema de serialização, que lança uma "InstantiationException", ocorre quando você não tem um construtor sem parâmetros para a classe.
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

POG* DETECTED!


* Programação Orientada a Gambiarra

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team