中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache CXF中如何壓縮Web Service數據

發布時間:2021-10-29 15:58:49 來源:億速云 閱讀:139 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關Apache CXF中如何壓縮Web Service數據,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在現實應用中有些時候會有比較大的數據對象需要傳輸,或者在一個比較慢的網絡環境下發布調用web service,此時可以通過壓縮數據流的方式來減小數據包的大小,從而提高web service的性能。下面來看看怎樣來做到這一點。

1. 首先模擬一個可以存放大數據的pojo對象,這個對象可以通過構造參數給定的size來模擬一個size大小的字符串。

package com.googlecode.garbagecan.cxfstudy.compress;    public class BigData {            private String name;            private String data;            public BigData() {                }            public BigData(String name, int size) {          this.name = name;          StringBuilder sb = new StringBuilder();          for (int i = 0; i < size; i++) {              sb.append("0");          }          this.data = sb.toString();      }       public String getName() {          return name;      }       public void setName(String name) {          this.name = name;      }       public String getData() {          return data;      }       public void setData(String data) {          this.data = data;      }  }

2. Web Service接口類,和普通的接口定義沒有什么區別。

package com.googlecode.garbagecan.cxfstudy.compress;   import javax.jws.WebMethod;  import javax.jws.WebParam;  import javax.jws.WebResult;  import javax.jws.WebService;   @WebService public interface BigDataService {            @WebMethod     @WebResult BigData getBigData(@WebParam String name, @WebParam int size);  }

3. Web Service實現類

package com.googlecode.garbagecan.cxfstudy.compress;   public class BigDataServiceImpl implements BigDataService {      public BigData getBigData(String name, int size) {          BigData bigData = new BigData(name, size);          return bigData;      }  }

4. 測試類,這片文章使用了JUnit測試類來做測試。setUpBeforeClass方法用來啟動Service, testGetBigData方法用來測試web service。

注意setUpBeforeClass方法中的

factoryBean.getInInterceptors().add(new GZIPInInterceptor());

factoryBean.getOutInterceptors().add(new GZIPOutInterceptor());

和testGetBigData方法中的

endpoint.getInInterceptors().add(new GZIPInInterceptor());

endpoint.getOutInterceptors().add(new GZIPOutInterceptor());

上面兩段代碼就是告訴CXF使用壓縮Interceptor來壓縮和解壓縮數據包。

package com.googlecode.garbagecan.cxfstudy.compress;   import org.apache.cxf.endpoint.Client;  import org.apache.cxf.endpoint.Endpoint;  import org.apache.cxf.frontend.ClientProxy;  import org.apache.cxf.interceptor.LoggingInInterceptor;  import org.apache.cxf.interceptor.LoggingOutInterceptor;  import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  import org.apache.cxf.jaxws.JaxWsServerFactoryBean;  import org.apache.cxf.transport.http.gzip.GZIPInInterceptor;  import org.apache.cxf.transport.http.gzip.GZIPOutInterceptor;  import org.junit.Assert;  import org.junit.BeforeClass;  import org.junit.Test;   public class BigDataServiceTest {       private static final String address = "http://localhost:9000/ws/compress/bigDataService";            @BeforeClass     public static void setUpBeforeClass() throws Exception {          JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();          factoryBean.getInInterceptors().add(new LoggingInInterceptor());          factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());          factoryBean.getInInterceptors().add(new GZIPInInterceptor());          factoryBean.getOutInterceptors().add(new GZIPOutInterceptor());                    factoryBean.setServiceClass(BigDataServiceImpl.class);          factoryBean.setAddress(address);          factoryBean.create();      }       @Test     public void testGetBigData() {          JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();          factoryBean.setAddress(address);          factoryBean.setServiceClass(BigDataService.class);          Object obj = factoryBean.create();                    Client client = ClientProxy.getClient(obj);          Endpoint endpoint = client.getEndpoint();          endpoint.getInInterceptors().add(new GZIPInInterceptor());          endpoint.getOutInterceptors().add(new GZIPOutInterceptor());                    BigDataService service = (BigDataService) obj;          Assert.assertNotNull(service);                    String name = "my big data";          int size = 1024 * 1024 * 10;                    long start = System.currentTimeMillis();          BigData bigData = service.getBigData(name, size);          long stop = System.currentTimeMillis();          System.out.println("Time: " + (stop - start));                    Assert.assertNotNull(bigData);          Assert.assertEquals(name, bigData.getName());          Assert.assertEquals(size, bigData.getData().length());      }  }

5. 運行此unit test,可以在日志中看到數據包前后大小和內容。

上述就是小編為大家分享的Apache CXF中如何壓縮Web Service數據了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福建省| 新干县| 广宁县| 涿州市| 高安市| 永吉县| 安宁市| 镇平县| 左权县| 龙里县| 讷河市| 嘉禾县| 紫阳县| 同江市| 石阡县| 游戏| 昌邑市| 拜城县| 泰安市| 开封县| 横山县| 延川县| 永和县| 浦东新区| 大邑县| 松桃| 通江县| 林州市| 金门县| 赤城县| 永靖县| 泸水县| 九江县| 蒙山县| 登封市| 江华| 富平县| 光泽县| 杂多县| 东乌珠穆沁旗| 英吉沙县|