想来想去还是把hessian的应用放到SOA栏目中来吧
hessian实现了远程调用,不需要学习WEB service的一些规范就可以直接上手, 它一个轻量级的Java远程访问的解决方案。Hessian很像WebService,只不过它不使用SOAP协议,而是使用它自己的binary协议
使用它只需要3个关键的类
1、stub(存根) 也就是服务器端和客户端的公共接口
2、服务器端对该接口的实现类serviceimpl
3、服务器端的sevlet ,hessian帮我们实习了个HessianServlet,当然我们可以直接让我们的serviceimpl继承HessianServlet
下面举例,例子在网络上,官方文档上都有的
stub
/**
* @author 付志超
* @time Sep 26, 2008 2:35:54 PM
*/
/**
*
*/
package com.alimama.function;
import com.alimama.bean.Student;
public interface SayHello {
public String sayHello(String name);
public Student getStudent() ;
}
serviceimpl
/**
* @author 付志超
* @time Sep 26, 2008 2:36:58 PM
*/
package com.alimama.function.impl;
import com.alimama.bean.Student;
import com.alimama.function.SayHello;
import com.caucho.hessian.server.HessianServlet;
public class SayHelloImpl extends HessianServlet implements SayHello {
public String sayHello(String name) {
return "hello "+name;
}
@Override
public Student getStudent() {
Student s=new Student();
s.setName("付志超");
s.setSchool("武汉理工大学");
return s;
}
}
本例中需要传输的序列化的bean
/**
* @author 付志超
* @time Sep 26, 2008 3:42:47 PM
*/
package com.alimama.bean;
import java.io.Serializable;
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = -9006571629757493042L;
private String name;
private String school;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String toString() {
return name+" "+school;
}
}
最后是web.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
com.alimama.function.impl.SayHelloImpl
</servlet-class>
</servlet>
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>com.alimama.function.impl.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
当然如果我们的 serviceimpl没有实现 HessianServlet
那么web.xml应该修改成为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
com.caucho.hessian.server.HessianServlet
</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.alimama.function.impl.SayHelloImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.alimama.function.SayHello</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
记住 Student一定要实习可序列化接口
最后是我们的客户端的调用
/**
* @author 付志超
* @time Sep 26, 2008 2:57:27 PM
*/
package com.alimama.test;
import java.net.MalformedURLException;
import com.alimama.function.SayHello;
import com.caucho.hessian.client.HessianProxyFactory;
public class HessianClientTest {
public static void main(String[] args) {
String url="http://127.0.0.1:8080/testHessian/hello";
HessianProxyFactory factory=new HessianProxyFactory();
try {
SayHello say=(SayHello) factory.create(SayHello.class, url);
System.out.println(say.sayHello("abc"));
System.out.println(say.getStudent());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
启动服务器,然后执行上面的客户端,就会看到输出
hello abc
付志超 武汉理工大学
还有点要注意 如果用最新的版本的 hessian-3.1.6.jar hessian-3.2.0.jar 都出现问题 无法获得 出现IO异常
但是使用一个 hessian-3.0.20.jar 的老包 是没问题的
=====
OK 以后在进一部使用hessian了
分享到:
相关推荐
本文将围绕"Hessian的字段序列化小记"这一主题,深入探讨Hessian的工作原理、序列化过程以及其在实际应用中的价值。 Hessian的目标是通过减少数据传输的体积来提高网络通信的效率。相比于XML和JSON等文本格式,...
同时,由于Hessian使用二进制格式,相比于基于文本的协议(如SOAP),它在网络传输上的效率更高。 总的来说,Hessian是一种强大的工具,特别适用于需要快速、低开销的Java远程调用场景。通过这个简单的示例,我们...
**独立使用Hessian** 在不依赖任何框架的情况下,使用Hessian的步骤如下: 1. **添加依赖**:首先,客户端和服务端都需要引入Hessian的jar包,以便使用其提供的API和功能。 2. **服务端设置**:在服务端,需要...
在使用Hessian前,需要在项目中引入Hessian的相关依赖。对于Java项目,可以通过Maven或Gradle添加Hessian的jar包。例如,在Maven的pom.xml文件中添加如下依赖: ```xml <groupId>com.caucho</groupId> ...
1. **二进制编码**:Hessian使用高效的二进制编码,对数据类型进行压缩,减少了在网络上传输的数据量,从而提高了效率。 2. **简单类型支持**:Hessian支持基本的Java数据类型,如整型、浮点型、字符串、日期等,...
本教程将详细介绍C#中Hessian的使用及其相关知识点。 首先,Hessian协议设计的目标是简洁高效,它能将常见的数据类型如字符串、整型、浮点型等转换为二进制格式,从而在网络传输时占用更少的带宽。这种协议特别适合...
远程方法调用的比较,Hessian方法的介绍和相关配置.Hessian是一个轻量级的remoting on http工具,...只是它不使用SOAP协议,但相比webservice而言更简单、快捷。这个文件可以是hessian在spring项目和web项目的简单配置
2. 处理结果:服务器执行完方法后,返回的数据会通过Hessian协议反序列化成对象,Android客户端可以直接使用。 五、错误处理与调试 1. 异常处理:在调用远程方法时,可能会出现网络异常或服务器异常,需要捕获并...
在这个“hessian学习实例”中,我们将深入探讨Hessian框架的使用,特别是如何将其与Spring框架集成,以及如何构建server端和client端。 首先,让我们理解Hessian的工作原理。Hessian基于HTTP协议,它将Java对象序列...
1. **二进制格式**:Hessian使用紧凑的二进制格式,相比基于文本的协议如XML-RPC或SOAP,数据传输量更小,解析速度更快。 2. **动态类型**:Hessian支持动态类型,这意味着服务端和客户端无需预先定义接口或数据结构...
一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。
这对于优化自定义序列化逻辑或者解决Hessian使用中遇到的问题非常有帮助。 总结起来,Hessian是一种高效、轻量级的二进制序列化协议,特别适合于跨语言的网络通信。理解并掌握Hessian的基本概念和使用方法,能够...
Hessian是一种高效的二进制序列化协议,常用于...通过使用Hessian,开发者可以轻松地构建分布式系统,实现服务之间的便捷调用。案例中的文件提供了不同角度的分析和实践指导,帮助我们更好地理解和应用Hessian技术。
1. **二进制序列化**:Hessian使用高效的二进制格式进行序列化和反序列化,与XML或JSON相比,这种格式的数据体积更小,网络传输更快。 2. **类型安全**:Hessian支持各种数据类型,包括基本类型、对象、数组和映射...
在IT行业中,分布式服务框架Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理方案,它使得服务提供者可以在一个系统中发布服务...在实际项目中,可以根据业务需求和安全考虑,灵活调整和优化Hessian协议的使用方式。
在使用这些Hessian版本时,开发者还需要关注如何正确地配置和集成到自己的项目中。这包括设置服务器端和客户端的Hessian服务,定义服务接口,处理序列化和反序列化的过程,以及调试可能出现的问题。在进行版本升级时...
在这个案例中,提供的"压缩包子文件的文件名称列表"——"hessian使用案例",很可能包含了服务器端和客户端的代码示例。这些示例可能包括了服务器端的服务接口和实现、web.xml配置、客户端的HessianProxyFactory使用...
在给定的项目中,"springMVC-hessian" 压缩包很可能包含了一个使用 SpringMVC 构建的 Web 服务,以及一个使用 Hessian 实现的远程服务接口。Readme 文件应该提供了详细的步骤指导,解释了如何配置 SpringMVC 以支持 ...
此例子有两个工程,hessianServer(服务端工程),hessianClient(客户端工程),把 hessianServer工程 启动之后就可以通过 hessianClient 访问 服务端的服务了。
2. **生成代理**:在客户端,我们使用Hessian工具生成一个服务代理,这个代理可以像调用本地对象一样调用远程服务。 3. **网络通信**:当调用代理方法时,Hessian会自动将参数序列化,通过HTTP发送到服务端;服务端...