2011-10-05 111 views
1

我想知道是否有某種方法將舊的RPC WSDL文件轉換爲JAX-WS WSDL文件。盡我所能確保我做了功課,但我有點迷失在這裏。將舊的JAX RPC WSDL文件轉換爲JAX WS WSDL文件

從我讀過的內容中,我應該刪除所有'編碼風格'的出現次數並將use="encoded"切換爲use="literal"。由於服務目前不可用,我現在無法運行任何測試。有誰知道這應該夠了嗎?任何洞察力將非常感激。

這是我的WSDL文件:

<?xml version="1.0" encoding="iso-8859-1"?> 
<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:wsScrc.XML" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:wsScrc.XML"> 
<types> 
    <xsd:schema targetNamespace="urn:wsScrc.XML"> 
     <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> 
     <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" /> 
    </xsd:schema> 
</types> 

<message name="XMLRequest"> 
    <part name="parmA" type="xsd:string" /> 
    <part name="parmB" type="xsd:string" /> 
    <part name="parmC" type="xsd:string" /> 
    <part name="parmD" type="xsd:string" /> 
    <part name="parmE" type="xsd:string" /> 
    <part name="parmF" type="xsd:string" /> 
    <part name="parmG" type="xsd:string" /> 
</message> 

<message name="XMLResponse"> 
    <part name="respA" type="xsd:string" /> 
    <part name="respB" type="xsd:string" /> 
    <part name="respC" type="xsd:string" /> 
    <part name="respD" type="xsd:string" /> 
    <part name="respE" type="xsd:string" /> 
</message> 

<message name="monitorRequest"></message> 

<message name="monitorResponse"> 
    <part name="ipServidor" type="xsd:string" /> 
</message> 

<portType name="wsScrc.XMLPortType"> 
    <operation name="XML"> 
     <documentation>Retorna o xml</documentation> 
     <input message="tns:XMLRequest"/> 
     <output message="tns:XMLResponse"/> 
    </operation> 

    <operation name="monitor"> 
     <documentation>Retorna uma mensagem de ok</documentation> 
     <input message="tns:monitorRequest"/> 
     <output message="tns:monitorResponse"/> 
    </operation> 
</portType> 

<binding name="wsScrc.XMLBinding" type="tns:wsScrc.XMLPortType"> 
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <operation name="XML"> 
     <soap:operation soapAction="urn:wsScrc.XML#XML" style="rpc"/> 
     <input> 
      <soap:body use="encoded" namespace="urn:wsScrc.XML"    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
     </input> 

     <output> 
      <soap:body use="encoded" namespace="urn:wsScrc.XML" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
     </output> 
    </operation> 

    <operation name="monitor"> 
     <soap:operation soapAction="urn:wsScrc.monitor#monitor" style="rpc"/> 
     <input> 
      <soap:body use="encoded" namespace="urn:wsScrc.monitor" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
     </input> 

     <output> 
      <soap:body use="encoded" namespace="urn:wsScrc.monitor" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
     </output> 
    </operation> 
</binding> 

<service name="wsScrc.XML"> 
    <port name="wsScrc.XMLPort" binding="tns:wsScrc.XMLBinding"> 
     <soap:address location="http://thisismyaddress/webservicePHP/ws.php"/> 
    </port> 
</service> 
</definitions> 

在此先感謝。

回答

0

我們可以通過這種方式改變WSDL來做同樣的事情。我們不得不使用SAAJ來生成正確的請求並處理響應。

在另一個WS中,我們使用它是不可能的,因爲正文中的XML由Castor生成。最後,我們沒有成功,因爲我們不知道服務器的期望。

總之我會說:這取決於服務器是如何實現的。

+1

謝謝!我很欣賞你的話。 – user980736

+0

@ruffp爲什麼Castor將文字編碼轉換爲文字轉換更困難? – Mat