Olá a todos…
Pessoal gerei uns webservices com o JAX-WS e fiquei meio encucado com o WSDL que ele gera.
Eu criei o seguinte serviço:
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public class ManterPessoaWS {
@WebMethod
public String obterNome(){
return "Warley Rocha Mendes";
}
@WebMethod
public Pessoa obterPessoa(){
Pessoa p = new Pessoa();
p.setNome("Marta Linda");
p.setEmail("[email removido]");
return p;
}
@WebMethod
public void cadastrarPessoa(@WebParam(name="pessoa") Pessoa pessoa){
System.out.println("Nome: "+ pessoa.getNome());
System.out.println("Email: "+ pessoa.getEmail());
}
}
Os métodos obterPessoa e cadastrarPessoa estão trabalhando com o objeto pessoa que tem apenas os atributos nome e email.
A minha dúvida é que no WSDL gerado não possui o mapeamento do ojeto pessoa. Algo como:
<complexType name="Pessoa">
<sequence>
<element name="nome" type="string" nillable="true"/>
<element name="sobreNome" type="string" nillable="true"/>
</sequence>
</complexType>
Veja o WSDL gerado pelos serviços da minha classe ManterPessoaWS:
<?xml version="1.0" encoding="UTF-8" ?>
- <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.7-b01-.
-->
- <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.7-b01-.
-->
- <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://teste/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://teste/" name="ManterPessoaWSService">
- <types>
- <xsd:schema>
<xsd:import namespace="http://teste/" schemaLocation="http://localhost:8080/teste?xsd=1" />
</xsd:schema>
</types>
- <message name="obterNome">
<part name="parameters" element="tns:obterNome" />
</message>
- <message name="obterNomeResponse">
<part name="parameters" element="tns:obterNomeResponse" />
</message>
- <message name="obterPessoa">
<part name="parameters" element="tns:obterPessoa" />
</message>
- <message name="obterPessoaResponse">
<part name="parameters" element="tns:obterPessoaResponse" />
</message>
- <message name="cadastrarPessoa">
<part name="parameters" element="tns:cadastrarPessoa" />
</message>
- <message name="cadastrarPessoaResponse">
<part name="parameters" element="tns:cadastrarPessoaResponse" />
</message>
- <portType name="ManterPessoaWS">
- <operation name="obterNome">
<input message="tns:obterNome" />
<output message="tns:obterNomeResponse" />
</operation>
- <operation name="obterPessoa">
<input message="tns:obterPessoa" />
<output message="tns:obterPessoaResponse" />
</operation>
- <operation name="cadastrarPessoa">
<input message="tns:cadastrarPessoa" />
<output message="tns:cadastrarPessoaResponse" />
</operation>
</portType>
- <binding name="ManterPessoaWSPortBinding" type="tns:ManterPessoaWS">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
- <operation name="obterNome">
<soap:operation soapAction="" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
- <operation name="obterPessoa">
<soap:operation soapAction="" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
- <operation name="cadastrarPessoa">
<soap:operation soapAction="" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
</binding>
- <service name="ManterPessoaWSService">
- <port name="ManterPessoaWSPort" binding="tns:ManterPessoaWSPortBinding">
<soap:address location="http://localhost:8080/teste" />
</port>
</service>
</definitions>
Sem os mapeamentos uma outra tecnologia consegue consumir os webservices gerados com o JAX-WS sem os mapeamentos dos objetos?
Tem alguma formar de forçar o JAX-WS colocar estes mapeamentos?
Obrigado.