2015-11-09 41 views
2

我正嘗試在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<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上成功實現了此解決方案?

回答

相關問題