Webservice não retorna List

18 respostas
kleins

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:

Pedrosa

Voce precisa trabalhar com tipo primitivo.

kleins

[quote=palmadias]tenta fazer assim:

Já tentei… :-o

kleins

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;
    }
rod

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

diegosantiviago

Não entendi o :

Não seria:

diegosantiviago

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;
    }

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.

kleins

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

diegosantiviago

Qual era o problema? :smiley:

kleins

BIOS hehehehe

diegosantiviago

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

kleins

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.

Pedrosa

Pelo o que vi esta gerando um xml é isso?

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

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

kleins

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

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

kleins

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