コマンドプロンプトから以下のコマンドを使用してwsimport
を使用しようとすると、正常に機能します。
wsimport -d generated C:\Users\generated\wsdlfile.xml
ただし、以下のようにwsimport
を使用しようとすると、次のエラーがスローされます。
wsimport -d generated https://example.com/exampleService.svc?wsdl
Failed to read the WSDL document: https://example.com/exampleService.svc?wsdl, because 1) could not find the document; /2) the document could not be read; 3) the root element of the document is not <wsdl:definitions>.
[ERROR] failed.noservice=Could not find wsdl:service in the provided WSDL(s): At least one WSDL with at least one service definition needs to be provided.
Failed to parse the WSDL.
ブラウザからURLにアクセスできますが、同じことが他のシステムから(私のPCから)機能しています。その理由は何でしょうか?
Windowsでこの問題を解決するには、次のようにすべてのプロキシ設定を無効にします。
Internet Options > Connections > Lan Settings > Disable all check boxes
注:プロキシ設定の例外としてlocalhostまたはIPアドレスを追加するだけでは機能しませんでした。
私にも同じ問題があり、私の場合、問題はWSDLファイルのエンコーディングでした。
ブラウザからhttps://example.com/exampleService.svc?wsdl
を開いてみてください。完全に解析できる場合は、すべてのxmlコンテンツが表示されます。そうでない場合、少なくともFirefoxは問題の場所を示します。
この状況で誰かを助けることを願っています
これは、使用しているJavaのバージョンに問題があるようです...
この問題を解決するには、Javaバージョン "1.7.x"であることを確認してください。
このオプションをwsimportに設定してみてください:-XdisableSSLHostnameVerification
どれ
Wsdlsをフェッチしている間、SSLホスト名検証を無効にします。
以下のpom.xmlを使用します。
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.9</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
<configuration>
<!-- Keep generated files -->
<keep>true</keep>
<!-- Package name -->
<packageName>org.example.echo.service.skeleton</packageName>
<!-- generated source files destination -->
<sourceDestDir>src/main/Java</sourceDestDir>
<wsdlUrls>
<wsdlUrl>
**http://localhost:8080/soapWebService/services/PersonServiceImpl?wsdl**
</wsdlUrl>
</wsdlUrls>
</configuration>
</plugin>
</plugins>
</build>