2012-02-08 4 views
1

.NETで定義されたWebサービスがあり、Javaを使用して消費します。 NetBeansでWSDLからWebサービスクライアントを作成する場合、次のエラーが発生します。NetBeansのWSDLから.Net Webサービスを使用中にエラーが発生しました。

Webサービスクライアントは、JAXWS:wsimportユーティリティでは作成できません。

[ERROR]プロパティ[Any]は既に定義されています。この競合を解決するには、< jaxb:property>を使用してください。私はこのエラーを取得し、任意のタグ:

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

私は2つのSを持っているので、私は思う:

は、ここに私のWSDLファイルの一部です。 これを修正するにはどうすればよいですか?

+0

誰でもこれを解決しますか? –

+0

はLevanの答えです。 – Heidarzadeh

答えて

1

2番目の「s:any」タグには、非標準のMicrosoft固有の名前空間「urn:schemas-microsoft-com:xml-diffgram-v1」があります。 wsdlからタグを削除し、Webサービスクライアントの生成を再試行できます。

+2

自動的にwsdlが生成されますが、どうすれば削除できますか? –

1

第2のものに固有の名前を付けるには、バインディングファイルを使用する必要があります。

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

あなたは、あなたがMavenを使用する場合はJAXWS-のmaven-プラグインを使用することができます

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

を使用してクラスを構築することができます: は、例えばbindings.xjbファイルを作成します。これを使用すると、プロジェクトをビルドするときに自動的にクライアントクラスが構築されます。

<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> 
関連する問題