WebService

E ai pessoal…

Estou iniciando, na verdade aprendendo ainda, a desenvolver um webservice, estou utilizando netbeans 6.8. Comecei criando um webservice por ele, achei bem facil, minha duvida é o resultado q o cliente vai receber. Por exemplo, o cliente teria uma chamada “listaClientes”, o webservice pesquisaria no banco e teria um List<Cliente>, mas quero q o cliente receba um xml com este resultado, quero q todos os restornos sejam em xml pq os clientes estarao utilizando outras linguagens delphi, php, etc… entao nao posso retornar um objeto…

Como devo fazer retorno, tenho que pegar o list transformar em xml e todos os metodos retornariam uma String do xml ?

[quote=vdb]E ai pessoal…
Estou iniciando, na verdade aprendendo ainda, a desenvolver um webservice, estou utilizando netbeans 6.8. Comecei criando um webservice por ele, achei bem facil, minha duvida é o resultado q o cliente vai receber. Por exemplo, o cliente teria uma chamada “listaClientes”, o webservice pesquisaria no banco e teria um List<Cliente>, mas quero q o cliente receba um xml com este resultado, quero q todos os restornos sejam em xml pq os clientes estarao utilizando outras linguagens delphi, php, etc… entao nao posso retornar um objeto…
Como devo fazer retorno, tenho que pegar o list transformar em xml e todos os metodos retornariam uma String do xml ?
[/quote]

Imagino que esteja utilizando JAX-WS para construir seus WebServices no Netbeans…
Sua implementção em Java retorna Objetos, seja uma String um Cliente ou uma lista. De resto o java fornece ferramentas que irão gerar artefatos que fazem o trabalho “sujo”, como serializar estes objetos de retorno em XML, gerar o wsdl, etc.


@WebService(name = "MeuWS")
public class MeuWS {
    
      @WebMethod(operationName = "obterClientes")
      public List&lt;Cliente&gt;getClientes() {
           return listaDeClientes;
      }

      @WebMethod(operationName = "clientePorId")
      public Cliente getClienteById(@WebParam(name = "id") Integer id) {
           return new Cliente();
      }

}

Entao este codigo que vc passou como exemplo é a forma que estou fazendo. Mas meu cliente que ira consumir este webservice progrma em delphi, entao ele nao tem objetos Cliente ou List<Cliente>, ele precisa receber um xml,
sendo assim, acho q o retorno do metodo nao pode ser “Cliente”.

    @WebMethod(operationName = "clientePorId")  
       public Cliente getClienteById(@WebParam(name = "id") Integer id) {  
            return new Cliente();  
       }  

Minha duvida é se o retorno do metodo devo retornar a String do xml, ou tem alguma configuracao ou ferramenta faça isso ?

bombbr estava com aquela duvida pq toda hora que eu nao utilizava tipo primitivo ele me dava erro, mas reiniciei o glassfish e agora esta funcionando.

Agora tenho outra duvida.

O resultado foi esse

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;S:Body&gt;
        &lt;ns2:multiplyResponse xmlns:ns2="http://ws.com/"&gt;
            &lt;return&gt;
                &lt;contato&gt;casa&lt;/contato&gt;
                &lt;fone&gt;11111&lt;/fone&gt;
            &lt;/return&gt;
            &lt;return&gt;
                &lt;contato&gt;com&lt;/contato&gt;
                &lt;fone&gt;2222&lt;/fone&gt;
            &lt;/return&gt;
            &lt;return&gt;
                &lt;contato&gt;cel&lt;/contato&gt;
                &lt;fone&gt;333&lt;/fone&gt;
            &lt;/return&gt;
        &lt;/ns2:multiplyResponse&gt;
    &lt;/S:Body&gt;
&lt;/S:Envelope&gt;

Este é o resultado de um List<Telefone>, tem como alterar o <return> para o nome da classe ?

A maioria das plataformas oferece uma maneira de suportar SOAP de forma transparente via JAX-WS. Dá uma olhada nesse tutorial: http://www.seducaotecnologica.com.br/tutorial-soa-passo-a-passo-1

Ola pessoal…

O webservice esta funcionando agora, mas gostaria de alterar a tag <return> para o nome da classe

 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;  
 &lt;S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&gt;  
     &lt;S:Body&gt;  
         &lt;ns2:multiplyResponse xmlns:ns2="http://ws.com/"&gt;  
             &lt;return&gt;  
                 &lt;contato&gt;casa&lt;/contato&gt;  
                 &lt;fone&gt;11111&lt;/fone&gt;  
             &lt;/return&gt;  
             &lt;return&gt;  
                 &lt;contato&gt;com&lt;/contato&gt;  
                 &lt;fone&gt;2222&lt;/fone&gt;  
             &lt;/return&gt;  
             &lt;return&gt;  
                 &lt;contato&gt;cel&lt;/contato&gt;  
                 &lt;fone&gt;333&lt;/fone&gt;  
             &lt;/return&gt;  
         &lt;/ns2:multiplyResponse&gt;  
     &lt;/S:Body&gt;  
 &lt;/S:Envelope&gt; 

Gostaria que ficasse assim:

&lt;telefones&gt;  
    &lt;contato&gt;casa&lt;/contato&gt;  
    &lt;fone&gt;11111&lt;/fone&gt;  
&lt;/telefones&gt;  
&lt;telefones&gt;  
     &lt;contato&gt;com&lt;/contato&gt;  
     &lt;fone&gt;2222&lt;/fone&gt;  
&lt;/telefones&gt;