真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ApacheCXF中如何壓縮WebService數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Apache CXF中如何壓縮Web Service數(shù)據(jù),文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)專(zhuān)注于瑞金企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站制作。瑞金網(wǎng)站建設(shè)公司,為瑞金等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

在現(xiàn)實(shí)應(yīng)用中有些時(shí)候會(huì)有比較大的數(shù)據(jù)對(duì)象需要傳輸,或者在一個(gè)比較慢的網(wǎng)絡(luò)環(huán)境下發(fā)布調(diào)用web service,此時(shí)可以通過(guò)壓縮數(shù)據(jù)流的方式來(lái)減小數(shù)據(jù)包的大小,從而提高web service的性能。下面來(lái)看看怎樣來(lái)做到這一點(diǎn)。

1. 首先模擬一個(gè)可以存放大數(shù)據(jù)的pojo對(duì)象,這個(gè)對(duì)象可以通過(guò)構(gòu)造參數(shù)給定的size來(lái)模擬一個(gè)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接口類(lèi),和普通的接口定義沒(méi)有什么區(qū)別。

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實(shí)現(xiàn)類(lèi)

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. 測(cè)試類(lèi),這片文章使用了JUnit測(cè)試類(lèi)來(lái)做測(cè)試。setUpBeforeClass方法用來(lái)啟動(dòng)Service, testGetBigData方法用來(lái)測(cè)試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來(lái)壓縮和解壓縮數(shù)據(jù)包。

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. 運(yùn)行此unit test,可以在日志中看到數(shù)據(jù)包前后大小和內(nèi)容。

上述就是小編為大家分享的Apache CXF中如何壓縮Web Service數(shù)據(jù)了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站標(biāo)題:ApacheCXF中如何壓縮WebService數(shù)據(jù)
當(dāng)前路徑:http://weahome.cn/article/pcsddc.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部