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

2019-09-30 15:29发布

在上IBM WebSphere应用服务器之上运行的Web应用程序(WAS)V8.5.5.11,有一个JAX-WS客户端件(使用的是WAS内置JAX-WS组件)调用外部Web服务。

对于具有HTTP主体大于32 KB的任何web服务调用,WAS将使用传输编码分块。 不幸的是,外部Web服务无法处理的块传输编码,并且将错误输出。

如何禁用分块WAS JAX-WS客户端代码中的传输编码?

Answer 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-皂处理程序功能于客户端/



Answer 2:

我无法找到一个方法来编程方式禁用块传输编码的内置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



Answer 3:

您可以将策略集,并选择禁用分块。



文章来源: Disable chunked transfer-encoding for JAX-WS Client in WebSphere Application Server 8.5