我正在尝试使用WebSphere 8.5.5.2上的JAX-WS在出站SOAP请求上设置自定义标头。以下方法中的BindingProvider是通过JNDI获取的,用于使用@ServiceRef注释声明的服务。
void setHeader(BindingProvider provider, String name, String value) {
Map<String, Object> context = provider.getRequestContext();
Map<String, List<String>> headers = null;
if (context.containsKey(MessageContext.HTTP_REQUEST_HEADERS)) {
headers = (Map<String, List<String>>)
context.get(MessageContext.HTTP_REQUEST_HEADERS);
}
if (headers == null) {
headers = new HashMap<String, List<String>>();
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上成功实施此解决方案?
答案 0 :(得分:0)