JAX-RPC 中的自定义 http headers 请求在 websphere 8 中不起作用

Custom http headers in JAX-RPC request not working in websphere 8

以下场景适用于 IBM JDK 和 IBM JAX-RPC 实施。

要求是在使用 WebSphere 作为容器的 JAX-RPC 请求中发送几个客户 header 属性。我的客户端中设置了以下代码。

HashMap headers = new HashMap();
headers.put("fid-app","Test");
headers.put("someKey","someValue");
stub._setProperty(Constants.REQUEST_TRANSPORT_PROPERTIES, headers);

我试图从我的机器上测试客户端(将 WebSphere 瘦客户端添加到类路径),我能够看到 http headers 正在正确传递。相同的代码部署在 WebSphere 容器中时不起作用。

当我在本地测试和容器测试中启用跟踪日志时,我能够看到 Websphere 试图从 ThreadLocal 获取 REQUEST_TRANSPORT_PROPERTIES 属性,但 HashMap 正在通过我的本地测试返回容器中返回 null。

出现此问题的原因可能是什么?我们是否需要在容器中设置任何其他属性以启用请求传输 headers?

谢谢。

原来问题与 JAX-RPC 或 WebSphere 无关。我们一直在使用代理 class,它使用 hystrix 来处理存根调用。在我的本地测试中,我禁用了 hystrix,所以它工作正常。在启用了hystrix 且执行策略设置为THREAD 的容器环境中。因此,当 header 参数设置为存根时,它存储在与 WebSphere 尝试加载它们时试图从中检索的线程不同的线程中。这是根本问题。切换到 hystrix 执行策略 SEMAPHORE 并且运行良好。