com.caucho
hessian
4.0.38
===== web.xml =====
contextConfigLocation
classpath*:/hessian-servlet.xml
hessian
org.springframework.web.servlet.DispatcherServlet
4
hessian
/hessian/*
===== hessian-servlet.xml =====
===== RmiRequest.java =====
package com.gxx.record.dto;
import java.io.Serializable;
/**
*
*
* - Title:
* -
* RMI远程调用请求
*
* - Description:
* -
*
none
*
*
*
* @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 =====
package com.gxx.record.dto;
import java.io.Serializable;
/**
*
*
* - Title:
* -
* RMI远程调用返回
*
* - Description:
* -
*
none
*
*
*
* @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 =====
package com.gxx.record.service;
import com.gxx.record.dto.RmiRequest;
import com.gxx.record.dto.RmiResponse;
/**
*
*
* - Title:
* -
* RMI远程调用接口
*
* - Description:
* -
*
none
*
*
*
* @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 =====
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;
/**
*
*
* - Title:
* -
* RMI远程调用接口实现类
*
* - Description:
* -
*
none
*
*
*
* @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;
}
}
===== RmiServiceTest.java(测试单元调用) =====
package com.gxx.record.rmi;
import junit.framework.TestCase;
import com.caucho.hessian.client.HessianProxyFactory;
import com.gxx.record.dto.RmiRequest;
import com.gxx.record.dto.RmiResponse;
import com.gxx.record.service.RmiService;
/**
*
*
* - Title:
* -
* 远程调用测试类
*
* - Description:
* -
*
none
*
*
*
* @author Administrator
* @version 1.0, 2015年8月2日
* @since record
*
*/
public class RmiServiceTest extends TestCase {
/**
* 测试RMI
* @throws Exception
*/
public void testRmi() throws Exception{
String url = "http://localhost/record/hessian/rmi";
HessianProxyFactory factory = new HessianProxyFactory();
RmiService service = (RmiService)factory.create(RmiService.class, url);
RmiRequest request = new RmiRequest();
request.setBusinessCode("CHECK_USER_PASSWORD");
request.setName("gxx");
request.setPassword("123456");
RmiResponse response = service.process(request);
System.out.println("结果:" + response.isSuccess() + ",信息:" + response.getMessage());
}
}
===== application-hessian-client.xml(spring注入调用) =====
===== RmiController.java =====
package com.gxx.record.web.rmi;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gxx.record.dto.RmiRequest;
import com.gxx.record.dto.RmiResponse;
import com.gxx.record.service.RmiService;
/**
* RmiController
*
* @author gxx
*/
@Controller
@RequestMapping("/rmi/")
public class RmiController {
/**
* 日志处理器
*/
private final Logger logger = Logger.getLogger(RmiController.class);
@Autowired
private RmiService rmiService;
@RequestMapping(value = "/preRmiFtl", method = RequestMethod.GET)
public String preRmiFtl() {
return "rmi/preRmiFtl";
}
/**
* 远程调用
* @param request
* @param rmiRequest
* @return
*/
@RequestMapping(value = "/process",produces="application/json")
public @ResponseBody RmiResponse process(HttpServletRequest request, RmiRequest rmiRequest) throws Exception {
logger.info("远程调用:功能号=[" + rmiRequest.getBusinessCode() + "],用户名=[" + rmiRequest.getName() + "],"
+ "密码=[" + rmiRequest.getPassword() + "]");
return rmiService.process(rmiRequest);
}
}
===== preRmiFtl.ftl =====
rmi页面
===== 演示 =====
{{ :分享:技术:hessian:hessian_1.png?300 |}}
{{ :分享:技术:hessian:hessian_2.png?500 |}}
{{ :分享:技术:hessian:hessian_3.png?300 |}}
{{ :分享:技术:hessian:hessian_4.png?500 |}}