JAX-RPC请求中的自定义HTTP标头在Websphere 8中不起作用

流行编码器

以下场景适用于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。

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

谢谢。

流行编码器

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章