从xml架构创建java类

时间:2014-09-26 17:40:57

标签: java xml soap wsdl

重点是创建一个简单的白页Web服务,使用SOAP将人员添加到电话簿(称为addPerson())。如果手机中已有一个姓名相同的人 书,应该返回一个错误信息。

我制作了以下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类(两者),但我不知道如何继续...任何建议或提示都会非常感激..

提前致谢

1 个答案:

答案 0 :(得分:1)

我正在使用的eclipse发行版有一个向导,用于从模式创建JAXB类:

  • 文件 - &gt;新 - &gt;其他 - &gt;从架构创建JaxB类。
  • 您必须为生成的输出提供目标包
  • 如果您需要任何自定义
  • ,则可能需要提供绑定文件
  • 这是关于日食分发的详细信息:
  

面向Web开发人员的Eclipse Java EE IDE。

     

版本:Juno Service Release 1      构建ID:20120920-0800&gt;

     

(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>