关于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());