1

私たちは、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 を含みます。

4

1 に答える 1

0

レジストリを使用して WSDL を保存し、そこから参照できます。これは、ファイル システムに保存するよりもはるかに便利です。

http://madhukaudantha.blogspot.nl/2012/07/wso2-esb-proxy-from-registry.html

また、WSDL インポートのスキーマの場所を正しく定義する方法については、こちらも参照してください。

WSO2 ESB 4.5.0 がガバナンス レジストリからのプロキシ サービスの作成に失敗する

于 2013-04-25T14:01:20.350 に答える