• 當前位置:首頁 > IT技術 > 其他 > 正文

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


    在XFire1.2以后支持SOAP消息的GZip壓縮傳輸,在合適的地方啟動GZip壓縮可以減少網絡傳輸的數據量,加快速度。

    文章目錄

    1. jar下載地址

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

    在 xfire中使用 GZip來 壓縮 傳輸量_zip壓縮


    或者直接點擊下載最新版本:

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

    2. 服務端

    服務端啟動GZip:在服務端啟動GZip只需將PJL Compressing Filter下的jar包(用到的)導入到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>

    服務端加入GZip時web.xml中增加的配置

    注:根據web.xml文法定義,這個定義必須位于servlet定義之前。

    二、客戶端啟用GZip:客戶端啟動GZip只要將客戶端的GZip的屬性設為true卻可。代碼如下:

    3.客戶端

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

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

    // 創建service對象
    Service serviceModel = new ObjectServiceFactory().create(ServiceInf.class, null,
    namespace,null);
    XFireProxyFactory serviceFactory = new XFireProxyFactory();
    // 獲取服務對象
    ServiceInf service = (ServiceInf) serviceFactory.create(serviceModel, serviceURL);
    // 獲取客戶端代理
    Client client = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();
    /**
    * 此屬性作用:開啟GZip壓縮傳輸
    * 客戶端配置屬性影響:當服務端沒有啟用GZip,客戶端啟用請求GZip壓縮時,會產生SOAP解析錯誤
    * 服務端配置屬性影響:服務端這個配置不管配不配置(也就是說:如果服務端啟動了GZip壓縮功能,客戶端是否啟用GZip都沒有影響)
    */
    // 啟動response壓縮
    client.setProperty(CommonsHttpMessageSender.GZIP_RESPONSE_ENABLED, Boolean.TRUE);
    // 啟動request壓縮
    client.setProperty(CommonsHttpMessageSender.GZIP_RESPONSE_ENABLED,Boolean.TRUE);
    // 同時啟動response和request壓縮
    client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,Boolean.TRUE);
    // 忽略超時
    client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");
    // 調用服務 //這里的nciicCompare是服務端接口 accreditFile是秘鑰 reqXML2請求報文
    String data = service.nciicCompare("","");

    注:在同時啟用時,不必再分別啟用response和request的GZip壓縮。
    注意,當服務端沒有啟用GZip,客戶端啟用請求GZip壓縮時,會產生SOAP解析錯誤,如果服務端啟動了GZip壓縮功能,客戶端是否啟用GZip都沒有影響。

    推薦企業級xfire搭建
    ???IDEA快速 實現 SpringMVC 整合xfire 發布 WebService 服務??


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

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码