我正尝试在WebSphere 8.5.5.2上使用JAX-WS在出站SOAP请求上设置自定义标头。下面方法中的BindingProvider是通过JNDI获取用@ServiceRef注释声明的服务。如何将HTTP头添加到WebSphere 8.5中的JAX-WS请求中?
void setHeader(BindingProvider provider, String name, String value) {
Map context = provider.getRequestContext();
Map> headers = null;
if (context.containsKey(MessageContext.HTTP_REQUEST_HEADERS)) {
headers = (Map>)
context.get(MessageContext.HTTP_REQUEST_HEADERS);
}
if (headers == null) {
headers = new HashMap>();
context.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
}
headers.put(name, Arrays.asList(value));
}
我认为这里的关键与WebSphere有关。如果我不是把HTTP报头到上下文的IBM特定的条目:
com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES
页眉得到妥善安置到SOAP HTTP请求。请注意,如果值不包含在List实例中。
是否有人使用MessageContext.HTTP_REQUEST_HEADERS在WebSphere上成功实现了此解决方案?