关于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());
相关推荐
4. **Service层**:Service层是业务逻辑处理层,它封装了具体的业务操作,比如文件的上传逻辑(验证、保存、记录元数据等)和下载逻辑(获取元数据、读取文件内容、发送给客户端等)。Service层通常会调用DAO层来...
相比基于文本的XML或JSON,Hessian传输的数据量更小,性能更高。 在Dubbo中,Hessian协议被用于服务间通信,它提供了快速且轻量级的RPC方式。要实现Hessian协议的HTTP请求,我们需要以下步骤: 1. **创建服务提供...
Hessian通过二进制序列化机制来传输对象,相比基于文本格式如XML或JSON的序列化方式,Hessian能够更高效地在网络中传输数据。其二进制协议支持动态类型,并且在序列化过程中对对象进行压缩,从而降低了网络带宽的...
在2010年11月11日上传的这个压缩包里,我们有两个主要的文件:`Hessian`和`HessianClient`。`Hessian`可能是一个服务器端的实现,展示了如何将服务暴露为Hessian接口,让客户端可以通过HTTP进行二进制调用。而`...
Hessian是由Caucho Technology开发的一种二进制协议,它能够以更小的数据体积传输复杂的数据结构,如对象、集合和XML,从而提高网络通信的效率。Hessian-4.0.7.jar是Java实现的Hessian库,提供了服务器端和客户端的...
6. **安全考虑**:在实际项目中,还需要考虑安全性问题,如防止文件名注入、限制上传文件的类型和大小,以及确保上传过程的安全性(如使用HTTPS)。 这个"FileUploader"压缩包很可能是包含了实现上述功能的源代码,...
标题 "spring远程调用和xfire aegis 源代码上传" 涉及到的是在Java开发中使用Spring框架进行远程过程调用(RPC)以及整合XFire和Aegis库来实现服务间的通信。这一主题是分布式系统设计中的一个重要组成部分,特别是...
HessianCsharp.dll文件可能是一个用于实现Hessian协议的C#库,Hessian是一种二进制协议,用于高效地传输对象和数据,常用于跨语言、跨平台的服务通信。 Hessian协议允许开发者在客户端和服务端之间透明地序列化和反...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...