2017-04-21 50 views
0

在运行于IBM WebSphere Application Server(WAS)V8.5.5.11之上的Web应用程序中,有一个JAX-WS客户端部分(使用WAS内置JAX-WS组件)调用外部Web服务。在WebSphere Application Server 8.5中禁用JAX-WS客户端的分块传输编码

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

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

回答

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

0

你需要创建一个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.htmlorhttp://www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-client-side/

+0

我已经试过这种方法。但是在IBM WebSphere App Server的JAX-WS实现中,没有'HTTPConstants.CHUNKED',我也找不到对应的。 – thebat

+0

WAS v8.5.5 JAX-WS的实现是Axis2 ..所以'ctx.put(“__ CHUNKED__”,“false”);''可以作为'HTTPConstants.CHUNKED =“__ CHUNKED __”' – titou10

+0

我试过'ctx.put (“__CHUNKED__”,“false”);',并且我已经证实这个属性确实设置好了,但是WAS似乎忽略了它,它对传输编码没有影响。 – thebat

0

找到您可以将策略集,并选择禁用分块。 enter image description here

相关问题