从 IBM Workilght Server 获取错误 [它不是函数,它是“对象”。]

Posted

技术标签:

【中文标题】从 IBM Workilght Server 获取错误 [它不是函数,它是“对象”。]【英文标题】:Getting Error from IBM Workilght Server [It is not a function, it is \"object\".] 【发布时间】:2017-09-19 05:46:27 【问题描述】:

使用 IBM Worklight 版本 6.1.0.02-20160314-1430

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

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

以下内容经过交叉检查。

    从服务器收集战争文件,交叉检查类文件及其存在

    部署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 版本并且适配器中的 Java 代码是在另一个版本中开发的,则可能会发生这种情况。你能验证一下吗? 【参考方案1】:

将您的 JDK 更新到 1.8

/jre/lib/security

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

【讨论】:

【参考方案2】:

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

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

它现在按预期为我工作

【讨论】:

以上是关于从 IBM Workilght Server 获取错误 [它不是函数,它是“对象”。]的主要内容,如果未能解决你的问题,请参考以下文章

使用安全测试的 IBM Worklight 适配器

IBM WebSphere Application Server XXE漏洞(CVE-2020-4949)预警

从 IBM Z/OS 获取日志

如何从 IBM Cloud 函数中获取远程 IP

如何通过SQL从IBM db2中的查询中获取列名

IBM Worklight - 无法显示使用 SQL 适配器检索到的数据