| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2011 01:38:47
|
jubiraco
Debugger
Membro desde: 27/08/2009 15:42:58
Mensagens: 56
Localização: Curitiba
Offline
|
Olá,
estou estudando JAX-WS e estou tentando aprender a usar os WebParam.Mode (IN, OUT e INOUT).
Para testes, criei a seguinte interface:
Abaixo, a implementação do serviço:
Abaixo, as classes utilizadas como parâmetro:
Person:
Player:
Quando tento subir o serviço, esta exceção é lançada:
Como estou apenas estudando (não vou publicar meus serviços em ambiente de produção), estou usando a classe Endpoint para publicá-los:
Alguém sabe o que estou fazendo de errado?
Obrigado,
Abraço!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2011 11:03:54
|
Rafael Carneiro
Moderador
![[Avatar]](/images/avatar/895df6a24c45297cb239065bcafa1fa4.jpg)
Membro desde: 31/03/2007 12:40:41
Mensagens: 809
Localização: Fortaleza
Offline
|
Essa classe CreatePlayerResponse é um cliente?
|
Rafael Carneiro
http://www.rafaelcarneiro.com | @rcarneiro | JForum |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2011 14:00:13
|
jubiraco
Debugger
Membro desde: 27/08/2009 15:42:58
Mensagens: 56
Localização: Curitiba
Offline
|
Olá,
Essa classe CreatePlayerResponse é um cliente?
Não. Eu acredito que o CreatePlayerResponse é o wrapper para a mensagem que é criado automaticamente pelo JAX-WS.
Obrigado,
Abraço
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 09:17:51
|
Rafael Carneiro
Moderador
![[Avatar]](/images/avatar/895df6a24c45297cb239065bcafa1fa4.jpg)
Membro desde: 31/03/2007 12:40:41
Mensagens: 809
Localização: Fortaleza
Offline
|
Tem certeza? Procurei no google e não encontrei nada a respeito.
|
Rafael Carneiro
http://www.rafaelcarneiro.com | @rcarneiro | JForum |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 13:15:32
|
jubiraco
Debugger
Membro desde: 27/08/2009 15:42:58
Mensagens: 56
Localização: Curitiba
Offline
|
Sim, tenho.
O padrão usado pelo JAX-WS é DOCUMENT/LITERAL e WRAPPED (parameterStyle = ParameterStyle.WRAPPED por default).
A menos que eu especifique o contrário, usando @SOAPBinding(parameterStyle = ParameterStyle.BARE), duas classes (uma para request e outra para response) wrappers serão criadas.
Obrigado,
Abraço!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 14:33:24
|
victor.benjamin.guj
What is classpath?
Membro desde: 12/02/2009 14:50:04
Mensagens: 5
Offline
|
Olá,
Eu acredito que esteja faltando um parâmetro de resposta(Mode.OUT) ou retorno do método createPlayer. arg0 que a mensagem de erro de refere, é parâmetro player, se chama arg0 pois vc não deu um nome a ele em @WebParam, e o erro é porque ele não corresponde a resposta. Acrescente uma resposta.
Victor Benjamin
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 15:19:55
|
jubiraco
Debugger
Membro desde: 27/08/2009 15:42:58
Mensagens: 56
Localização: Curitiba
Offline
|
Olá,
você diz fazer isso:
?
Eu já tentei desta maneira e o erro persiste. A única diferença é que na exceção, o "arg0" é substituído por "person".
Tentei executar um código semelhante em outro computador, com outras versões do JDK e JAX-WS e funcionou.
Acredito que seja algum problema de incompatibilidade.
Obrigado,
abraço!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 16:13:50
|
victor.benjamin.guj
What is classpath?
Membro desde: 12/02/2009 14:50:04
Mensagens: 5
Offline
|
Qual servidor de aplicação, versão e JDK que você está utilizando?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 17:30:28
|
victor.benjamin.guj
What is classpath?
Membro desde: 12/02/2009 14:50:04
Mensagens: 5
Offline
|
Provavelmente você está usando JDK 6. Que possui o JAXB. E seu servidor de aplicação possui uma outra versão do JAXB. O que está acontecendo é que ClassLoader está carregando primeiro o JDK. E a versão JAXB da JDK é incompatível com o JAX-WS do servidor. Se o servidor rodar em cima do JDK 5, faça o teste. Acredito que funcionará.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 18:43:40
|
jubiraco
Debugger
Membro desde: 27/08/2009 15:42:58
Mensagens: 56
Localização: Curitiba
Offline
|
Olá,
Provavelmente você está usando JDK 6. Que possui o JAXB. E seu servidor de aplicação possui uma outra versão do JAXB. O que está acontecendo é que ClassLoader está carregando primeiro o JDK. E a versão JAXB da JDK é incompatível com o JAX-WS do servidor. Se o servidor rodar em cima do JDK 5, faça o teste. Acredito que funcionará.
Na verdade, não estou usando servidor algum. Estou publicando os serviços usando a classe Endpoint do próprio JAX-WS.
Eu concordo contigo: também acho que talvez seja algum problema de incompatibilidade entre a versão do JDK 6 que uso (.17 eu acho) e do JAX-WS.
Em outra máquina (a do meu serviço), um código semelhante funcionou.
O problema é Mode.IN.
Se comentar o método que o usa, deixando somente o método que usa o Mode.OUT, o código funciona perfeitamente.
Se substituir o Mode.IN por Mode.INOUT também funciona.
O problema é somente com o IN mesmo
Obrigado,
Abraço!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2011 21:30:06
|
victor.benjamin.guj
What is classpath?
Membro desde: 12/02/2009 14:50:04
Mensagens: 5
Offline
|
Foi o que eu te sugeri na minha primeira resposta. Mas talvez tenha me expressado mal. Quando eu disse acrescentar uma resposta, era para adicionar um parâmetro OUT ou um retorno, que geralmente da no mesmo. Talvez eu tenha usado o termo errado. Invés de resposta saida.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2011 08:45:36
|
jubiraco
Debugger
Membro desde: 27/08/2009 15:42:58
Mensagens: 56
Localização: Curitiba
Offline
|
victor.benjamin.guj,
só agora fui entender o quê vc quis dizer hehehe
Então, quando eu executo o código acima, no computador de casa, tenho aquele problema (que estamos suspeitando do Mode.IN sem OUT).
Porém, se eu testar o seguinte código na máquina da empresa em que trabalho:
Implementação:
Publicação:
Código do Cliente:
O código acima funciona na máquina da empresa, mesmo tendo um único parâmetro com Mode.IN e sem retorno.
Acredito que o problema deve ser mesmo alguma incompatibilidade no meu ambiente...
Se eu descobrir o que está dando pau no meu ambiente, posto a resposta aqui.
Obrigado,
abraço!
|
|
|
 |
|
|