设为首页 - 加入收藏
您的当前位置:主页 > 资讯 > 站长杂谈 > 正文

RPC-2-Hessian

来源:未知 编辑:admin 时间:2017-11-20
RPC-2-Hessian

RPC之Hessian

#hessian 一种 RPC的实现

基于HTTP协议传输,在性能方面还不够完美,负载均衡和失效转移依赖于应用的负载均衡器,Hessian的使用则与RMI类似,区别在于淡化了Registry的角色,通过显示的地址调用,利用HessianProxyFactory根据配置的地址create一个代理对象,另外还要引入HessianJar包。

 

Hession在web环境下可以快速应用。

所以官网取名为:

hessian binary web service protocol

地址:

http://hessian.caucho.com/

 

快速学习:

 

1:创建web项目并添加依赖

 

<dependency>

<groupId>com.caucho</groupId>

<artifactId>hessian</artifactId>

<version>4.0.51</version>

</dependency>

 

2:开发接口

注意:

Hession被远程调用的实例,必须要在客户端和服务器拥有相同的接口。

Hession的实现有两种:

1:直接将home-class,home-api表示的类,当做参数配置给HessianServlet

2:直接开发一个类,继承HessianServlet

现在,分别以两种方式来开发两个服务:

 

开发IHello接口:

package cn.hessian.server;

/**

 * 步1:开发接口

 */

public interface IHello {

public String sayHi(String name);

}

 

开发IHello的实现类:

package cn.hessian.server;

public class HelloImpl implements IHello {

@Override

public String sayHi(String name) {

return "你好:" + name;

}

}

 

开发IGreeting接口:

package cn.hessian.server;

public interface IGreeting {

public String sayGood(String name);

}

 

开发IGreeting的实现类,不同的是, 这个类直接继承HessianServlet类:

package cn.hessian.server;

import com.caucho.hessian.server.HessianServlet;

public class GreetingServlet extends HessianServlet implements IGreeting {

private static final long serialVersionUID = 1L;

@Override

public String sayGood(String name) {

return "Good 你好:" + name;

}

}

 

3:配置到web.xml

配置第一个Hello服务:

<servlet>

<servlet-name>hello</servlet-name>

<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>

<init-param>

<!-- 必须叫home-class即实现类,见HessianServlet的源代码 -->

<param-name>home-class</param-name>

<param-value>cn.hessian.server.HelloImpl</param-value>

</init-param>

<init-param>

<!-- 必须叫home-api即接口 -->

<param-name>home-api</param-name>

<param-value>cn.hessian.server.IHello</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>hello</servlet-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

 

配置第二个Greeting服务:

<servlet>

<servlet-name>greeting</servlet-name>

<servlet-class>cn.hessian.server.GreetingServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>greeting</servlet-name>

<url-pattern>/greeting</url-pattern>

</servlet-mapping>

 

现在启动Tomcat服务器。

 

4:开发客户端

现在开发另一个任意的Java项目,并导入hessian的依赖包:

<dependency>

<groupId>com.caucho</groupId>

<artifactId>hessian</artifactId>

<version>4.0.51</version>

</dependency>

 

IHello.javaIGreeting.java接口放到当前项目相同的包下,开发以下客户端调用:主是通过HessianProxyFactory实现远程调用:

package cn.mybatis.spring.demo;

import org.junit.Test;

import com.caucho.hessian.client.HessianProxyFactory;

import cn.hessian.server.IGreeting;

import cn.hessian.server.IHello;

public class Demo02 {

@Test

public void test1() throws Exception{

String url = "http://localhost/hessian/hello";

HessianProxyFactory proxy =

new HessianProxyFactory();

IHello hello = (IHello) proxy.create(IHello.class,url);

String str =  hello.sayHi("Jerry");

System.err.println("客户方面输出:"+str);

}

 

@Test

public void test2() throws Exception{

String url = "http://localhost/hessian/greeting";

HessianProxyFactory proxy =

new HessianProxyFactory();

IGreeting hello = (IGreeting) proxy.create(IGreeting.class,url);

String str =  hello.sayGood("张三");

System.err.println("客户方面输出:"+str);

}

}

相关文章:

相关推荐:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

友情链接:卓航健康养生 www.peixinhotelbeijing.cn 联系QQ:4988723 邮箱:4988723@qq.com

Copyright © 2002-2017 DEDECMS. 东吴科技 版权所有 Power by DongWU

Top