`
raymond.chen
  • 浏览: 1418776 次
  • 性别: 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());

 

分享到:
评论

相关推荐

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

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

    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服务器包括...

    java开源包9

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

    java开源包101

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

    Java资源包01

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

Global site tag (gtag.js) - Google Analytics