Web Services com suporte para SOAP 1.1 e/ou SOAP 1.2

1 resposta
C

Boa tarde pessoal,

Por favor, estou precisando de uma ajuda com relação JAX-WS com Glassfish para a seguinte situação:

  • Tenho um WebService criado com JAX-WS 2.1 rodando no glassfish 2.1. Qdo criado o WS, o JAX-WS assumiu como padrão receber mensagens do padrão SOAP 1.1.

  • A aplicação deve atender tanto clientes que enviem mensagens no padrão SOAP 1.1, como também, mensagens no padrão SOAP 1.2.

  • Já tentei interceptar a mensagem criando Handler no JAX-WS para tratar a conversão de um padrão para o outro, porém, antes da mensagem chegar no WS, já é lançada uma exceção:

com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type: application/soap+xml;charset=“utf-8”;action="" Supported ones are: [text/xml

  • Já tentei também criar um filtro através da interface Filter para mudar o content-type do request, porém, ao despacotar o envelope da mensagem, não consegui mudar o namespace do envelope para trocar os padrões do SOAP.

  • Já tentei também criar um Wrapper para o request, criando dessa forma, um novo request, com o content-type correto, porém não estou conseguindo fazer a conversão da mensagem (stream) dentro do novo request. Está dando a exceção abaixo:

com.sun.xml.ws.protocol.soap.MessageCreationException: Couldn’t create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]

Bem, como puderam observar já tentei de tudo quanto é forma, mas tá difícil.
Alguém pode dar uma luz para qual melhor solução a ser adotada!

Desde já agradeço pela compreensão e ajuda.

1 Resposta

C

E ai pessoal,

Ainda estou quebrando a cabeça pra resolver isso.
Mas consegui fazer um “work around” (gambi pra nois)

Criei dois WebService, um para receber mensagens SOAP 1.1 e outro, identico, para atender SOAP 1.2
No filtro vejo o contet-type e pelo getRequestDispatcher() faço um redirect para o WS de acordo com o tipo do padrão da mensagem.

Gostaria de discutir esse problema com alguém, não é possível que um WS em JAX-WS não possa atender tanto um como outro protocolo de forma transparente.

Tem alguma outra solução?
Andei tentando também o AXIS 2.0 e vi que ele acrescenta o WSDL endereços distintos para o servico, um pra cada protocolo.
Bem, aguardo alguém se manifestar para trocarmos experiências …

Criado 21 de maio de 2009
Ultima resposta 22 de mai. de 2009
Respostas 1
Participantes 1