在WebSphere Application Server 8.5中禁用JAX-WS客户端的分块传输编码

时间:2017-04-21 22:41:50

标签: java web-services jax-ws websphere-8

在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客户端代码中禁用分块传输编码?

3 个答案:

答案 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传输”策略以取消选中“启用分块传输编码”复选框。然后将此自定义策略集分配给您的服务客户端。

详细说明可在https://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_wsspspthttp.html

找到

答案 2 :(得分:0)

您可以应用策略集并选择禁用分块。 enter image description here