加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Hessian接口学习笔记

发布时间:2020-12-17 02:34:41 所属栏目:安全 来源:网络整理
导读:? 昨天写了一篇关于 ICE 的接口如何实现的文章,突然想到我们今年接口测试过程中可能也会遇到 hessian 类型的接口,为此乘这两天有空把 hessian 接口也学习一下。由于学习是为了以后测试工作而进行的,所以对于 hessian 和 soap 机制孰优孰劣就没有深入的研

?

昨天写了一篇关于ICE的接口如何实现的文章,突然想到我们今年接口测试过程中可能也会遇到hessian类型的接口,为此乘这两天有空把hessian接口也学习一下。由于学习是为了以后测试工作而进行的,所以对于hessiansoap机制孰优孰劣就没有深入的研究,这些问题还是留给我们架构师来研究吧。根据网上的文献:Hessian是采用二进制流进行通讯的,所以我想性能应该会好一些,既然通过二进制流传递,是不是对复杂对象的传递有问题呢,我想可能会有些难度,毕竟传递过程中没有象soap这样保留了对象的结构的。这个问题有待以后考证。今天我想把我第一次学习hessian的经历分享一下。

ICE,WebService一样,既然作为服务类那么必须有文档公布它的接口形式,客户端用户在通过这个文档来生成代理类。ICE是通过.Ice文件,WebService是通过wsdl,但是hessian没有这个类型的文档,hessian的代理类是直接通过factrory去生成的。所以在做hessian客户端代码之前,需要拿到接口文件interface。下面我们通过一个完整的例子看看hessian服务器端代码和客户端代码如何实现。

服务器端代码和配置:

1.? http://hessian.caucho.com/#Java?下载hessian jar包。

2.? 新建服务器端工程(web工程:hessian),新增接口声明文件new->interface。代码如下:

1?????? package Hessian;

2??????

3?????? public interface Printer {

4??????????????? public String printstr(); //与服务端的printstr方法对应

5?????? }

3.? 新建服务器类实现代码,new->class,代码如下

01???? package Hessian;

02????

03???? public? class PrinterService? implements Printer{

04????

05????????????? public String printstr() {

06?????????????????????? // TODO Auto-generated method stub

07?????????????????????? return "helloworld";

08????????????? }

09????

10???? }

4.? 修改服务器端web.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>

<web-app>

? <servlet>

?? <servlet-name>aaa</servlet-name>

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

??? <init-param>

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

????? <param-value>Hessian.PrinterService</param-value>

??? </init-param>

??? <init-param>

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

????? <param-value>Hessian.Printer</param-value>

??? </init-param>

? </servlet>

? <servlet-mapping>

?<servlet-name>aaa</servlet-name>

??? <url-pattern>/aaa</url-pattern>

? </servlet-mapping>

</web-app>

上述代码实现如下功能:

???????? * 指定接口的url

???????? * 指定API使用的inteface文件

??? * 指定服务器类实现的代码

5.? 导出工程为hessian.war,部署到tomcat5webapps目录下。

6.? hessian jar包拷贝到lib目录下。

?

客户端代码:

1.? 新建客户端工程,新增测试类,代码如下

01???? package Hessian;

02????

03???? import com.caucho.hessian.client.HessianProxyFactory;

04????

05???? public class TestClient {

06????????????? ? public static void main(String []args)

07????????????? ??? throws Exception

08????????????? ? {

09????????????? ??? String url = "http://10.0.68.183:8080/Hessian/aaa";

10????????????? ??? //创建factory实例

11????????????? ??? HessianProxyFactory factory = new HessianProxyFactory();

12????????????? ??? //客户端需实现Basic接口

13????????????? ??? Printer printer = (Printer) factory.create(Printer.class,url);

14????

15????????????? ??? System.out.println("Hessian: " + printer.printstr());

16????????????? ? }

17????

18???? }

运行客户端代码:可以看见Hessian helloworld

???????? 如果读者有兴趣使用comview去捕捉实际传递的内容,发现根本看不懂传递的内容,因为是以二进制流进行传递的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读