2012-02-08 68 views
1

我在.Net中定義了一個Web服務,我想使用它來使用它。 當我想從NetBeans中的WSDL創建Web服務客戶端時,出現以下錯誤。錯誤,同時在NetBeans中使用WSDL中的.Net Web服務

Web服務客戶端無法由JAXWS創建:wsimport實用程序。

[錯誤]屬性「任何」已被定義。使用< jaxb:property>來解決此衝突。

這裏是我的WSDL文件的一部分:

<s:element name="Select_Normal_Response"> 
    <s:complexType> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="Select_Normal_Result"> 
       <s:complexType> 
        <s:sequence> 
         <s:any minOccurs="0" maxOccurs="unbounded" namespace="..."/> 
         <s:any minOccurs="1" namespace="" processContents="lax" /> 
        </s:sequence> 
       </s:complexType> 
      </s:element> 
     </s:sequence> 
    </s:complexType> 
</s:element> 
<s:element name="Select_Normal_With_LastIDResponse"> 
    <s:complexType> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="Select_Normal_With_LastIDResult"> 
       <s:complexType> 
        <s:sequence> 
         <s:any minOccurs="0" maxOccurs="unbounded" namespace="..."/> 
         <s:any minOccurs="1" namespace="..." processContents="lax" /> 
        </s:sequence> 
       </s:complexType> 
      </s:element> 
     </s:sequence> 
    </s:complexType> 
</s:element> 

我想是因爲我有兩個S:任何標籤,我得到這個錯誤。 我該如何解決這個問題?

+0

有沒有人解決這個問題? – 2012-06-22 10:26:04

+0

Levan的回答有用嗎? – Heidarzadeh 2012-06-23 05:22:36

回答

1

第二個「s:any」標記具有非標準的Microsoft特定命名空間「urn:schemas-microsoft-com:xml-diffgram-v1」。您可以從wsdl中移除標籤,然後重試生成Web服務客戶端。

+2

它自動生成wsdl,我該如何刪除? – 2012-06-24 18:43:39

1

您需要使用綁定文件給第二個任何唯一的名稱。 創建e.g的bindings.xjb文件:

<jaxws:bindings 
      xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
      jxb:version="2.0" 
      xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
      jxb:extensionBindingPrefixes="xjc" 
    > 
     <jaxws:bindings> 
      <jxb:bindings node="/s:element/.../s:any[@namespace='...']"> 
       <jxb:property name="any2" /> 
      </jxb:bindings> 
     </jaxws:bindings> 
    </jaxws:bindings> 

可以使用

wsimport "http://www.yourwsdl.com/path?wsdl" -b bindings.xjb 

如果你使用Maven的,你可以使用JAXWS-Maven的插件,然後生成的類。使用它將在構建項目時自動構建客戶端類。

例如

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxws-maven-plugin</artifactId> 
      <version>1.9</version> 
      <executions> 
        <execution> 
          <id>webservice</id> 
          <goals> 
            <goal>wsimport</goal> 
          </goals> 
          <configuration> 
            <packageName>com.company.app.wsclient</packageName> 
            <wsdlUrls> 
              <wsdlUrl>http://www.yourwsdl.com/path?wsdl</wsdlUrl> 
            </wsdlUrls> 
            <bindingFiles> 
              <string>${basedir}/src/main/resources/bindings.xjb</string> 
            </bindingFiles> 
          </configuration> 
        </execution> 
      </executions> 
      <dependencies> 
        <dependency> 
          <groupId>com.sun.xml.ws</groupId> 
          <artifactId>jaxws-tools</artifactId> 
          <version>2.2.5</version> 
        </dependency> 
      </dependencies> 
    </plugin>