在IBM Bluemix

时间:2016-10-15 10:08:19

标签: node.js soap wsdl ibm-cloud node-soap

我正在使用部署在IBM Bluemix上的node.js应用程序strong-soap(node-soap的分支)。通过加载本地wsdl文件创建soap客户端soap.createClient,它在我们的开发人员本地计算机上都能正常工作。但是,当项目部署到Bluemix时,将创建客户端而不提供任何服务。在soap.createClient创建客户端期间没有发生错误,但client.describe()为空{},并且无法调用任何服务或方法。

我已检查wsdl是否已找到并正确加载,fs.existsSync表示该文件存在。

我已尝试在Bluemix上实时调试应用程序并逐步执行代码,不会抛出任何错误,但客户端没有任何操作。我很难过,有人可以帮忙吗?

日志文件只有一个错误:SOAP service was not correctly initialized in the client.,它是从下面的代码返回的。 Stenaline是来自wsdl的服务名称,因此我的localmachine 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);
  });
};

2 个答案:

答案 0 :(得分:0)

这看起来像是强肥皂中的一个错误。

切换到使用https://github.com/vpulim/node-soap中的node-soap并解决问题。

答案 1 :(得分:0)

在AWS Lambda上使用strong-soap时遇到同样的问题,这也是通过交换node-soap

解决的