Apache CXF实战之五 压缩Web Service数据
来源:互联网 发布:淘宝店铺怎么刷钻 编辑:程序博客网 时间:2024/06/07 08:49
Apache CXF实战之五 压缩Web Service数据
本文链接:http://blog.csdn.net/kongxx/article/details/7530216
在现实应用中有些时候会有比较大的数据对象需要传输,或者在一个比较慢的网络环境下发布调用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;
- }
- }
- 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);
- }
- 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;
- }
- }
注意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());
- }
- }
0 0
- Apache CXF实战之五 压缩Web Service数据
- Apache CXF实战之五 压缩Web Service数据
- Apache CXF实战之五 压缩Web Service数据
- Apache CXF实战之五:压缩Web Service数据
- Apache CXF实战之五 压缩Web Service数据
- Apache CXF实战之四 构建RESTful Web Service
- Apache CXF实战之六 创建安全的Web Service
- Apache CXF实战之七 使用Web Service传输文件
- Apache CXF实战之四 构建RESTful Web Service
- Apache CXF实战之六 创建安全的Web Service
- Apache CXF实战之七 使用Web Service传输文件
- Apache CXF实战之四 构建RESTful Web Service
- Apache CXF实战之七:使用Web Service传输文件
- Apache CXF实战之七 使用Web Service传输文件
- Apache CXF实战之四 构建RESTful Web Service
- Apache CXF实战之六 创建安全的Web Service
- Apache CXF实战之六 创建安全的Web Service
- Apache CXF实战之七 使用Web Service传输文件
- Oracle 分区表总结
- WINCE6.0+S3C6410睡眠和唤醒的实现
- Java结束定时器任务
- 限制(Limit) MySQL命令
- .net像webservice中传入int,double为null时
- Apache CXF实战之五 压缩Web Service数据
- vs 2010中提示libc.lib错误
- python读取配置文件
- 给APP评星级
- poj2362(小木棍问题的逆过程)
- Android开发环境搭建
- 跟我一起写 Makefile
- Apache CXF实战之六 创建安全的Web Service
- 关于博客编辑器中直接粘贴图片