在上IBM WebSphere应用服务器之上运行的Web应用程序(WAS)V8.5.5.11,有一个JAX-WS客户端件(使用的是WAS内置JAX-WS组件)调用外部Web服务。
对于具有HTTP主体大于32 KB的任何web服务调用,WAS将使用传输编码分块。 不幸的是,外部Web服务无法处理的块传输编码,并且将错误输出。
如何禁用分块WAS JAX-WS客户端代码中的传输编码?
在上IBM WebSphere应用服务器之上运行的Web应用程序(WAS)V8.5.5.11,有一个JAX-WS客户端件(使用的是WAS内置JAX-WS组件)调用外部Web服务。
对于具有HTTP主体大于32 KB的任何web服务调用,WAS将使用传输编码分块。 不幸的是,外部Web服务无法处理的块传输编码,并且将错误输出。
如何禁用分块WAS JAX-WS客户端代码中的传输编码?
你需要创建一个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.htmlor http://www.mkyong.com/webservices / JAX-WS / JAX-WS-皂处理程序功能于客户端/
我无法找到一个方法来编程方式禁用块传输编码的内置JAX-WS的WAS 8.5.5.x. 但我没有找到一种方法,通过禁用它是“管理控制台”。
基本上,你需要“WSHTTPS默认”策略集的拷贝,并修改了“HTTP传输”的政策,取消选中“启用块传输编码”框。 然后分配设置为您服务客户端这个自定义策略。
详细说明可以在这里找到https://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_wsspspthttp.html
您可以将策略集,并选择禁用分块。