IBM Bluemix にデプロイされた node.js アプリケーションでstrong-soap (node-soap のフォーク) を使用しています。SOAP クライアントはsoap.createClient
、ローカルの wsdl ファイルをロードすることによって作成され、開発者のローカル マシン上ですべて正しく動作します。ただし、プロジェクトが Bluemix にデプロイされると、クライアントはサービスなしで作成されます。クライアントの作成中にエラーは発生しませんsoap.createClient
が、client.describe()
空{}
であり、サービスまたはメソッドを呼び出すことはできません。
wsdl が正しく読み込まれfs.existsSync
、ファイルが存在することを確認しました。
Bluemix でアプリのライブ デバッグを試み、コードをステップ実行しました。エラーはスローされませんが、クライアントには何も操作がありません。私は困惑しています、誰か助けてもらえますか?
ログ ファイルにはエラーが 1 つだけあります。SOAP service was not correctly initialized in the client.
これは、以下のコードから返されます。Stenaline
はwsdlのサービス名であるため、私のローカルマシンclient.Stenaline
では正しく設定されており、操作を呼び出すことができます.
コネクト機能が充実
var soapClient = null;
var connect = function (create_callback) {
var options = {
endpoint: config.endpoint
};
var wsdl = './src/config/contract/www.stenaline.com.sloop.ws.2014.10.wsdl';
if (!fs.existsSync(wsdl)) {
let err = new Error('Failed to locate SOAP wsdl file.');
err.path = wsdl;
return process.nextTick(function () {
create_callback(err);
});
}
soap.createClient(wsdl, options, function (err, client) {
if (err) return create_callback(err);
client.setSecurity(wsSecurity);
soapClient = client;
debug('client', client.describe());
if (!client.Stenaline) {
let err = new Error('SOAP service was not correctly initialized in the client.');
return process.nextTick(function () {
create_callback(err);
});
}
create_callback(null, client);
});
};