需要的jar包 hessian-4.0.7.jar
#客户端
接口
package com.test;
public interface Printer {
public String print(String a);
public String say();
}
2.实现该接口
package com.test;
public class PrinterService implements Printer {
public String print(String a) {
return a;
}
public String say() {
return "nihao";
}
}
3.web.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<javaee:param-name>service-class</javaee:param-name>
<javaee:param-value>com.test.PrinterService</javaee:param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name>
<url-pattern>/aaa</url-pattern>
</servlet-mapping>
</web-app>
#服务端.
1.测试类
package com.test;
import java.net.MalformedURLException;
import com.caucho.hessian.client.HessianProxyFactory;
public class TestHessian {
/**
* @param args
* @throws MalformedURLException
*/
public static void main(String[] args) throws MalformedURLException {
// TODO Auto-generated method stub
String url = "http://localhost:7001/H/aaa";
//创建factory实例
HessianProxyFactory factory = new HessianProxyFactory();
//客户端需实现Basic接口
//利用java反射机制创建Printer类的实例,从而可以获取该实例的方法
Printer printr = (Printer)factory.create(Printer.class, url);
System.out.println("Hessian: " + printr.print("123")+printr.say());
}
}
输出结果:
Hessian: 123nihao
关于Hessian接口:
Hessian 是一个基于 binary-RPC 实现的远程通讯 library。使用二进制传输数据。Hessian通常通过Web应用来提供服务,通过接口暴露。Servlet和Spring的DispatcherServlet都可以把请求转发给Hessian服务
关于hessian的7个问题:
1、是基于什么协议实现的?
基于Binary-RPC协议实现。
2、怎么发起请求?
需通过Hessian本身提供的API来发起请求。
3、怎么 将请求转化为符合协议的格式的?
Hessian通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。
4、使用什么 传输协议传输?
Hessian基于Http协议进行传输。
5、响应端基于什么机制来接收请求?
响应端根据Hessian提供的API来接收请求。
6、怎么将流还原为传输格式的?
Hessian根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。
7、处理完毕后怎么回应?
处理完毕后直接返回,hessian将结果对象进行序列化,传输至调用端。