Disable chunked transfer-encoding for JAX-WS Client in WebSphere Application Server 8.5

会有一股神秘感。 提交于 2019-12-14 03:58:15

问题


In a web application that runs on top of IBM WebSphere Application Server (WAS) V8.5.5.11, there is a JAX-WS client piece (using WAS built-in JAX-WS component) that calls an external web service.

For any web service call with an HTTP body larger than 32 KB, WAS will use chunked transfer-encoding. Unfortunately, the external web service cannot handle chunked transfer encoding, and will error out.

How do I disable chunked transfer-encoding within WAS JAX-WS client code?


回答1:


You need to create a SOAP JAX-WS handler and override the handleMessagemethod to add an http header like this:

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

That's easy, it's a matter of creating a class for the handler and a simple xml file to declare it Check https://jax-ws.java.net/articles/handlers_introduction.htmlor http://www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-client-side/




回答2:


I couldn't find a way to programmatically disable chunked transfer encoding for the built-in JAX-WS of WAS 8.5.5.x. But I did find a way to disable it through WAS "Administrative Console".

Basically, you need to make a copy of "WSHTTPS default" policy set, and modify the "HTTP transport" policy to uncheck the box for "Enable chunked transfer encoding". Then assign this custom policy set to your service client.

Detailed instructions can be found at https://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_wsspspthttp.html




回答3:


You can apply a policy set and choose to disable chunking.



来源:https://stackoverflow.com/questions/43553057/disable-chunked-transfer-encoding-for-jax-ws-client-in-websphere-application-ser

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!