2014-05-05 17 views
6

Ho codice Java WebService nella mia eclissi. Ho usato @WebService @WebMethod, @XmlElements, @XmlType, @XmlAccessorTypeSbarazzarsi di <arg0>

Ora sto generando WSDL utilizzando java2ws comando dal quadro CXF. Ecco il comando

F:\....\code\java2wsdl>java2ws -o CustomerVxRR.wsdl -d <myOutputDir> -wsdl -cp <myClassesFolder> <ServiceImpl class> 

mio file WSDL contqins agr0 come nome che io non voglio, perché quando io sono l'importazione di SoapUI. Sta aggiungendo tag attorno al campo.

Qui fa parte WSDL con arg0

<xs:schema ..... > 
<xs:complexType name="myServiceMethodName"> 
<xs:sequence> 
<xs:element minOccurs="0" name="arg0" type="tns:ServiceInputClassName"/> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="ServiceInputClassName"> 
<xs:sequence> 
<xs:element minOccurs="0" name="EmpID" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 
</xz:schema> 

Ecco l'oggetto di richiesta che si genera nel SoapUI

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://customeroffer.manage.ws.hello.my.com/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <cus:myServiceMethodName> 
     <!--Optional:--> 
     <arg0> 
      <EmpID >123456</EmpID> 
     </arg0> 
     </cus:myServiceMethodName> 
    </soapenv:Body> 
</soapenv:Envelope> 

Se rimuovo tag ottengo questa risposta:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
     <faultcode>soap:Client</faultcode> 
     <faultstring>Unmarshalling Error: unexpected element (uri:"", local:"EmpID"). Expected elements are &lt;{}empid></faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

Non voglio mantenere arg0 nella richiesta XML

risposta

11

L'ho appena risolto dopo alcune ricerche sul mio codice. L'unica cosa che è richiesta per cambiare <arg0> è che abbiamo bisogno di usare l'annotazione @WebParam per dichiarare il nome del cliente invece di "arg0".

Ad esempio:

il mio nome del servizio è getEmpDetail e EmpID è il parametro di ingresso al servizio allora ecco la dichiarazione richiesta nella classe di servizio impl:

public Emp getEmpDetail(@WebParam(name="EmpDetail") String EmpId) 

dopo generatingfrom WSDL la richiesta XML sarà simile sotto

<ns:getEmpDetail> 
<EmpDetail> 
<EmdID>?</EmpID> 
</EmpDetail> 
<ns:getEmpDetail> 
+0

aggiunta a quanto sopra, potrebbe essere necessario assicurarsi che la classe di interfaccia ha la @WebParam se ne hai uno. –

Problemi correlati