在IBM WebSphere Application Server(WAS)V8.5.5.11之上运行的Web应用程序中,有一个调用外部Web服务的JAX-WS客户端部件(使用WAS内置JAX-WS组件) 。
对于HTTP主体大于32 KB的任何Web服务调用,WAS将使用分块传输编码。不幸的是,外部Web服务无法处理分块传输编码,并且会出错。
如何在WAS JAX-WS客户端代码中禁用分块传输编码?
答案 0 :(得分:1)
您需要创建一个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-soap-handler-in-client-side/
答案 1 :(得分:0)
我找不到以编程方式禁用WAS 8.5.5.x的内置JAX-WS的分块传输编码的方法。但我确实找到了通过WAS“管理控制台”禁用它的方法。
基本上,您需要复制“WSHTTPS默认”策略集,并修改“HTTP传输”策略以取消选中“启用分块传输编码”复选框。然后将此自定义策略集分配给您的服务客户端。
找到答案 2 :(得分:0)