当前位置:   article > 正文

java hessian 文件_hessian学习(传输文件)

hessian-4.0.51.jar

hessian较早版本通过 byte[] 进行文件传输;4.0之后支持 InputStream 作为参数或返回值进行传输。注意:hessian会读取整个文件,如果文件过大,会导致JVM内存溢出。可以通过控制上传文件的大小,设置合理的JVM参数,以及采用随机读取方式来解决。

一:创建hessian服务端:

创建一个web项目作为文件上传的服务端,命名为FileUploader,引入所需要的jar包:

1. 1、创建文件上传服务接口IFileUploadService

d7bce9f3c2cece32d6c7b881d9692f66.png

IFileUploadService接口代码如下:

packagefile.upload.service;importjava.io.InputStream;public interfaceIFileUploadService {public voidupload(String filename, InputStream data);

}

1.2实现文件上传服务接口IFileUploadService

其实现类代码如下:

packagefile.upload.service.Impl;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importfile.upload.service.IFileUploadService;public class IFileUploadServiceImpl implementsIFileUploadService {

@Overridepublic voidupload(String filename, InputStream data) {

BufferedInputStream bis= null;

BufferedOutputStream bos= null;try{//获取客户端传递的InputStream

bis = newBufferedInputStream(data);//创建文件输出流

bos = new BufferedOutputStream(new FileOutputStream("E:/"+filename));byte[] buffer = new byte[8192];intr;try{

r= bis.read(buffer, 0, buffer.length);while(r>0){

bos.write(buffer,0, r);

r= bis.read(buffer, 0, buffer.length);

}

System.out.println("-------文件上传成功!-------------");

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

throw newRuntimeException(e);

}finally{if (bos != null) {try{

bos.close();

}catch(IOException e) {throw newRuntimeException(e);

}

}if (bis != null) {try{

bis.close();

}catch(IOException e) {throw newRuntimeException(e);

}

}

}

}

}

1.3在web.xml中配置HessianServlet

FileUploader

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

FileUploadService

com.caucho.hessian.server.HessianServlet

service-class

file.upload.service.Impl.IFileUploadServiceImpl

home-api

file.upload.service.IFileUploadService

FileUploadService

/FileUploadService

到此,服务端的编写就完成了,部署FileUploader到Tomcat服务器,启动Tomcat服务器,在浏览器地址栏输入:http://localhost:8080/FileUploader/FileUploadService,查看是否可以调用。

3950bf57995a7f5e7c36bfc8737f59cc.png

出现此结果,说明hessian服务器测试通过

二:创建文件上传客户端

创建一个普通的java项目作为文件上传客户端,添加对hessian-4.0.51.jar的引用,同时将Hessian服务端的FileUploadServiceI接口打包成jar包提供给文件上传客户端调用,如下图所示:

1f22b0abec3f7b1db8180598208f5364.png

2.1、编写文件上传客户端

FileUploaderClient类的代码如下:

packagefile.uplaod.client;importjava.io.BufferedInputStream;importjava.io.FileInputStream;importjava.io.InputStream;importjava.net.MalformedURLException;importcom.caucho.hessian.client.HessianProxyFactory;importfile.upload.service.IFileUploadService;public classFileUploaderClient {//Hessian服务的url

public static final String url="http://localhost:8088/FileUploader/FileUploadService";public static void main(String[] args) throwsException {//创建HessianProxyFactory实例

HessianProxyFactory factory = newHessianProxyFactory();//获得Hessian服务的远程引用(调用server)

IFileUploadService uploader = (IFileUploadService) factory.create(IFileUploadService.class, url);//读取需要上传的文件

InputStream data = new BufferedInputStream(new FileInputStream("E:/QQ下载文档/论文/Spring实战第4版.pdf"));//调用远程服务上传文件。

uploader.upload("Spring实战第4版.pdf", data);

}

}

编译运行服务端与客户端:

bee542e2a9650c42db0c1688be47af3e.png

287738f55c05fe15c67989d9e61a74aa.png

最后结果:

9c1bef2de45452275fd6faf7ec5f80ac.png

原文参考:http://www.cnblogs.com/xdp-gacl/p/3898100.html

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号