Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Pontus

Webservices em Java

Mensagens Recomendadas

Pontus

Pessoal estou com uma grande dor de cabeça com um problema que me surgiu

Tenho um webservice que devolve 1 Objecto ServResposta

Dentro deste Objecto tenho outro Objecto Resposta e um array com filmes

cada filmes tem Nome, data, actor, actriz

O objecto resposta foi criado de modo a enviar para o cliente mensagens de erro/sucesso do que se passa do lado do servidor

Agora o problema: quando testo o WS  o envelope XML vem com os dados preenchidos e e com a mensagem correcta. No entanto quando os dados sao mostrados a array dos filmes está vazia

Eu executo tudo atraves do eclipse, e lanço o cliente que o eclipse disponibiliza para testes. Alguma sugestão do porque da array chegar à parte do display vazia, quando no envelope XML estão os dados?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Sem mais informação diria que o método responsável por obter os valores do XML está a fazer borrada.

Ou não está a ler no local certo, ou tem um erro que esconde e por isso devolve uma string vazia, ou algo assim.

Faz debug (entra mesmo dentro das classes cliente) no método responsável por obter esse valor e vê se ele está a fazer tudo bem.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pontus

eu já fiz debug

no momento em quem devolvo o objecto o objecto tem a mensagem e a array está preenchida.

eu tb pensei no metodo, mas mesmo quando lanço o webservice pelo eclipse, este abre um cliente. Nesse mesmo cliente criado pelo eclipse eu vejo a mensagem, mas nao vejo os dados do array. No entanto, se for ver o conteudo do xml, os dados estão lá.

Que mais informações precisarias?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Tens de ver ao nível mais baixo, onde o valor do XML é atribuído ao campo que vai ser retornado e que, como tal, deve ter o conteúdo do XML.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Usando  a funcionalidade de debug do Eclipse e fazendo "step into" (para entrar dentro das funções/métodos) a partir da função que usas para receber o valor em causa.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pontus

M6 de facto era a nível  mais baixo que estava a ocorrer o erro.

No entanto mudei de Axis para Axis2 no desenvolvimento dos webservices.

Enquanto o Axis2, no cliente ele me diz que o tipo que vem do WS é JAXBElement, o Axis não o referia.

Será problema do Axis com objectos complexos?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Não tenho a certeza.

O Axis e o Axis2 são diferentes, têm estruturas diferentes, basta ver as classes/stubs/e afins que são gerados, no Axis 2 ficas com uns 2 "mega ficheiros" enquanto no Axis ficas com tudo arrumado em vários ficheiros (um ficheiro por classe) tanto quanto me lembro.

I JAXBElement pode muito bem ser apenas uma class/interface do próprio Axis2 que o Axis não tem por usar outra coisa.

Não é suposto o Axis2 "baralhar-se" com objectos complexos, mas pode ser que seja daí. Tens problemas noutros campos ou só nesse?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pontus

Tinha só ai. Ou seja, quando o webservice me enviava o conteudo do objecto pessoa (por exemplo) vinha tudo vazio.

Agora estou a receber tudo direitinho, por isso a minha duvida se o problema não seria mesmo do Axis e resolvido no Axis2.

Principalmente porque a nivel da programação nada mudou

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Pode ser que sim, que o Axis2 tenha resolvido um conjunto de problemas/limitações que existiam no Axis.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.