Webservice não retorna List

18 respostas
K

Amigos.

Estou tentando fazer comq ue um WebService Retorne List.

No metodo de cima, retornando apenas o objeto dá certo… agora quando faço pra retornar um List… sem chance…

Estou usando NetBeans e Glassfish.

Quem puder ajudar… valeu…

Abaixo segue o código :

@WebMethod(operationName = "getPessoaFisica")
    public PessoaFisica getPessoaFisica(){
        
        
        PessoaFisica p = new PessoaFisica();
        p.setNome("Rodrigo");
        p.setSobrenome("Klein");
        p.setIdade(30);
        
        
        
        
      return p;  
    }
    
    @WebMethod(operationName = "getPessoaFisicaList")
    public List getPessoaFisicaList(){
        
        List l = (List) null;
        
      

        PessoaFisica p = new PessoaFisica();
        p.setNome("Rodrigo");
        p.setSobrenome("Klein");
        p.setIdade(30);
        
        
        
       
        l.add(p);
        
        PessoaFisica p2 = new PessoaFisica();
        p2.setNome("Rodrigo");
        p2.setSobrenome("Klein");
        p2.setIdade(30);
        
        
        l.add(p2);
            
            
      
        
        
        
      return l;  
    }

E o erro.

getPessoaFisicaList Method invocation

Method parameter(s)
Type Value
Service invocation threw an exception with message : null; Refer to the server log for more details

Exceptions details : java.lang.reflect.InvocationTargetException

18 Respostas

P

tenta fazer assim:

P

Voce precisa trabalhar com tipo primitivo.

K

[quote=palmadias]tenta fazer assim:

Já tentei… :-o

K

Está dando o mesmo erro.

@WebMethod(operationName = "op")
    public java.lang.String[] op() {
        //TODO grava o seu código de implementação aqui:
        
        String[] x = new String[2];
        
        x[1]= "a";
        x[2]= "b";
        
        return x;
    }
R

Eu ja fiz webservices retornando array de objetos e funcionou corretamente.

D

Não entendi o :

Não seria:

D

Nesse caso nao seria:

x[0] = "a"; x[1] = "b";

Está dando o mesmo erro.

@WebMethod(operationName = "op")
    public java.lang.String[] op() {
        //TODO grava o seu código de implementação aqui:
        
        String[] x = new String[2];
        
        x[1]= "a";
        x[2]= "b";
        
        return x;
    }

P

Talves vc consiga assim se usar o Xtream que tranforma um objeto em String e vice versa:

http://xstream.codehaus.org/tutorial.html

Estara passando uma String um tipo suportado pelos ws e na outra ponta transforma a String Xml em objeto, mas não é muito legal passar um xml dentro de um ws que ja é um xml.

Uma outra opção é gerar um ws do tipo restful e gerar um JSON, a maioria das linguagens dão suporte.

K

Deu certo Galera.
Valeu…

Mas agora outra dúvida…

Se eu tenho meu WS…

Que me retorna

Method returned
java.util.List : >"[br.org.system4.ws.PessoaFisica@1da8c15, >br.org.system4.ws.PessoaFisica@122bed4]"

<ns2:getPessoa1Response xmlns:ns2=“<a href="http://ws.system4.org.br/">http://ws.system4.org.br/</a>”>



27

Rodrigo

Klein





29

odrigo

lein



</ns2:getPessoa1Response>

Uma aplicação qualquer (.NET) vai conseguir consumir este WS mesmo ele referenciando java.util.List ?

Valeu

D

Qual era o problema? :smiley:

K

BIOS hehehehe

D

Você poderia dizer, para todos aprendermos juntos e colocar o código final, porque você fez algumas alterações.

K

Valeu.

Com a Ajuda de vcs acabei conseguindo fazer funcionar…

Mas vc saberia me dizer se retornando o dado dessa forma, qualquer linguagem conseguiria consumir este WS ?
Ou pra este WS ser acessado por .net eu preciso fazer mais algo nele.

Abs

Pedrosa:
Talves vc consiga assim se usar o Xtream que tranforma um objeto em String e vice versa:

http://xstream.codehaus.org/tutorial.html

Estara passando uma String um tipo suportado pelos ws e na outra ponta transforma a String Xml em objeto, mas não é muito legal passar um xml dentro de um ws que ja é um xml.

Uma outra opção é gerar um ws do tipo restful e gerar um JSON, a maioria das linguagens dão suporte.

P

Pelo o que vi esta gerando um xml é isso?

Se for um xml não haverá nenhum problema para ser consumido em .net.

J

Se o cliente que ira consumir seu WS não for java o ideal é não usar Collections como retorno. Algumas linguagens nao entendem esse tipo de conjunto.
Utilize array.

[]´s

K

Saquei.

Uma coisa que estou notando… se eu mandar uma Entity ou uma List de Entityvindo direto do banco como saida dá pau… deve ser por conta dos relacionamentos, certo ?

Então como exemplo… pra retornar qualquer objeto/List vindo do banco eu teria que fazer um outro objeto igual e popular ele com os dados do objeto que vieram do banco ?

Valeu…

jgbt:
Se o cliente que ira consumir seu WS não for java o ideal é não usar Collections como retorno. Algumas linguagens nao entendem esse tipo de conjunto.
Utilize array.

[]´s

B

Poutz!!! Acabou que o cara não postou o código final, nem disse onde era o erro, pra ajudar algum coitado (como eu) que estivesse enrolado no mesmo problema.

Abraço a todos

K

Opa.

Nesses casos eu uso um XML para passar a lista de objetos. Geralmente crio um xml do objeto e um da lista. Ai passo essa lista como retorno.

Abs

bonissauro:
Poutz!!! Acabou que o cara não postou o código final, nem disse onde era o erro, pra ajudar algum coitado (como eu) que estivesse enrolado no mesmo problema.

Abraço a todos

Criado 26 de março de 2009
Ultima resposta 22 de mai. de 2013
Respostas 18
Participantes 7