【问题标题】:Custom http headers in JAX-RPC request not working in websphere 8JAX-RPC 请求中的自定义 http 标头在 websphere 8 中不起作用
【发布时间】:2016-08-20 03:21:48
【问题描述】:

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

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: java web-services jakarta-ee websphere jax-rpc


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2016-02-10
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      相关资源
      最近更新 更多