Interceptar entrada e saída de um WEBService com filter

3 respostas
L

Fala Galera, boa tarde!

Estou desenvolvendo um WEBService aqui e preciso criar um filter.
Este filter tem que pegar alguns dados do XML de entrada.

Pesquisei aqui no forum e achei este exemplo.
http://www.guj.com.br/posts/list/209998.java#1067432

Pela arquitetura utilizada e a necessidade, não funcionaria usar este exemplo…

Preciso criar um filter comum implementando o doFilter etc…e dentro dele eu preciso pegar uma informação do XML de entrada…como um interceptador mesmo…
Tem como fazer isto? Tentei recuperar de várias maneiras através dos atributos de request e response e não deu certo…

Obrigado!!

Leo

3 Respostas

A

Através de um filter, não. Mas você pode criar uma espécie de “alias” pro serviço, desenvolvendo um novo, que vai ficar na sua máquina local, só que com o mesmo contrato do serviço real. Aí, você encaminha a request pra ele, não sem antes mostrar o dado interceptado.

Coloquei um exemplo desses no meu blog, é um dos últimos posts : http://alesaudate.com . O nome do post é “Patterns of Systems Integrations #1: Services Mediator”. (Desculpe não colocar o link direto, não tenho acesso ao blog daqui do trabalho).

Se tiver alguma dúvida (ou não conseguir acessar o blog, sei lá), dá um toque que eu te explico por aqui…

[]´s

L

Fala Alexandre,

Li seu post e acho que ainda não atende…

Meu problema é o seguinte…sou de uma empresa 3ª que presta serviços…
A empresa “Original” já definiu os processos, arquitetura de como o sistema vai funcionar…até o WSDL já foi criado e não pode ser alterado…

Teremos uma TV que vai acessar os serviços que a gente está desenvolvendo…

O que eu estou desenvolvendo são 3 serviços… Validar Login; Consultar Informação X, Consultar Informação Y.
Da parte da TV, eu não sei como vai ser desenvolvida…sei que o usuário vai pelo controle remoto e acessa o meu serviço.

Quando ele acessar meu serviço, indiferente do serviço, eu tenho que controlar a sessão dele(tempo logado, tempo de expiração, etc) através de um componente JAR já feito…e este jar é um FILTER…E o filter espera um valor do XML de entrada para validar a sessão…
No filter há várias consistências e validações…inclusive métodos que geram um ID para eu navegar nas aplicações…Por isto tem que ser utilizado este FILTER…

Já o WSDL, eu não posso alterar nada pois já foi homologado pelo cliente.

Como que poderia funcionar este Service Mediator? É como um proxy?

Se vc tiver, eu uso talk e msn no servico…
[email removido] ou [email removido]

Abraço e obrigado pela dica anterior.

A

Leo:
Fala Alexandre,

Li seu post e acho que ainda não atende…

Meu problema é o seguinte…sou de uma empresa 3ª que presta serviços…
A empresa “Original” já definiu os processos, arquitetura de como o sistema vai funcionar…até o WSDL já foi criado e não pode ser alterado…

Teremos uma TV que vai acessar os serviços que a gente está desenvolvendo…

O que eu estou desenvolvendo são 3 serviços… Validar Login; Consultar Informação X, Consultar Informação Y.
Da parte da TV, eu não sei como vai ser desenvolvida…sei que o usuário vai pelo controle remoto e acessa o meu serviço.

Quando ele acessar meu serviço, indiferente do serviço, eu tenho que controlar a sessão dele(tempo logado, tempo de expiração, etc) através de um componente JAR já feito…e este jar é um FILTER…E o filter espera um valor do XML de entrada para validar a sessão…
No filter há várias consistências e validações…inclusive métodos que geram um ID para eu navegar nas aplicações…Por isto tem que ser utilizado este FILTER…

Já o WSDL, eu não posso alterar nada pois já foi homologado pelo cliente.

Como que poderia funcionar este Service Mediator? É como um proxy?

Se vc tiver, eu uso talk e msn no servico…
[email removido] ou [email removido]

Abraço e obrigado pela dica anterior.

Bom… o Service Mediator, que eu descreví, é simplesmente um padrão para resolver problemas como o seu. A idéia é que se pegue o WSDL original e altere somente o endereço. Ou seja, na parte onde vai soap:address (ou qualquer que seja o protocolo que você use para trafegar os dados), você substitui o endereço. No endereço novo, vai o seu “mediador”, que vai encaminhar a requisição pro serviço original. Note que é algo completamente sem impacto, já que é esperado que você desenvolva serviços em um endereço mas altere estes endereços quando o sistema for para produção.

Eu não sei se entendí muito bem como funciona o seu filtro… teoricamente, é um filtro de login no sistema que trabalha com XML, certo? Não acho que exista uma maneira de fazer o que você quer sem que se chame isso de gambiarra, mas a gente pode ir conversando…

Eu te adiciono no GTalk mais tarde, quando chegar em casa (também não tenho acesso aqui…). Ah, por falar nisso… tire os @ e “.” do seu email aqui, senão vai chover spam, OK?

[]´s!

Criado 12 de novembro de 2010
Ultima resposta 12 de nov. de 2010
Respostas 3
Participantes 2