`
raymond.chen
  • 浏览: 1426304 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用Hessian4传输对象和上传文件

 
阅读更多

关于Hessian的概述见 http://chenjumin.iteye.com/admin/blogs/234897

 

服务端:

1、接口类

public interface HessianService {
	public void sendMessage(String message);
	public String getMessage();
	public void uploadFile(String filename, InputStream data);
	public void sendEntity(HessianEntity entity);
	public void sendMap(Map map);
	public void sendList(List list);
	public Map getMap();
	public List getList();
}

 

2、接口实现类

public class HessianServiceImpl implements HessianService {
	@Override
	public String getMessage() {
		return "this is message";
	}

	@Override
	public void sendMessage(String message) {
		System.out.println(message);
	}

	@Override
	public void uploadFile(String filename, InputStream data) {
		System.out.println("filename : " + filename);
		
		BufferedInputStream inputStream = null;
		BufferedOutputStream outputStream = null;
		try {
			long s = System.currentTimeMillis();
			inputStream = new BufferedInputStream(data);
			
			outputStream = new BufferedOutputStream(new FileOutputStream("E:/" + filename));
			byte[] buffer = new byte[8192];
			int b = inputStream.read(buffer, 0, buffer.length);
			while (b > 0) {
				outputStream.write(buffer, 0, b);
			    b = inputStream.read(buffer, 0, buffer.length);
			}
			long e = System.currentTimeMillis();
			System.out.println((e-s));
			
		}catch (IOException ex) {
			ex.printStackTrace();
    	}finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                 } catch (IOException ex) {
                     ex.printStackTrace();
                 }
             }
             if (inputStream != null) {
                 try {
                     inputStream.close();
                 } catch (IOException ex) {
                	 ex.printStackTrace();
                 }
             }
         }
	}
	
	@Override
	public void sendEntity(HessianEntity entity) {
		System.out.println(entity.getUsername() + ", " + entity.getPassword());
	}
	
	@Override
	public void sendMap(Map map) {
		System.out.println("sendMap: " + map);
	}
	
	@Override
	public void sendList(List list) {
		System.out.println("sendList: " + list);
	}
	
	@Override
	public Map getMap() {
		Map map = new HashMap();
		map.put("getMap", "getMap");
		return map;
	}

	@Override
	public List getList() {
		List list = new ArrayList();
		list.add("getList");
		return list;
	}
}

 

3、web.xml配置

  	<servlet>  
        <servlet-name>hessian</servlet-name>  
        <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>  
        <init-param>  
            <param-name>service-class</param-name>  
            <param-value>com.i2p.remoting.hessian.HessianServiceImpl</param-value>  
        </init-param>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>hessian</servlet-name>  
        <url-pattern>/hessian</url-pattern>  
    </servlet-mapping> 

 

客户端:

String url = "http://localhost:8080/springmvc/hessian";  
HessianProxyFactory factory = new HessianProxyFactory();  
HessianService service = (HessianService) factory.create(HessianService.class, url); 

service.sendMessage("message by sent");
System.out.println(service.getMessage());

InputStream data = new BufferedInputStream(new FileInputStream("E:/pd_20151127.dmp"));
service.uploadFile("pd_20151127_222.dmp", data);

HessianEntity entity = new HessianEntity();
entity.setUsername("username");
entity.setPassword("password");
service.sendEntity(entity);

Map map = new HashMap();
map.put("map", "map value");
service.sendMap(map);

List list = new ArrayList();
list.add("list value");
service.sendList(list);

System.out.println(service.getMap());
System.out.println(service.getList());

 

分享到:
评论

相关推荐

    hession实例代码(文件上传和下载)

    4. **Service层**:Service层是业务逻辑处理层,它封装了具体的业务操作,比如文件的上传逻辑(验证、保存、记录元数据等)和下载逻辑(获取元数据、读取文件内容、发送给客户端等)。Service层通常会调用DAO层来...

    dubbo-hessian协议http请求demo(java)

    相比基于文本的XML或JSON,Hessian传输的数据量更小,性能更高。 在Dubbo中,Hessian协议被用于服务间通信,它提供了快速且轻量级的RPC方式。要实现Hessian协议的HTTP请求,我们需要以下步骤: 1. **创建服务提供...

    Hessian实例下载

    在2010年11月11日上传的这个压缩包里,我们有两个主要的文件:`Hessian`和`HessianClient`。`Hessian`可能是一个服务器端的实现,展示了如何将服务暴露为Hessian接口,让客户端可以通过HTTP进行二进制调用。而`...

    Hessian-4.0.7.jar和Hessiancsharp.dll(一个zip)

    Hessian是由Caucho Technology开发的一种二进制协议,它能够以更小的数据体积传输复杂的数据结构,如对象、集合和XML,从而提高网络通信的效率。Hessian-4.0.7.jar是Java实现的Hessian库,提供了服务器端和客户端的...

    hassian+spring +fileupload

    6. **安全考虑**:在实际项目中,还需要考虑安全性问题,如防止文件名注入、限制上传文件的类型和大小,以及确保上传过程的安全性(如使用HTTPS)。 这个"FileUploader"压缩包很可能是包含了实现上述功能的源代码,...

    JAVA上百实例源码以及开源项目

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    spring远程调用和xfire aegis 源代码上传

    标题 "spring远程调用和xfire aegis 源代码上传" 涉及到的是在Java开发中使用Spring框架进行远程过程调用(RPC)以及整合XFire和Aegis库来实现服务间的通信。这一主题是分布式系统设计中的一个重要组成部分,特别是...

    Exception by proxy callSystem.ArgumentException: 已添加项。字典中的关键

    HessianCsharp.dll文件可能是一个用于实现Hessian协议的C#库,Hessian是一种二进制协议,用于高效地传输对象和数据,常用于跨语言、跨平台的服务通信。 Hessian协议允许开发者在客户端和服务端之间透明地序列化和反...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    JAVA上百实例源码以及开源项目源代码

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

Global site tag (gtag.js) - Google Analytics