2009-08-26 82 views
0

我正在開發使用CXF-WS 2.2.1的webservices。我已經開發和測試早期的服務,但現在生成的wsdl文件從這裏是較早的一個不同是舊CXF自動生成wsdl

<?xml version="1.0" ?> 
- <wsdl:definitions name="ICodeTableServiceService" targetNamespace="http://codetable.service.esps.cvs.com/" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://codetable.service.esps.cvs.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
- <wsdl:types> 
- <xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://codetable.service.esps.cvs.com/" xmlns:tns="http://codetable.service.esps.cvs.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="ESPSException" type="tns:ESPSException" /> 
- <xsd:complexType name="ESPSException"> 
- <xsd:sequence> 
    <xsd:element name="logged" nillable="true" type="xsd:boolean" /> 
    <xsd:element name="priority" nillable="true" type="xsd:int" /> 
    </xsd:sequence> 
    </xsd:complexType> 
    <xsd:element name="getCodeTableDataMultiple" type="tns:getCodeTableDataMultiple" /> 
- <xsd:complexType name="getCodeTableDataMultiple"> 
- <xsd:sequence> 
    <xsd:element minOccurs="0" name="codeTypeName" type="xsd:string" /> 
    </xsd:sequence> 
    </xsd:complexType> 
    <xsd:element name="getCodeTableDataMultipleResponse" type="tns:getCodeTableDataMultipleResponse" /> 

和舊就像

<?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions name="ICodeTableServiceService" targetNamespace="http://codetable.service.esps.cvs.com/" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://codetable.service.esps.cvs.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
- <wsdl:types> 
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://codetable.service.esps.cvs.com/" xmlns:tns="http://codetable.service.esps.cvs.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="sayHello" nillable="true" type="tns:sayHello" /> 
    <xs:element name="sayHelloResponse" nillable="true" type="tns:sayHelloResponse" /> 
    <xs:element name="ESPSException" type="tns:ESPSException" /> 
- <xs:complexType name="ESPSException"> 
- <xs:sequence> 
    <xs:element name="logged" nillable="true" type="xs:boolean" /> 
    <xs:element name="priority" nillable="true" type="xs:int" /> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:element name="getCodeTableData" nillable="true" type="tns:getCodeTableData" /> 
    <xs:element name="getCodeTableDataResponse" nillable="true" type="tns:getCodeTableDataResponse" /> 

正如你所看到的WSDL與第一行不同。配置或項目中使用的罐子沒有變化。任何人都可以請幫我解釋爲什麼會發生這樣的事情。儘快得到讚賞的是,這將不得不轉移到後天建造。

在此先感謝 Adhir捱罵

回答

3

很多事情可能會導致一些這方面。編碼=「UTF-8」對我來說是陌生的。不知道是什麼會導致某個人出現某種不同的解析器。也許不同的JDK?我不太確定。

其餘的改變看起來像排序模式中的元素/類型和屬性排序順序的差異。在這兩種情況下,答案都是一樣的。這些東西都存儲在內存中的HashMaps中。 HashMap的排序並不能保證,並且在各種情況下可能很容易發生變化。一個不同的解析器(見上)可以以不同的順序調用put(..)來影響事物。不同的JRE可以按不同的順序排列。此外,從getClass()。getMethods()返回的Method []的順序可能會產生影響(例如,已知IBM JDK以與Sun JDK不同的順序返回它們),因爲CXF會以不同的順序。一個不同的編譯器可以按照不同的順序將這些方法放入.class文件中。等....