1

我有两个javascript适配器:adapterA、adapterB

然后我需要调用adapterA,然后adapterA会使用这个API调用adapterB(使用MFP.Server.invokeProcedure,在同一个mfp服务器中)

当我调用 mfp localhost 时,它可以工作

http://localhost:9080/mfp/api/adapters/AdapterA/test

然后我在将 mfp cer 导入到 jre cacerts 后调用 https

它也可以正常工作

https://localhost:443/mfp/api/adapters/AdapterA/test

我的问题是我有 IHS 服务器来重定向 mfp 服务

当我通过 IHS http url 调用 api

http://{domain}/mfp/api/adapters/AdapterA/test

有用

当我通过 IHS https url 调用 api

https://{domain}/mfp/api/adapters/AdapterA/test

mfp 服务器会出现如下错误:

在此处输入图像描述

com.ibm.mfp.server.js.adapter.internal.JavascriptManagerImpl E FWLST0904E:调用过程时引发异常:适配器中的测试:adapterB java.lang.RuntimeException:javax.net.ssl.SSLHandshakeException:com.ibm.jsse2。 util.j:PKIX 路径构建失败:com.ibm.security.cert.IBMCertPathBuilderException:无法在 com.ibm.mfp.server.js.adapter.internal.invocation.JavaScriptIntegrationLibraryImplementation.invokeProcedure(JavaScriptIntegrationLibraryImplementation) 处找到请求目标的有效认证路径.java:255)


但我的 IHS 插件只设置了 http

在此处输入图像描述

如何解决此问题并避免此问题

在此处输入图像描述

谢谢

4

1 回答 1

1

当 MobileFirst 服务器创建请求以到达适配器 B 时,默认行为是根据当前执行请求的 URL 来构建请求。也就是说,它使用最初用于到达适配器 A 的请求,来构建到达目标适配器 B 的请求。

它在案例 1 中运行良好,其中使用“http://..” URL 访问网络服务器。在情况 2 中,MFP1 必须使用“https://..”URL 向网络服务器进行出站呼叫,它需要首先完成与网络服务器的 SSL 握手。如果 MFP1 JVM 缺少网络服务器的证书,它就无法建立 SSL 握手,并可能导致您看到的错误。

在您的情况下,您可以采取两种方法:

  1. 选择将适配器 A 到适配器 B 的调用保留在 MFP1 内部。这可以防止出站“https://”调用,您不会看到问题。此外,这有助于缩短旅行时间并防止网络服务器上的新连接。要启用此设置,请使用 JNDI 属性mfp.adapter.invocation.url。例如,如果将此属性的值设置为“http://localhost:9080/mfp”,则适配器 B 将作为“http://localhost:9080/mfp/api/adapters/adapterB”调用。呼叫保持在本地。有关此属性的更多详细信息,请点击此处
  2. 如果您希望保留对适配器 B 的请求通过使用安全端点的网络服务器,那么您应该确保网络服务器的根证书可用于 MFP1 JVM 的信任存储,以便可以成功建立 SSL 握手。
于 2022-01-10T11:21:58.663 回答