2017-04-21 52 views
0

在運行於IBM WebSphere Application Server(WAS)V8.5.5.11之上的Web應用程序中,有一個JAX-WS客戶端部分(使用WAS內置JAX-WS組件)調用外部Web服務。在WebSphere Application Server 8.5中禁用JAX-WS客戶端的分塊傳輸編碼

對於HTTP體大於32 KB的任何Web服務調用,WAS將使用分塊傳輸編碼。不幸的是,外部Web服務不能處理分塊傳輸編碼,並且會出錯。

如何禁用WAS JAX-WS客戶端代碼中的分塊傳輸編碼?

回答

0

我找不到編程方式禁用WAS 8.5.5.x的內置JAX-WS的分塊傳輸編碼。但我確實找到了通過WAS「管理控制檯」禁用它的方法。

基本上,您需要製作一份「WSHTTPS默認」策略集,並修改「HTTP傳輸」策略以取消選中「啓用分塊傳輸編碼」框。然後將此自定義策略集分配給您的服務客戶端。

詳細說明可在https://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_wsspspthttp.html

0

你需要創建一個SOAP JAX-WS處理程序和覆蓋handleMessage方法添加的HTTP標頭是這樣的:

public boolean handleMessage(SOAPMessageContext smc) { 
    ctx.put(HTTPConstants.CHUNKED, "false"); 
    return true; 
} 

這很簡單,它是處理程序和一個簡單的創建一個類的事xml文件來聲明它 檢查https://jax-ws.java.net/articles/handlers_introduction.htmlorhttp://www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-client-side/

+0

我已經試過這種方法。但是在IBM WebSphere App Server的JAX-WS實現中,沒有'HTTPConstants.CHUNKED',我也找不到對應的。 – thebat

+0

WAS v8.5.5 JAX-WS的實現是Axis2 ..所以'ctx.put(「__ CHUNKED__」,「false」);''可以作爲'HTTPConstants.CHUNKED =「__ CHUNKED __」' – titou10

+0

我試過'ctx.put (「__CHUNKED__」,「false」);',並且我已經證實這個屬性確實設置好了,但是WAS似乎忽略了它,它對傳輸編碼沒有影響。 – thebat

0

找到您可以將策略集,並選擇禁用分塊。 enter image description here

相關問題