私たちは、Web サービスと顧客の間に wso2esb サーバーを配置する過程にあります。wsdl ファイルのインポートとインクルードに問題があります。
移行を簡単にするために、取得したすべての wsdl および xsd ファイルを esb サーバー上のディレクトリにコピーすると考えました (ただし、wso2esb ソフトウェアの外部)。esb でサービスを作成する際に、「ソース WSDL を指定」を使用して wsdl ファイルを参照するようになりました。
これは wsdl を示していますが、(正確には) 作成したものではありません。したがって、「useOriginalwsdl=true」、「modifyUserWSDLPortAddress=true」、「showAbsoluteSchemaURL=true」を使用しています。
私たちの wsdl の 1 つで、次のコードを取得しました。
<xs:schema targetNamespace="http: //www.egem.nl/StUF/wsdl/zkn0201.wsdl">
<xs:import schemaLocation="xsd/stuf0204.xsd" namespace="http://www.egem.nl/StUF/StUF0204"/>
<xs:import schemaLocation="xsd/zkn0201.msg.xsd" namespace="http://www.egem.nl/StUF/sector/zkn/0201"/>
</xs:schema>
上記のパラメーターを設定すると、サービスの wsdl に次のように表示されます。
<xs:schema targetNamespace="http://www.egem.nl/StUF/wsdl/zkn0201.wsdl">
<xs:import namespace="http://www.egem.nl/StUF/StUF0204" schemaLocation="HAEM_TEST?xsd=xsd/stuf0204.xsd"/>
<xs:import namespace="http://www.egem.nl/StUF/sector/zkn/0201" schemaLocation="HAEM_TEST?xsd=xsd/zkn0201.msg.xsd"/>
</xs:schema>
しかし、「http:// ...../sevices/HAEM_TEST?xsd=xsd/zkn0201.msg.xsd」で wsdl を照会すると、xsd の内容が返されません。xsd は、サービスによって使用される実際の wsdl に関連するディスク上に存在しますが、次のようになります。
ディスク上:
$ ls -lR /some/path/to/my/resource
.:
drwx------. 2 wnproesb01 wnproesb01 4096 Apr 17 23:15 xsd
-rwx------. 1 wnproesb01 wnproesb01 9498 Apr 16 18:31 zkn0201.wsdl
./xsd:
-rwx------. 1 wnproesb01 wnproesb01 13885 Apr 16 18:31 stuf0204.xsd
-rwx------. 1 wnproesb01 wnproesb01 63982 Apr 16 18:31 zkn0201.msg.xsd
これらの xsd ファイルには、それ自体と比較した相対パスで指定されたインポートまたはインクルードが含まれる場合があります。
大きな問題: wso2esb によって提示されるように、この wsdl を有効で機能する wsdl にするには、どうすればよいですか? インクルード/インポートされたすべての xsd を含みます。