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