项目是个soa系统,基于mule架构说白了就是一个webservice,有人调我们的方法,发现太慢了,原因在于返回的entity数组的size实在太大,大量时间在网络传输上,因此他们想让我们传输之前压缩这个entity数组,压完了再传输,传到client端时再解压出来。求思路,多谢了!

解决方案 »

  1.   

    http://download.csdn.net/source/202886
    http://topic.csdn.net/u/20081226/18/a84d5a60-d3da-4b38-b1e2-82cfa7d5ca95.html
      

  2.   

    用base64编码,用zip压缩之后传输就会少很多
      

  3.   

    直接用java.util.zip包下面的类,压缩一下传输就好了。
    客户端收到再解压。
      

  4.   

    前一段时间刚做了个类似的东西,但手头只有client端的代码,可以给你参考一下。
    服务端的自己按这个思路写写就好了。
    关键你要了解java.util.zip
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;public class ZipUtil { public static String unzip(byte[] zippedByte){
    final int BUFFER = 1024;
    ByteArrayOutputStream baos=new ByteArrayOutputStream();
    String result="";
            try {       
         ZipInputStream zis = new ZipInputStream (new ByteArrayInputStream(zippedByte));
                ZipEntry entry;
                if ((entry = zis.getNextEntry()) != null) {
                    System.out.println("Extracting: " + entry);
                    int count;
                    byte data[]=new byte[BUFFER];
                    while ((count = zis.read(data))!= -1) {
                     baos.write(data, 0, count);
                    }
                   
                }
                zis.close();
                result=new String(baos.toByteArray());
                baos.close();
                
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            return result;
            
    }
    }
      

  5.   

    我不是要压缩的代码是这样的,接口不变,返回的还是entity数组,只是在传输的时候压缩,想了半天最好用代理模式