从 Worklight 6.2 升级生产 MobileFirst 7 服务器,适配器调用不起作用

Posted

技术标签:

【中文标题】从 Worklight 6.2 升级生产 MobileFirst 7 服务器,适配器调用不起作用【英文标题】:Production MobileFirst 7 Server upgrade from Worklight 6.2, Adapter call not working 【发布时间】:2015-05-07 06:46:58 【问题描述】:

我们有一个与 Worklight 6.2 服务器一起工作的 MobileFirst 应用程序 - 也用于生产。我们正在使用 http 适配器:<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">

目前我们正在将生产服务器更改为 7.0.0。在开发服务器上,我们可以测试我们的应用程序并且所有功能都正常。我们在构建配置中使用生产服务器创建了 .war,并与 android .wlapp 一起上传。现在,当应用程序尝试调用生产服务器上的任何适配器函数时,我们会收到 404。 invokeProcedure onFailure 返回 UNEXPECTED_ERROR。这是与:

服务器版本:7.0.0.00.20150312-0731 项目 WAR 版本:7.0.0.00.20150402-2001 适配器名称:XXXXX。版本:7.0.0.00.20150402-2001 应用:XXXXX-android-0.9.7,版本:7.0.0.00.20150402-2001

我们没有在应用程序中启用安全性。 是否必须在服务器上启用某些东西才能允许旧类型适配器调用? 当我们使用升级的 MobileFirst Development Studio 7.0.0.00.20150430 作为开发平台进行测试时 - 相同的服务器版本,我们得到相同的 404(找不到上下文),但是尝试使用授权/v1/clients/instance 而不是 /应用程序/服务/api/XXXXX/android/查询

服务器升级应该解决这个问题吗?我们注意到有可用的更新。

服务器在 https 连接上,但在 WL 6.2 上是一样的。

【问题讨论】:

使用相同的服务器版本和工作室版本。提供messages.log,提供更完整的错误信息。 您好,我们已将服务器更新为与工作室相同的版本。只要未签名,我们就可以成功测试 Android 应用程序。但是使用签名的应用程序并将 publicSigningKey 添加到 android 配置到 application-descriptor.xml 时,应用程序与服务器的连接失败。这是 Android 日志:[link]m.uploadedit.com/ba3c/1431097202119.txt 【参考方案1】:

根据 cmets 和提供的 messages.log 中的描述,很明显您正在尝试使用应用程序真实性保护。

此功能在 v6.2 中以某种方式工作,而在 v6.3 及更高版本中以不同方式工作。 从 cmets 看来,您只是添加了 publickSigningKey - 这已经不够了。

请参阅更新的应用程序真实性保护教程以了解后续步骤:https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/authentication-security/application-authenticity-protection/

一般步骤:

    使用安全测试设置 authenticationConfig.xml 在 application-descriptor.xml 中的 environment 节点中添加安全测试 将 publicSigningKey 添加到 <publicSigningKey> 元素 添加应用包名<packageName>元素

我相信您缺少第 4 步。 请注意,您现在还可以启用扩展真实性模式;按照教程中的说明进行操作。

关于第 3 步的注意事项:显然,当您导出已签名的 .apk 文件时,必须使用用于生成 publicSigningKey 的相同密钥库...否则会出现不匹配,并且真实性质询将失败。


在您的 authenticationConfig.xml 中,确保您有可用的 securityTest(= not 像您在下面的 cmets 中提供的文件中一样被注释掉。

在您的 application-descriptor.xml 中,您缺少 Android 环境元素中的 securityTest 属性:<android version="0.9.9"> 更改为 <android version="0.9.9" securityTest="customTests">

【讨论】:

你好,伊丹,感谢您的快速回答。我的配置文件看起来像这样 [link]m.uploadedit.com/ba3c/1431099240756.txt 在我的答案底部查看我的注释,了解您正在使用的签名密钥以及您必须进行的验证。 它是否正确配置了我上面附加的 authenticationConfig.xml?当我单击 android 环境时,我已经使用 Eclipse 中的“提取公共签名密钥”功能生成了 。然后我为 Android 工具使用相同的密钥文件 -> 导出签名的应用程序包。 不是。不应注释掉 customTests 安全测试。在 authenticationConfig.xml 中。此外,application-descriptor.xml 中的 android 环境中缺少它:securityTest="customTests" 感谢您的支持。在 authenticationconfig.xml 添加以下配置(来自文档)后,我可以构建签名的应用程序并分发:

以上是关于从 Worklight 6.2 升级生产 MobileFirst 7 服务器,适配器调用不起作用的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.2。分析拓扑。主节点和数据节点

IBM Worklight - 如何从 Mac OS 的 6.2 切换回 6.1 版? [关闭]

IBM Worklight 6.1 开发者版下载链接

有没有办法使用 worklight 6.2 或 phonegap 混合应用程序从 android 和 ios 中的另一个应用程序启动一个应用程序?

IBM worklight 6.2 - 如何在应用程序中保存文件?

在 Worklight 6.2 中拨打电话