使用WSDL生成项目

时间:2012-02-16 03:34:45

标签: java eclipse soap wsdl soa

我正在尝试通过使用eclipse来使用wsdl来生成项目来创建SOA服务。所以我在eclipse中选择了New,然后选择了Service(来自wsdl)并且我打开了一个向导,所以在该向导中我选择了现有的wsdl作为选项。我使用该向导导入了我的wsdl来生成两个项目 - 一个是TrackIntlService,另一个是TrackIntlServiceImpl,但是这两个项目中没有一个包含任何类文件,我总是得到Codegen failed with the following exception的错误。 有没有具体的方法呢?

这是我下面的wsdl文件 -

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="TrackIntlService" targetNamespace="http://www.host.com/CommercialPlace/marketing/v1/services" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tns="http://www.host.com/CommercialPlace/marketing/v1/services" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <types>
        <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.host.com/CommercialPlace/marketing/v1/services">
            <xs:simpleType name="AckValue">
                <xs:annotation>
                    <xs:documentation>
                        Indicates whether the error is a severe error
                        (causing the request to fail) or an
                        informational error (a warning)
                        that should be
                        communicated to the user.
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="CommercialPlaceService" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Success">
                        <xs:annotation>
                            <xs:documentation>
                                The request was processed successfully,
                                but
                                something occurred that may affect
                                your application or the user.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="Failure">
                        <xs:annotation>
                            <xs:documentation>
                                The request that triggered the error was
                                not
                                processed successfully. When a
                                serious application-level error
                                occurs,
                                the error is returned instead of the
                                business data.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="Warning">
                        <xs:annotation>
                            <xs:documentation>
                                The request that triggered the error was
                                processed successfully but with some
                                warnings.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="PartialFailure">
                        <xs:annotation>
                            <xs:documentation>
                                The request that triggered the error was
                                processed successfully but with some
                                warnings.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>

            <xs:complexType abstract="true" name="BaseRequest">
                <xs:annotation>
                    <xs:documentation>
                        This is the base class for request container for
                        all service operations.
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="CommercialPlaceService" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:sequence>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="extension" type="tns:ExtensionType"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType abstract="true" name="BaseResponse">
                <xs:annotation>
                    <xs:documentation>
                        Base response container for all service
                        operations. Contains error information
                        associated with the request.
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="CommercialPlaceService" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="ack" type="tns:AckValue">
                        <xs:annotation>
                            <xs:documentation/>
                            <xs:appinfo>
                                <CallInfo>
                                    <AllCalls/>
                                    <Returned>Always</Returned>
                                </CallInfo>
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="errorMessage" type="tns:ErrorMessage">
                        <xs:annotation>
                            <xs:documentation>
                                Information for an error or warning that
                                occurred when host processed the
                                request.
                            </xs:documentation>
                            <xs:appinfo>
                                <CallInfo>
                                    <AllCalls/>
                                    <Returned>Conditionally</Returned>
                                </CallInfo>
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="version" type="xs:string">
                        <xs:annotation>
                            <xs:documentation/>
                            <xs:appinfo>
                                <CallInfo>
                                    <AllCalls/>
                                    <Returned>Always</Returned>
                                </CallInfo>
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="timestamp" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation/>
                            <xs:appinfo>
                                <CallInfo>
                                    <AllCalls/>
                                    <Returned>Always</Returned>
                                </CallInfo>
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="extension" type="tns:ExtensionType"/>
                </xs:sequence>
            </xs:complexType>
            <xs:simpleType name="ErrorCategory">
                <xs:annotation>
                    <xs:documentation>
                        Documentation goes here.
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="SOACommon" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="System"/>
                    <xs:enumeration value="Application"/>
                    <xs:enumeration value="Request"/>
                </xs:restriction>
            </xs:simpleType>
            <xs:complexType name="ErrorData">
                <xs:annotation>
                    <xs:documentation>
                        Documentation goes here
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="SOACommon" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="errorId" type="xs:long"/>
                    <xs:element name="domain" type="xs:string"/>
                    <xs:element minOccurs="0" name="subdomain" type="xs:string"/>
                    <xs:element name="severity" type="tns:ErrorSeverity"/>
                    <xs:element name="category" type="tns:ErrorCategory"/>
                    <xs:element name="message" type="xs:string"/>
                    <xs:element minOccurs="0" name="exceptionId" type="xs:token"/>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="parameter" type="tns:ErrorParameter"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="ErrorMessage">
                <xs:annotation>
                    <xs:documentation>
                        Documentation goes here
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="SOACommon" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:sequence>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="error" type="tns:ErrorData"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="ErrorParameter">
                <xs:annotation>
                    <xs:documentation>
                        Documentation goes here
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="SOACommon" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:simpleContent>
                    <xs:extension base="xs:string">
                        <xs:attribute name="name" type="xs:string" use="optional"/>
                    </xs:extension>
                </xs:simpleContent>
            </xs:complexType>
            <xs:simpleType name="ErrorSeverity">
                <xs:annotation>
                    <xs:documentation>
                        Documentation goes here.
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="SOACommon" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="Error"/>
                    <xs:enumeration value="Warning"/>
                </xs:restriction>
            </xs:simpleType>
            <xs:complexType name="ExtensionType">
                <xs:annotation>
                    <xs:documentation>
                        Documentation goes here
                    </xs:documentation>
                    <xs:appinfo>
                        <typeLibrarySource library="CommercialPlaceService" namespace="http://www.host.com/CommercialPlace/services"/>
                    </xs:appinfo>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="id" type="xs:positiveInteger"/>
                    <xs:element name="version" type="xs:string"/>
                    <xs:element name="contentType" type="xs:string"/>
                    <xs:element name="value" type="xs:string"/>
                    <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
                </xs:sequence>
            </xs:complexType>
            <xs:element name="getVersionRequest" type="tns:GetVersionRequest"/>
            <xs:complexType name="GetVersionRequest">
                <xs:annotation>
                    <xs:documentation>
                        Document goes here
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:BaseRequest">
                        <xs:sequence/>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:element name="getVersionResponse" type="tns:GetVersionResponse"/>
            <xs:complexType name="GetVersionResponse">
                <xs:annotation>
                    <xs:documentation>
                        Document goes here
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:BaseResponse">
                        <xs:sequence/>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>

            <xs:element name="getLocationByIpRequest" nillable="true" type="tns:GetLocationByIpRequest"/>
            <xs:complexType name="GetLocationByIpRequest">
                <xs:annotation>
                    <xs:documentation>
                        The client IP address in the readable format
                        (string format)
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:BaseRequest">
                        <xs:sequence>
                            <xs:element maxOccurs="1" minOccurs="1" name="ipAddress" type="xs:string"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="LocationType">
                <xs:annotation>
                    <xs:documentation>This defines a user's geo location information</xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="country" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The ISO standard two-letter country code</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="region" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>This is a generic field that stores country's specific region information. For example, it's the State for US, the Province for Canada, etc. </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="city" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the city. </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="zipCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>This field contains country-specific postal code</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="1" minOccurs="1" name="latitude" type="xs:float">
                        <xs:annotation>
                            <xs:documentation>The latitude of the city in decimail degrees format.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="1" minOccurs="1" name="longitude" type="xs:float">
                        <xs:annotation>
                            <xs:documentation>The longitude of the city in decimal degrees format.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="metroCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The metro code that the city belongs to.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="areaCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The phone area code of the city.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
            <xs:element name="getLocationByIpResponse" nillable="true" type="tns:GetLocationByIpResponse"/>
            <xs:complexType name="GetLocationByIpResponse">
                <xs:annotation>
                    <xs:documentation>
                        Defines the getLocationByIp response object.
                        It contains a single location information
                        that matches the user's IP address.
                    </xs:documentation>

                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:BaseResponse">
                        <xs:sequence>
                            <xs:element maxOccurs="1" minOccurs="0" name="location" type="tns:LocationType"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <!-- GCS: Geographic Coordinate System: latitude & longitude -->
            <xs:complexType name="GCSInfo">
                <xs:sequence>
                    <xs:element maxOccurs="1" minOccurs="1" name="latitude" type="xs:float">
                        <xs:annotation>
                            <xs:documentation>The geo latitude of a user's device.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="1" minOccurs="1" name="longitude" type="xs:float">
                        <xs:annotation>
                            <xs:documentation>The geo longitude of a user's device.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="1" minOccurs="1" name="radius" type="xs:float">
                        <xs:annotation>
                            <xs:documentation>The radius that defines a circular searching area that is centered at the user's device.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="1" minOccurs="0" name="radiusUnit" type="xs:token">
                        <xs:annotation>
                            <xs:documentation>
                            Specifies the unit of radius as one of these options: mile or km (kilometer). If this element is missing, the default is mile.
                        </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
            <xs:element name="getLocationRequest" nillable="true" type="tns:getLocationRequest"/>
            <xs:complexType name="getLocationRequest">
                <xs:annotation>
                    <xs:documentation>
                        Defines the getLocation request object. GCS
                        stands for Geographic Coordinate Systems. It has
                        three required fields: the latitude, longitude
                        of current user's device location and the radius
                        that defines a circular area centered at the
                        user's device location.
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:BaseRequest">
                        <xs:sequence>
                            <xs:element maxOccurs="1" minOccurs="1" name="gcsInfo" type="tns:GCSInfo">
                                <xs:annotation>
                                    <xs:documentation>
                                        It specifies the GCS information:
                                        latitude and longitude of a user's
                                        device, the radius and its unit.
                                    </xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:element name="getLocationResponse" nillable="true" type="tns:getLocationResponse"/>
            <xs:complexType name="getLocationResponse">
                <xs:complexContent>
                    <xs:extension base="tns:BaseResponse">
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="location" type="tns:LocationType">
                                <xs:annotation>
                                    <xs:documentation>
                                        A list of locations that are
                                        within the circular searching
                                        area if any is found.
                                    </xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
        </xs:schema>
    </types>
    <message name="getVersionRequest">
        <part name="versionRequest" element="tns:getVersionRequest">
        </part>
    </message>
    <message name="getVersionResponse">
        <part name="versionResponse" element="tns:getVersionResponse">
        </part>
    </message>
    <message name="getLocationResponse">
        <part name="byGCSResponse" element="tns:getLocationResponse">
    </part>
    </message>
    <message name="getLocationByIpRequest">
        <part name="byIpRequest" element="tns:getLocationByIpRequest">
    </part>
    </message>
    <message name="getLocationRequest">
        <part name="byGCSRequest" element="tns:getLocationRequest">
    </part>
    </message>
    <message name="getLocationByIpResponse">
        <part name="byIpResponse" element="tns:getLocationByIpResponse">
    </part>
    </message>
    <portType name="TrackIntlServicePort">
        <operation name="getVersion">
            <wsdl:documentation>
                Documentation goes here.
            </wsdl:documentation>
            <input message="tns:getVersionRequest">
            </input>
            <output message="tns:getVersionResponse">
            </output>
        </operation>
        <operation name="getLocationByIp">
            <input message="tns:getLocationByIpRequest">
            </input>
            <output message="tns:getLocationByIpResponse">
            </output>
        </operation>
        <operation name="getLocation">
            <input message="tns:getLocationRequest">
            </input>
            <output message="tns:getLocationResponse">
            </output>
        </operation>
    </portType>
    <binding name="TrackIntlServiceHttpBinding" type="tns:TrackIntlServicePort">
        <http:binding verb="POST"/>
        <operation name="getVersion">
            <http:operation location="/getVersion"/>
            <input>
                <mime:content part="versionRequest" type="application/x-www-form-urlencoded"/>
            </input>
            <output>
                <mime:content part="versionResponse" type="text/xml"/>
            </output>
        </operation>
        <operation name="getLocationByIp">
            <http:operation location="/getLocationByIp"/>
            <input>
                <mime:content part="byIpRequest" type="application/x-www-form-urlencoded"/>
            </input>
            <output>
                <mime:content part="byIpResponse" type="text/xml"/>
            </output>
        </operation>
        <operation name="getLocation">
             <http:operation location="/getLocation"/>
                <input>
                    <mime:content part="byGCSRequest" type="application/x-www-form-urlencoded"/>
                </input>
                <output>
                    <mime:content part="byGCSResponse" type="text/xml"/>
                </output>
        </operation>
    </binding>
    <binding name="TrackIntlServiceSOAPBinding" type="tns:TrackIntlServicePort">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="getVersion">
            <soap:operation soapAction="http://www.host.com/CommercialPlace/tax/v1/services/getVersion"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        <operation name="getLocationByIp">
            <soap:operation soapAction="http://www.host.com/CommercialPlace/marketing/v1/services/getLocationByIp"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        <operation name="getLocation">
            <soap:operation soapAction="http://www.host.com/CommercialPlace/marketing/v1/services/getLocation"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="TrackIntlService">
        <wsdl:documentation>
            <version>1.0.0</version>
        </wsdl:documentation>
        <port name="TrackIntlServiceSOAPPort" binding="tns:TrackIntlServiceSOAPBinding">
            <soap12:address location="http://svcs.host.com/services/marketing/v1/TrackIntlService"/>
        </port>
        <port name="TrackIntlServiceHttpPort" binding="tns:TrackIntlServiceHttpBinding">
            <http:address location="http://svcs.host.com/services/marketing/v1/TrackIntlService"/>
        </port>
    </service>
</definitions>

任何建议都会受到赞赏吗?

1 个答案:

答案 0 :(得分:0)

WSDL的第529行有错误。而不是:

<soap12:address location="http://svcs.host.com/services/personalization/v1/TrackingIntlService"/>

应该是:

<soap:address location="http://svcs.host.com/services/personalization/v1/TrackingIntlService"/>