从 IBM Workilght 服务器获取错误 [这不是函数,它是 \"object\"。]

Getting Error from IBM Workilght Server [It is not a function, it is \"object\".]

使用 IBM Worklight 版本 6.1.0.02-20160314-1430

参考以下 link 在适配器上实施了 AES。 https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/7.1/server-side-development/javascript-adapters/using-java-adapters/

它在我的本地服务器上的 Eclipse 中工作正常。生成的 war 文件和相同的给定服务器部署。当我尝试访问时从服务器获得低于错误响应。

以下内容经过核对。

  1. 从服务器收集 war 文件,交叉检查 class 文件及其存在于

  2. 在 war 文件部署后重新启动服务器

我无法确定错误所在。

来自服务器的错误响应:

{
  "status": 200,
  "invocationContext": null,
  "errorCode": "PROCEDURE_ERROR",
  "errorMsg": "Procedureinvocationerror.EcmaError: TypeError: Cannotcallpropertyencryptinobject[   JavaPackagecom.winjit.EncryptionDecryption ].Itisnotafunction, itis\"object\". (API_Adapter-impl.js#7)",
  "invocationResult": {
    "isSuccessful": false,
    "warnings": [

    ],
    "errors": [
      "Ecma Error: TypeError: Cannot call property encrypt in object [JavaPackage com.winjit.EncryptionDecryption]. It is not a function, it is \"object\". (API_Adapter-impl.js#7)"
    ],
    "responseID": "3161",
    "info": [

    ]
  }
}

将您的 JDK 更新为 1.8

/jre/lib/security

添加两个安全策略 JAR 文件
  1. local_policy.jar
  2. US_export_policy.jar

此错误是由于 JDK 开发服务器 (Eclipse) 和服务器 (Web sphere) 不匹配造成的。服务器 运行 JDK 1.6。我降级了 Eclipse 的 Java 版本。步骤如下(on mac).

  1. Eclipse -> 首选项 -> Java -> 编译器
  2. Select 编译器合规性杠杆 -> 1.6
  3. Eclipse -> 首选项 -> Java -> 安装的 JRE
  4. 添加 JDK 1.6 位置 (/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home)
  5. 申请成功
  6. 重建项目(必要时重启服务器)
  7. 将war文件部署到服务器重新生成bin文件夹

它现在对我有用,正如预期的那样