用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());

猜你喜欢

转载自chenjumin.iteye.com/blog/2271477
今日推荐