• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 如何壓縮Web Service數據

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

        如何壓縮Web Service數據

          在現實應用中有些時候會有比較大的數據對象需要傳輸,或者在一個比較慢的網絡環境下發布調用web service,此時可以通過壓縮數據流的方式來減小數據包的大小,從而提高web service的性能。下面yjbys小編為大家準備了關于如何壓縮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,可以在日志中看到數據包前后大小和內容。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【如何壓縮Web Service數據】相關文章:

        Web Service的開發與應用基礎07-12

        web數據挖掘技術分析與研究09-06

        Web數據挖掘技術探析論文10-22

        如何面試Web前端開發10-10

        Flash Web結構之數據顯示層介紹07-27

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

        如何識別和防御Web網頁木馬09-11

        如何保證Web服務器安全06-30

        Excel讓如何數據按需排序10-01

        Excel如何橫向輸入數據07-28

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲欧美久久精品1区2区 | 亚洲制服祙在线 | 亚洲一区日韩一区欧美一区a | 日本婬片在线视频 | 性高潮久久久久久久久久 | 久久久精亚洲二区 |

            如何壓縮Web Service數據

              在現實應用中有些時候會有比較大的數據對象需要傳輸,或者在一個比較慢的網絡環境下發布調用web service,此時可以通過壓縮數據流的方式來減小數據包的大小,從而提高web service的性能。下面yjbys小編為大家準備了關于如何壓縮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,可以在日志中看到數據包前后大小和內容。