Webservice não retorna List

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

tenta fazer assim:

Voce precisa trabalhar com tipo primitivo.

[quote=palmadias]tenta fazer assim:

Já tentei… :-o

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

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

Não entendi o :

Não seria:

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

[/quote]

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.

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=“http://ws.system4.org.br/”>

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

Qual era o problema? :smiley:

BIOS hehehehe

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

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

[quote=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.[/quote]

Pelo o que vi esta gerando um xml é isso?

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

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

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…

[quote=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
[/quote]

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

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

[quote=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[/quote]