Hessian入门
Hessian是一个轻量级的remoting on http工具,采用的是Binary RPC协议,所以它很适合于发送二进制数据,同时又具有防火墙穿透能力。Hessian一般是通过Web应用来提供服务,因此非常类似于平时我们用的 WebService。只是它不使用SOAP协议,但相比webservice而言更简单、快捷。摘自:http://www.cnblogs.com/xdp-gacl/p/3897534.html
官网:http://hessian.caucho.com/
下面是基于eclipse和tomcat6做的一个实例:
服务端:
public interface IHelloService { /** * 打印Hello * @return */ String printHello(); /** * 加法计算 * @param a * @param b * @return */ int add(int a, int b); /** * 设置用户 * @param isDefault:是否默认用户 * @return */ User setUser(boolean isDefault);
public class HelloServiceImpl extends HessianServlet implements IHelloService{//注意,这里继承了HessianServlet,所以可作为一个servlet被调用 @Override public String printHello() { return "Hello Hessian"; } @Override public int add(int a, int b) { return a + b; } @Override public User setUser(boolean isDefault) { if(isDefault){ return new User(); }else{ return new User("新用户", "new new new"); } } }
public class User implements Serializable { String userName ="默认姓名"; String address ="浙江杭州"; public User() { super(); } public User(String userName, String address) { super(); this.userName = userName; this.address = address; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [姓名=" + userName + ", 地址=" + address + "]"; } }
web.xml配置:
<servlet> <servlet-name>hello</servlet-name> <servlet-class>app.demo.HelloServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
然后在tomcat中启动项目。
客户端:
先将服务端的接口IHelloService和实体类User复制到客户端项目中。然后写Client类:
public class BasicClient { /** * @param args */ public static void main(String[] args)throws Exception { String url ="http://localhost:8080/HessianServer/hello"; HessianProxyFactory factory = new HessianProxyFactory(); IHelloService service = (IHelloService)factory.create(IHelloService.class, url); /**下面调用接口的方法,发现可获取到服务端 impl实现类的处理结果,这就是hessia的一点好处了*/ System.out.println("打印Hello:" + service.printHello()); System.out.println("加法计算:10+20= " + service.add(10, 20)); System.out.println("默认用户:" + service.setUser(true)); System.out.println("非默认用户:" + service.setUser(false)); } }
打印结果:
打印Hello:Hello Hessian
加法计算:10+20= 30
默认用户:User [姓名=默认姓名, 地址=浙江杭州]
非默认用户:User [姓名=新用户, 地址=new new new]
逃避不一定躲得过,面对不一定最难过