當(dāng)前位置:首頁(yè) > IT技術(shù) > 其他 > 正文

在 xfire中使用 GZip來(lái) 壓縮 傳輸量
2022-09-06 22:42:05


在XFire1.2以后支持SOAP消息的GZip壓縮傳輸,在合適的地方啟動(dòng)GZip壓縮可以減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,加快速度。

文章目錄

1. jar下載地址

??https://sourceforge.net/projects/pjl-comp-filter/??

在 xfire中使用 GZip來(lái) 壓縮 傳輸量_zip壓縮


或者直接點(diǎn)擊下載最新版本:

??https://sourceforge.net/projects/pjl-comp-filter/files/latest/download??

2. 服務(wù)端

服務(wù)端啟動(dòng)GZip:在服務(wù)端啟動(dòng)GZip只需將PJL Compressing Filter下的jar包(用到的)導(dǎo)入到web的/WEB-INF/lib目錄下。

并在web.xml文件中增加如下配置:

<filter>
<filter-name>CompressingFilter</filter-name>
<filter-class>
com.planetj.servlet.filter.compression.CompressingFilter
</filter-class>
<init-param>
<param-name>debug</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>statsEnabled</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CompressingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

服務(wù)端加入GZip時(shí)web.xml中增加的配置

注:根據(jù)web.xml文法定義,這個(gè)定義必須位于servlet定義之前。

二、客戶端啟用GZip:客戶端啟動(dòng)GZip只要將客戶端的GZip的屬性設(shè)為true卻可。代碼如下:

3.客戶端

早期:客戶端調(diào)用的修改(不建議使用)

= "http://192.168.0.225/ldaxfire/services/LDAService";
String namespace = "http://test.yicha.cn/adreport";

// 創(chuàng)建service對(duì)象
Service serviceModel = new ObjectServiceFactory().create(ServiceInf.class, null,
namespace,null);
XFireProxyFactory serviceFactory = new XFireProxyFactory();
// 獲取服務(wù)對(duì)象
ServiceInf service = (ServiceInf) serviceFactory.create(serviceModel, serviceURL);
// 獲取客戶端代理
Client client = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();
/**
* 此屬性作用:開(kāi)啟GZip壓縮傳輸
* 客戶端配置屬性影響:當(dāng)服務(wù)端沒(méi)有啟用GZip,客戶端啟用請(qǐng)求GZip壓縮時(shí),會(huì)產(chǎn)生SOAP解析錯(cuò)誤
* 服務(wù)端配置屬性影響:服務(wù)端這個(gè)配置不管配不配置(也就是說(shuō):如果服務(wù)端啟動(dòng)了GZip壓縮功能,客戶端是否啟用GZip都沒(méi)有影響)
*/
// 啟動(dòng)response壓縮
client.setProperty(CommonsHttpMessageSender.GZIP_RESPONSE_ENABLED, Boolean.TRUE);
// 啟動(dòng)request壓縮
client.setProperty(CommonsHttpMessageSender.GZIP_RESPONSE_ENABLED,Boolean.TRUE);
// 同時(shí)啟動(dòng)response和request壓縮
client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,Boolean.TRUE);
// 忽略超時(shí)
client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");
// 調(diào)用服務(wù) //這里的nciicCompare是服務(wù)端接口 accreditFile是秘鑰 reqXML2請(qǐng)求報(bào)文
String data = service.nciicCompare("","");

注:在同時(shí)啟用時(shí),不必再分別啟用response和request的GZip壓縮。
注意,當(dāng)服務(wù)端沒(méi)有啟用GZip,客戶端啟用請(qǐng)求GZip壓縮時(shí),會(huì)產(chǎn)生SOAP解析錯(cuò)誤,如果服務(wù)端啟動(dòng)了GZip壓縮功能,客戶端是否啟用GZip都沒(méi)有影響。

推薦企業(yè)級(jí)xfire搭建
???IDEA快速 實(shí)現(xiàn) SpringMVC 整合x(chóng)fire 發(fā)布 WebService 服務(wù)??


本文摘自 :https://blog.51cto.com/g

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >