首页 > 学院 > 开发设计 > 正文

Hessian协议学习

2019-11-06 07:07:42
字体:
来源:转载
供稿:网友

一、概述

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。使用hessian开发需要注意以下几点:▲java服务器端必须具备:·包含Hessian的jar包·设计一个接口,用来给客户端调用·实现该接口的功能·配置web.xml,配好相应的servlet·由于使用二进制RPC协议传输数据,对象必须进行序列化,实现Serializable 接口·对于复杂对象可以使用Map的方法传递▲客户端必须具备:·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll·具有和服务器端结构一样的接口。包括命名空间都最好一样·利用HessianPRoxyFactory调用远程接口。服务器端代码1.实体类
public class User implements Serializable {private static final long serialVersionUID = 1L;private String name;private int age;public String getName() {	return name;}public void setName(String name) {	this.name = name;}public int getAge() {	return age;}public void setAge(int age) {	this.age = age;}@Overridepublic String toString() {	return "User [name=" + name + ", age=" + age + "]";}}2.接口
public interface UserService {	public String getName();}3.接口的实现类
public class UserServiceImpl extends HessianServlet implements UserService {	private static final long serialVersionUID = 1L;	String name="tom";		@Override	public String getName() {		return name;	}}4.web.xml的配置
         <context-param>            <param-name>contextConfigLocation</param-name>            <param-value>/WEB-INF/remoting-servlet.xml</param-value>        </context-param>           <listener>             <listener-class>                 org.springframework.web.context.ContextLoaderListener</listener-class>         </listener>         <servlet>            <servlet-name>remoting</servlet-name>             <servlet-class>                  org.springframework.web.servlet.DispatcherServlet</servlet-class>             <load-on-startup>1</load-on-startup>         </servlet>         <servlet-mapping>            <servlet-name>remoting</servlet-name>            <url-pattern>/remoting/*</url-pattern>        </servlet-mapping>    <!--配置hessian服务 -->	<servlet>	<servlet-name>hessian</servlet-name>	<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>	<init-param>		<param-name>UserServiceImpl</param-name>		<param-value>com.it.ssm.service.impl.UserServiceImpl</param-value>	</init-param>	<init-param>		<param-name>UserService</param-name>		<param-value>com.it.ssm.service.UserService</param-value>	</init-param>	</servlet>     <servlet-mapping>        <servlet-name>User</servlet-name>         <url-pattern>/User</url-pattern>     </web-app> 5.remoting-servlet.xml的配置
<!--  定义普通bean实例-->      <bean id="user" class="com.it.ssm.service.impl.UserServiceImpl"/>    <!--  使用HessianServiceExporter 将普通bean导出成Hessian服务-->    <bean name="/HessianRemoting"        class="org.springframework.remoting.caucho.HessianServiceExporter">        <!--  需要导出的目标bean-->        <property name="service" ref="user"/>        <!--  Hessian服务的接口-->                        <property name="serviceInterface" value="com.it.ssm.service.UserService"/>    </bean>客户端代码1.客户端也必须有与服务端相同的实体类,包名必须相同。2、接口
public interface UserService {	public String getName();}3、测试类
public static void main(String[] args) throws MalformedURLException, ClassNotFoundException {	String url = "http://localhost:8080/hessian-server/user";    HessianProxyFactory factory = new HessianProxyFactory();    UserService us= (UserService)factory.create(UserService.class, url);    String name = us.getName();    System.out.println(name);}Hessian官网:点击打开链接
上一篇:时钟节拍

下一篇:实验2:1

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表