亚洲一级电影在线观看,九九精品无码专区免费,亚洲AV无码资源在线观看 ,欧美国产高清

如何壓縮Web Service數(shù)據(jù)

時間:2024-07-15 09:39:16 J2EE培訓 我要投稿
  • 相關(guān)推薦

如何壓縮Web Service數(shù)據(jù)

  在現(xiàn)實應(yīng)用中有些時候會有比較大的數(shù)據(jù)對象需要傳輸,或者在一個比較慢的網(wǎng)絡(luò)環(huán)境下發(fā)布調(diào)用web service,此時可以通過壓縮數(shù)據(jù)流的方式來減小數(shù)據(jù)包的大小,從而提高web service的性能。下面yjbys小編為大家準備了關(guān)于如何壓縮Web Service數(shù)據(jù)的文章,歡迎閱讀。

  1. 首先模擬一個可以存放大數(shù)據(jù)的pojo對象,這個對象可以通過構(gòu)造參數(shù)給定的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接口類,和普通的接口定義沒有什么區(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實現(xiàn)類

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

【如何壓縮Web Service數(shù)據(jù)】相關(guān)文章:

Web Service的開發(fā)與應(yīng)用基礎(chǔ)07-12

web數(shù)據(jù)挖掘技術(shù)分析與研究09-06

Web數(shù)據(jù)挖掘技術(shù)探析論文10-22

如何面試Web前端開發(fā)10-10

Flash Web結(jié)構(gòu)之數(shù)據(jù)顯示層介紹07-27

如何由淺入深實踐學習 Web 標準10-10

如何識別和防御Web網(wǎng)頁木馬09-11

如何保證Web服務(wù)器安全06-30

Excel讓如何數(shù)據(jù)按需排序10-01

Excel如何橫向輸入數(shù)據(jù)07-28

主站蜘蛛池模板: 国产精品一区二区无码免费看片| 国产成人av无码精品天堂| 亚洲无线观看| 欧美日韩va| 久久久99久久久国产精品| 婷婷六月综合| a毛片免费看| 2021精品国产自在现线看| 亚洲乱亚洲乱妇| 精品久久久无码人妻字幂| 狠狠躁夜夜躁人人爽天天古典| 国产性色av免费观看| 高清视频在线观看一区二区三区| 蜜桃av色欲a片精品一区| 亚洲婷婷综合色高清在线| 亚洲国产日韩在线视频| 亚洲熟女综合一区二区三区| 国产亚洲熟妇在线视频| 亚洲无码精品视频| 国产日本一区二区三区| 欧洲黑大粗无码免费| 无码一区二区三区免费| 亚洲一区黄色| 国产精品∧v在线观看| 一本大道大臿蕉无码视频| 欧美国产精品不卡在线观看| 久久超碰97中文字幕| 色欲av无码一区二区三区| 精品综合久久久久久97| 思思99re6国产在线播放| 久久精品少妇高潮a片免费观| 国产成人无码精品午夜福利a | 欧美人与动牲交xxxxbbbb| 久久综合精品国产丝袜长腿| 无码少妇一区二区三区免费| 国产精品美脚玉足脚交欧美| 性做久久久久久久久| 中文成人无码精品久久久| 五月婷婷导航| 人人妻人人做人人爽| www.亚洲高清三级片|