WebServices - Nome do método sem as iniciais do pacote
Prezados,
Tenho um web service que preciso que o método não contenha as iniciais do pacote. Estou utilizando JAX-WS e inicialmente, não tenho problemas na execução, porém, o XML enviado pelo Cliente, que propôs a integração, o método não possui o nome do pacote.
O xml enviado pelo cliente é da seguinte forma:
O XML da minha aplicação, o método operation carrega o nome as iniciais do diretório do pacote, que no caso é xsd. Esse xml é o gerado pelo SoapUI. O exemplo abaixo funciona, porém, quando uso o exemplo acima, recebo Cannot find dispatch method for {}operation.
Existe alguma forma de, na declaração do método, remover o nome do pacote com alguma anotação?
O código em questão é o seguinte:
Tenho um web service que preciso que o método não contenha as iniciais do pacote. Estou utilizando JAX-WS e inicialmente, não tenho problemas na execução, porém, o XML enviado pelo Cliente, que propôs a integração, o método não possui o nome do pacote.
O xml enviado pelo cliente é da seguinte forma:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<operation>
<operation xmlns="">
<operationType>CREATE</operationType>
<parameters>
<NTL>3291944031</NTL>
<executionResult>SUCCESS</executionResult>
<errorDescription>SUCCESS : 2014-12-10T15:29:32.0Z</errorDescription>
</parameters>
</operation>
<globalResult xmlns="">SUCCESS</globalResult>
<timeStamp xmlns="">2014-12-10T18:29:36.906Z</timeStamp>
</operation>
</soapenv:Body>
</soapenv:Envelope>
O XML da minha aplicação, o método operation carrega o nome as iniciais do diretório do pacote, que no caso é xsd. Esse xml é o gerado pelo SoapUI. O exemplo abaixo funciona, porém, quando uso o exemplo acima, recebo Cannot find dispatch method for {}operation.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://cleartech.com.br/portability/xsd">
<soapenv:Header/>
<soapenv:Body>
<xsd:operation>
<!--Optional:-->
<operation>
<operationType>?</operationType>
<!--1 or more repetitions:-->
<parameters>
<NTL>?</NTL>
<executionResult>?</executionResult>
<errorDescription>?</errorDescription>
</parameters>
</operation>
<globalResult>?</globalResult>
<errorDescription>?</errorDescription>
<timeStamp>?</timeStamp>
</xsd:operation>
</soapenv:Body>
</soapenv:Envelope>
Existe alguma forma de, na declaração do método, remover o nome do pacote com alguma anotação?
O código em questão é o seguinte:
package br.com.cleartech.portability.xsd;
import br.com.asc.lnp.ejb.TropicoPortOutLocal;
import br.com.asc.tropico.portout.OperationType;
import br.com.asc.tropico.portout.ResultValueType;
import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.datatype.XMLGregorianCalendar;
@WebService(name = "AscLnpIntegrate",
serviceName = "AscLnpIntegrate",
targetNamespace = "http://cleartech.com.br/portability/xsd")
public class AscTropicoIntegration {
@EJB
private TropicoPortOutLocal ejbRef;
public AscTropicoIntegration() { }
@WebMethod(operationName = "operation")
public ResultValueType getOperarion(@WebParam(name = "operation") OperationType operation,
@WebParam (name = "globalResult") ResultValueType resultValueType,
@WebParam (name = "errorDescription") String errorDescription,
@WebParam (name = "timeStamp") XMLGregorianCalendar timeStamp) {
return ejbRef.getOperarion(operation, resultValueType, errorDescription, timeStamp);
}
}
Rodrigo Passos
Curtidas 0
Respostas
Clayton Duran
11/12/2014
Pode ser que a definição do endpoint não está correta.
GOSTEI 0