Hessian协议学习

3 篇文章 0 订阅

一、概述

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;
}
@Override
public 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官网:点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值