欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hessian 使用入门

程序员文章站 2022-05-28 16:26:39
...

本篇主要介绍Hessian的入门知识,包括Hessian服务端的搭建和客户端的调用。

1 服务器搭建

  1.1 创建普通Web工程

这样的Web工程可以是Maven下面的工程,也可以是不用Maven构建的工程。如果是Maven工程可是使用如下依赖:

<dependency>
       <groupId>com.caucho</groupId>
       <artifactId>hessian</artifactId>
       <version>3.1.5</version>
</dependency>

hession的版本可以随项目的情况调整。 

如果Web工程不用Maven构建,可以通过http://mvnrepository.com/artifact/com.caucho/hessian下载合适版本的hession包,放在合适的路径上即可。

  1.2 新建接口

Hessian对外的服务通常被定义成一个Interface。示例如下:

package service;

/**
 * 功能:Hessian对外提供的服务接口
 */
public interface Base {
	public String hello(String value);
}

  1.3 实现接口

服务器端对外提供服务需要实现上面定义的接口:

package service;

public class Hello implements Base {

	public String hello(String user) {
		
		return "hello " + user+" !";
	}
}

  1.4 修改Web.xml

Hessian通过HttpServlet的方式对外提供服务,Hessian对外提供服务还需要配置Web.xml文件,配置项参考下面代码:

<servlet>
  	<servlet-name>base</servlet-name>                                                               <!-- servlet-class中指定的类是固定的,统一使用 com.caucho.hessian.server.HessianServlet-->
  	<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
  	<init-param>                                                                                            <!-- 服务实现类,使用全路径 -->
  		<param-name>home-class</param-name>
  		<param-value>service.Hello</param-value>
  	</init-param>
  	<init-param>                                                                                            <!-- 服务接口,使用全路径 -->
  		<param-name>home-api</param-name>
  		<param-value>service.Base</param-value>
  	</init-param>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>base</servlet-name>
  	<url-pattern>/base</url-pattern>
  </servlet-mapping>

  1.5 启动程序

2 客户端调用

  2.1 创建客户端类

由于我的客户端程序直接放在同一个Web工程下面,直接创建客户端程序:

package service;

import com.caucho.hessian.client.HessianProxyFactory;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		// 远程调用地址
		String url = "http://127.0.0.1:8080/test/base";
		                                                                                                //默认写法
		HessianProxyFactory factory = new HessianProxyFactory();                                                                                                                                        //实例化
		Base base = (Base)factory.create(Base.class,url);
		                                                                                                //调用接口,并打印结果
		System.out.println(base.hello("world"));
	}

}

通常情况下,编写客户端程序需要依赖服务器提供的客户端jar。

 2.2 执行调用

3 常见问题

  3.1 jdk版本问题

       Web工程使用1.4版本的jdk,并且单单只引用hessian的jar包,在客户端调用的时候会出现找不到类“net.sf.retrotranslator.runtime.java.lang._Integer”等错误。解决办法,添加依赖retrotranslator-runtime-1.2.9.jar。

    关于retrotranslator的参考链接:http://huajiang.iteye.com/blog/501086

转载于:https://my.oschina.net/psuyun/blog/119492