WebService - Configuração dos arquivos .wsdl e .xsd no NetBeans 6.9 e Glassfish v3.0

0 respostas
M

Bom dia a todos.

Estou criando um WebService através do NetBeans 6.9 e Glassfish v3.0, porém, estou com dificuldades em formatar a mensagem de resposta (XML).

Segue os procedimentos realizados:

[list]Criei um projeto Web chamado WebApplicationTeste:[/list]
[img]http://img816.imageshack.us/img816/1679/imagem001o.jpg[/img]

[list]Criei uma classe Pessoa (pojo):[/list]
package br.com.teste;

public class Pessoa {

    private String nome;
    private int idade;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

}
[list]Criei um WebService chamado NewWebService:[/list]
package br.com.teste.ws;

import br.com.teste.Pessoa;
import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class NewWebService {

    @WebMethod(operationName = "getPessoa")
    public Pessoa getPessoa() {
        Pessoa pessoa = new Pessoa();
        pessoa.setNome("Matheus");
        pessoa.setIdade(29);
        return pessoa;
    }

}

Ao chamar o método getPessoa() do WebService, os atributos são apresentados na seguinte ordem: idade e nome. Gostaria de alterar a ordenação dos atributos no arquivo de saída para: nome e idade.
[img]http://img207.imageshack.us/img207/2530/imagem003d.jpg[/img]

Para isso, criei uma pasta chamada wsdl abaixo do diretório WEB-INF e gerei através do assistente do NetBeans os arquivos .wsdl e .xsd (schema XML).[img]http://img23.imageshack.us/img23/2339/imagem002jv.jpg[/img]

Alterei o Schema XML para que os atributos sejam apresentados na ordem correta:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="http://ws.teste.com.br/" 
xmlns:tns="http://ws.teste.com.br/" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="getPessoa" type="tns:getPessoa"/>

  <xs:element name="getPessoaResponse" type="tns:getPessoaResponse"/>

  <xs:complexType name="getPessoa">
    <xs:sequence/>
  </xs:complexType>

  <xs:complexType name="getPessoaResponse">
    <xs:sequence>
      <xs:element name="return" type="tns:pessoa" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="pessoa">
    <xs:sequence>
      <xs:element name="nome" type="xs:string" minOccurs="0"/>
      <xs:element name="idade" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
Também alterei o WebService para apontar o wsdl da pasta WEB-INF.
package br.com.teste.ws;

import br.com.teste.Pessoa;
import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(wsdlLocation="WEB-INF/wsdl/NewWebServiceService.wsdl")
public class NewWebService {

    @WebMethod(operationName = "getPessoa")
    public Pessoa getPessoa() {
        Pessoa pessoa = new Pessoa();
        pessoa.setNome("Matheus");
        pessoa.setIdade(29);
        return pessoa;
    }

}

Ao executar o WebService, a ordem dos atributos não é alterada, ou seja, permanece apresentando a sequência: idade e nome.

Gostaria de saber como devo proceder para que os atributos do XML Response respeitem o schema (.xsd)?

Obrigado.
Matheus

Criado 9 de novembro de 2010
Respostas 0
Participantes 1