2014-09-26 46 views
2

關鍵是使用SOAP將一個人添加到電話簿(稱爲addPerson())的簡單白頁Web服務。如果電話 中已經有一位姓和名相同的人,則應該返回錯誤消息。從xml模式創建java類

我做了以下的WSDL文件

<?xml version="1.0" encoding="UTF-8"?> 
<definitions name="whitepages" targetNamespace="http://whitepages.ws" 
    xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://whitepages.ws" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> 
    <types> 
     <xsd:schema targetNamespace="http://whitepages.ws" xmlns:tns="http://whitepages.ws"> 
      <xsd:complexType name="personType"> 
       <xsd:sequence> 
        <xsd:element name="address" type="tns:addressType"></xsd:element> 
       </xsd:sequence> 
       <xsd:attribute name="firstName" type="xsd:string"/> 
       <xsd:attribute name="lastName" type="xsd:string"/> 
       <xsd:attribute name="phone" type="xsd:string"/> 
      </xsd:complexType> 
      <xsd:complexType name="addressType"> 
       <xsd:sequence> 
        <xsd:element name="street"> 
         <xsd:complexType> 
          <xsd:sequence/> 
         </xsd:complexType> 
        </xsd:element> 
        <xsd:element name="postcode"> 
         <xsd:complexType> 
          <xsd:sequence/> 
         </xsd:complexType> 
        </xsd:element> 
        <xsd:element name="city"> 
         <xsd:complexType> 
          <xsd:sequence/> 
         </xsd:complexType> 
        </xsd:element> 
       </xsd:sequence> 
      </xsd:complexType> 
      <xsd:element name="person" type="tns:personType"></xsd:element> 
      <xsd:element name="response" type="xsd:string"></xsd:element> 
      <xsd:complexType name="faultType"> 
       <xsd:sequence> 
        <xsd:element name="errorMessage" type="xsd:string"></xsd:element> 
        <xsd:element name="person" type="tns:personType"></xsd:element> 
       </xsd:sequence> 
      </xsd:complexType> 
      <xsd:element name="fault" type="tns:faultType"></xsd:element> 
     </xsd:schema> 
    </types> 
    <message name="whitepagesOperationRequest"> 
     <part name="person" element="tns:person"/> 
    </message> 
    <message name="whitepagesOperationResponse"> 
     <part name="response" element="tns:response"/> 
    </message> 
    <message name="WPFault"> 
     <part name="errorMessage" type="xsd:string"/> 
     <part name="person" element="tns:person"/> 
    </message> 
    <portType name="whitepages"> 
     <operation name="addPerson"> 
      <input name="input1" message="tns:whitepagesOperationRequest"/> 
      <output name="output1" message="tns:whitepagesOperationResponse"/> 
      <fault name="fault1" message="tns:WPFault"/> 
     </operation> 
    </portType> 
    <binding name="whitepagesBinding" type="tns:whitepages"> 
     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
     <operation name="addPerson"> 
      <soap:operation style="document"/> 
      <input name="input1"> 
       <soap:body use="literal"/> 
      </input> 
      <output name="output1"> 
       <soap:body use="literal"/> 
      </output> 
      <fault name="fault1"> 
       <soap:fault name="fault1" use="literal"/> 
      </fault> 
     </operation> 
    </binding> 
    <service name="whitepagesService"> 
     <port name="whitepagesBindingPort" binding="tns:whitepagesBinding"> 
      <soap:address location="http://localhost:${HttpDefaultPort}/service"/> 
     </port> 
    </service> 
</definitions> 

我驗證了XML,現在我需要爲架構的Java類(兩個),但我不知道如何着手...任何建議或提示將非常感激..

在此先感謝

+2

最佳點(或參考實現https://jaxb.java.net/) – Seismoid 2014-09-26 17:44:09

回答

1

,我使用Eclipse分佈從架構創建JAXB類嚮導:

  • 文件 - >新建 - >其他 - >從模式創建JaxB類。
  • 您必須對生成的輸出
  • 您可能需要提供有約束力的文件,如果您需要任何定製
  • 這是對Eclipse發行的詳細信息提供目標包:

適用於Web開發人員的Eclipse Java EE IDE。

版本:朱諾服務發佈1 版本ID:20120920-0800>

(C)版權所有:Eclipse的貢獻者等2005,2012。保留所有權利。 訪問http://www.eclipse.org/webtools

另一種選擇是使用XJC編譯器生成從架構的類。它包含在標準的JDK中。

在任何情況下,你必須將模式定義提取到一個XSD文件,並從WSDL中引用它:

<schema xmlns="http://www.w3.org/2001/XMLSchema"> 
     <import namespace="http://whitepages.ws" schemaLocation="NAME_OF_Your_XSD_FILE.xsd" />    
    </schema> 
開始將看看JAXB規範