.NET 2.0アプリケーションによって生成されたWSDLからJDKツールwsimportの持つJava SOAP Webサービスクライアントを生成する問題

StackOverflow https://stackoverflow.com/questions/785945

質問

私は、JDK 6のツールwsimportを使用して、いくつかのSOAP Webサービスのクライアントを生成しようとしています。 WSDLは、.NET 2.0アプリケーションによって生成されました。 .NETの3.Xアプリケーションの場合、それが正常に動作します。

私は実行すると、

wsimport -keep -p mypackage http://myservice?wsdl

それは、このようないくつかのエラーメッセージを示しています:

  

[ERROR]同じ名前のクラス/インタフェース「mypackage.SomeClass」が既に使用されています。   この競合を解決するために、クラスのカスタマイズを使用してください。ライン?? ます。http:// MYSERVICE WSDL

私は(EclipseのWebToolsのプラグインを使用して)軸1.4を使用してWebサービス・クライアントを生成するときます。

誰もが私はwsimportツールを使用するために何ができるか知っていますか?私は本当に「classカスタマイズ」ものが何であるかを理解していません。

役に立ちましたか?

解決

これは今までに解決した場合、私は知らないが、私はこの同じ問題を解決するためにグーグルでいくつかの時間を費やしています。

私はここに修正を発見した - ます。https:// JAX- ws.dev.java.net/issues/show_bug.cgi?id=228する

溶液が-B-XautoNameResolution(スペースなし)でwsimportのを実行することである

他のヒント

この使用してMavenを読んだ人にとって、これは.pomファイルに追加する方法です。構成セクションで引数に注意してください。これは非常に簡単に文書では見られません。これで彼の助けのためのアイザック・スティーブンスに感謝します。

<!-- definition for ERPStandardWork service -->
<execution>
  <id>ERPStandardWorkService</id>
  <goals>
    <goal>wsimport</goal>
  </goals>
  <configuration>
    <!-- this resolves naming conflicts within the wsdl - there are several copies of fault report objects which clash otherwise. -->
    <args>
       <arg>-B-XautoNameResolution</arg>
    </args>
    <wsdlDirectory>${basedir}/src/main/resources/META-INF/wsdl</wsdlDirectory>
    <wsdlFiles>
        <wsdlFile>ERPStandardWork.wsdl</wsdlFile>
    </wsdlFiles>
      <wsdlLocation>${basedir}/src/main/resources/META-INF/wsdl/ERPStandardWork.wsdl
    </wsdlLocation>
    <staleFile>${project.build.directory}/jaxws/ERPStandardWork/.staleFlag
    </staleFile>
  </configuration>
</execution>

上記の受け入れ答えはあなたの問題を解決するだろうが、根本的な原因を修正wouldntは。

以下の例のように - あなたのXSDファイルでcomplexTypeの:あなたのWSDLファイルの操作は、XSDと同じ名前を持っているので、

問題が起きています。すべてのタイプと操作は、ユニークな名前を持っている必要があります。

<xsd:complexType name="SearchDocuments">
      <xsd:sequence>
        <xsd:element name="document" type="ns0:SearchDocumentById" maxOccurs="unbounded"/>
      </xsd:sequence>
</xsd:complexType>

<operation name="SearchDocuments">
      <input wsam:Action="http://controller.xxx.xxx.com/DocumentWS/searchDocumentsRequest" message="tns:searchDocumentsRequest"/>
      <output wsam:Action="http://controller.xxx.xxx.com/DocumentWS/searchDocumentsResponse" message="tns:searchDocumentsResponse"/>
</operation>

だからあなたの操作や種類を確認してください。それらのどれもが、すなわち重複名が同じ名前を持っていないことを確認します。

あなたはおそらく同じパッケージでWSDLファイルからすべてのクラスを生成しています。その場合は、wsimportのの-pオプションを使用して各WSDLファイルに別のターゲットパッケージを指定してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top