エラー
Java プロジェクトで wsimport を使用して、3 つの SOAP Web サービスのソースを生成しています。最初の 2 つは正常に動作します。JAX-WS Maven プラグインを使用して WSDL ファイルを取得し、対応する Java ソース ファイルを生成します。
これは、1 つの Web サービスでは失敗します。次のエラーが表示されます。
[jaxws:wsimport]
Processing: /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
jaxws:wsimport args: [-s, /home/me/NetBeansProjects/Admin/AdminWeb/target/generated-sources/jaxws-wsimport, -d, /home/me/NetBeansProjects/Admin/AdminWeb/target/classes, -verbose, -catalog, /home/me/NetBeansProjects/Admin/AdminWeb/src/jax-ws-catalog.xml, -wsdllocation, http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx?WSDL, -target, 2.0, -extension, -Xnocompile, /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl]
parsing WSDL...
src-resolve.4.2: Error resolving component 's:schema'. It was detected that 's:schema' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1'. If this is the incorrect namespace, perhaps the prefix of 's:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1'.
line 80 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1
undefined element declaration 's:schema'
line 80 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
undefined element declaration 's:schema'
line 127 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
undefined element declaration 's:schema'
line 142 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
犯人
この WSDL ファイルと動作する WSDL ファイルの違いは、エラー メッセージに示されている行 80、127、および 142 行にあります。
<s:element ref="s:schema" />
注: wsdl ファイルのルート要素は、"s" 名前空間を次のように定義します。
xmlns:s="http://www.w3.org/2001/XMLSchema"
私が試したこと
私は自分の研究をしました。「使用しないでください<s:element ref="s:schema" />
」、「インポートタグを使用する」、古い java.net フォーラム (削除される前に、現代の Java 知識のアレキサンドリア図書館の放火)。
問題のタグを含む要素のすぐ内側に次のインポートステートメントを入れてみました:
<s:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="http://www.w3.org/2001/XMLSchema.xsd" />
. wsimport は私に新しいエラーを与えます:[jaxws:wsimport] Processing: /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl jaxws:wsimport args: [-s, /home/me/NetBeansProjects/Admin/AdminWeb/target/generated-sources/jaxws-wsimport, -d, /home/me/NetBeansProjects/Admin/AdminWeb/target/classes, -verbose, -catalog, /home/me/NetBeansProjects/Admin/AdminWeb/src/jax-ws-catalog.xml, -wsdllocation, http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx?WSDL, -target, 2.0, -extension, -Xnocompile, /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl] parsing WSDL... Element "{http://www.w3.org/2001/XMLSchema}annotation" shows up in more than one properties. line 248 of http://www.w3.org/2001/XMLSchema.xsd The following location is relevant to the above error line 242 of http://www.w3.org/2001/XMLSchema.xsd Property "Any" is already defined. Use <jaxb:property> to resolve this conflict. line 108 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl The following location is relevant to the above error line 109 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl Property "Any" is already defined. Use <jaxb:property> to resolve this conflict. line 184 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl The following location is relevant to the above error line 185 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl Property "Any" is already defined. Use <jaxb:property> to resolve this conflict. line 199 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl The following location is relevant to the above error line 200 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
このエラーで参照されている行 108 と 109 は次のとおりです。(行 184-5、199-200 は同様です)
<s:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax" /> <s:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax" />
jaxws-maven-plugin を 1.10 から 2.2 にアップグレードしてみました。同じ問題。
- 考えられる解決策は次のとおりです。JAX-WS Maven プラグインを使用してこれを実装する方法を見つけようとしています。ヒントはありますか?
結論
何か案は?さらに必要な情報はありますか?簡潔にするために pom.xml ファイルと Service.asmx.wsdl ファイルは省略しましたが、より重要な情報が含まれている場合は含めることができます。
ありがとうございました!
補遺
これが潜在的な回答者に役立つ場合は 、同じ問題を抱えている別の人がいます。さらに別の同様の問題があります。この記事の 内容はよくわかりませんが、SOAP XML を手動で解析する必要があることを暗示しているようです。ホラー!