Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Pontus

Webservices em Java

Recommended Posts

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?

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.