用户工具

站点工具


分享:技术:hessian:spring整合hessian

这是本文档旧的修订版!


spring整合hessian

hessian介绍

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

加入pom依赖

pom.xml
<dependency>
	<groupId>com.caucho</groupId>
	<artifactId>hessian</artifactId>
	<version>4.0.38</version>
</dependency>

web.xml

web.xml
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>
		classpath*:/hessian-servlet.xml
	</param-value>
</context-param>
 
<!-- hessian -->
<servlet> 
	<servlet-name>hessian</servlet-name> 
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
	<load-on-startup>4</load-on-startup> 
</servlet> 
 
<servlet-mapping> 
	<servlet-name>hessian</servlet-name> 
	<url-pattern>/hessian/*</url-pattern> 
</servlet-mapping> 

hessian-servlet.xml

hessian-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
 
	<bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> 
	<bean id="rmiService" class="com.gxx.record.service.impl.RmiServiceImpl"/> 
	<bean name="/rmi" class="org.springframework.remoting.caucho.HessianServiceExporter"> 
		<property name="service" ref="rmiService"/> 
		<property name="serviceInterface" value="com.gxx.record.service.RmiService"/> 
	</bean>
</beans>

RmiRequest.java

RmiRequest.java
package com.gxx.record.dto;
 
import java.io.Serializable;
 
/**
 * 
 * <dl>
 *    <dt><b>Title:</b></dt>
 *    <dd>
 *    	RMI远程调用请求
 *    </dd>
 *    <dt><b>Description:</b></dt>
 *    <dd>
 *    	<p>none
 *    </dd>
 * </dl>
 *
 * @author Administrator
 * @version 1.0, 2015年8月2日
 * @since record
 *
 */
public class RmiRequest implements Serializable {
	private static final long serialVersionUID = 8407796832554234397L;
	public String businessCode;//业务代码
	public String name;//姓名
	public String password;//密码
	public String getBusinessCode() {
		return businessCode;
	}
	public void setBusinessCode(String businessCode) {
		this.businessCode = businessCode;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

RmiResponse.java

RmiResponse.java
package com.gxx.record.dto;
 
import java.io.Serializable;
 
/**
 * 
 * <dl>
 *    <dt><b>Title:</b></dt>
 *    <dd>
 *    	RMI远程调用返回
 *    </dd>
 *    <dt><b>Description:</b></dt>
 *    <dd>
 *    	<p>none
 *    </dd>
 * </dl>
 *
 * @author Administrator
 * @version 1.0, 2015年8月2日
 * @since record
 *
 */
public class RmiResponse implements Serializable {
	private static final long serialVersionUID = -1241624069216870728L;
	public boolean isSuccess;//是否成功
	public String message;//信息
	public boolean isMutiple;//是否多条
	public boolean isSuccess() {
		return isSuccess;
	}
	public void setSuccess(boolean isSuccess) {
		this.isSuccess = isSuccess;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public boolean isMutiple() {
		return isMutiple;
	}
	public void setMutiple(boolean isMutiple) {
		this.isMutiple = isMutiple;
	}
}

RmiService.java

RmiService.java
package com.gxx.record.service;
 
import com.gxx.record.dto.RmiRequest;
import com.gxx.record.dto.RmiResponse;
 
/**
 * 
 * <dl>
 *    <dt><b>Title:</b></dt>
 *    <dd>
 *    	RMI远程调用接口
 *    </dd>
 *    <dt><b>Description:</b></dt>
 *    <dd>
 *    	<p>none
 *    </dd>
 * </dl>
 *
 * @author Administrator
 * @version 1.0, 2015年8月2日
 * @since record
 *
 */
public interface RmiService {
	/**
	 * 远程调用
	 * @param request
	 * @return
	 * @throws Exception
	 */
	public RmiResponse process(RmiRequest request) throws Exception;
}

RmiServiceImpl.java

RmiServiceImpl.java
package com.gxx.record.service.impl;
 
import org.apache.commons.lang3.StringUtils;
 
import com.gxx.record.dto.RmiRequest;
import com.gxx.record.dto.RmiResponse;
import com.gxx.record.service.RmiService;
 
/**
 * 
 * <dl>
 *    <dt><b>Title:</b></dt>
 *    <dd>
 *    	RMI远程调用接口实现类
 *    </dd>
 *    <dt><b>Description:</b></dt>
 *    <dd>
 *    	<p>none
 *    </dd>
 * </dl>
 *
 * @author Administrator
 * @version 1.0, 2015年8月2日
 * @since record
 *
 */
public class RmiServiceImpl implements RmiService {
	public static final String BUSINESS_CODE_CHECK_USER_PASSWORD = "CHECK_USER_PASSWORD";
 
	/**
	 * 远程调用
	 * @param request
	 * @return
	 * @throws Exception
	 */
	public RmiResponse process(RmiRequest request) throws Exception {
		RmiResponse response = new RmiResponse();
		if(StringUtils.equals(request.getBusinessCode(), BUSINESS_CODE_CHECK_USER_PASSWORD)){
			if(StringUtils.equals("gxx", request.getName())){
				if(StringUtils.equals("123456", request.getPassword())){
					response.setSuccess(true);
					response.setMessage("密码验证成功");
				} else {
					response.setSuccess(false);
					response.setMessage("该用户名[" + request.getName() + "]密码有误");
				}
			} else {
				response.setSuccess(false);
				response.setMessage("不存在该用户名[" + request.getName() + "]");
			}
		} else {
			response.setSuccess(false);
			response.setMessage("该业务代码[" + request.getBusinessCode() + "]无效");
		}
		return response;
	}
 
}
分享/技术/hessian/spring整合hessian.1438532945.txt.gz · 最后更改: 2015/08/03 00:29 由 gxx