初识 hessian

1、简介:
轻量级的远程调用工具,采用的RCP二进制协议,适合于发送二进制数据。
2、简单的例子
服务器端:
•Hessian.jar 包  http://hessian.caucho.com/#Java  jav版的
•设计一个接口,用来给客户端调用,并实现该接口
接口
public interface BasicAPI {
	public void setGreeting(String greeting); 
	public String hello(); 
	public User getUser(); 
	
	public Map<Long,User> testMap();
	
	public String check(String name,String public_key);
}
接口实现
public class BasicService implements BasicAPI{
	private String _greeting = "Hello, world"; 
		public void setGreeting(String greeting){
		_greeting = greeting; 
		System.out.println("set greetingsuccess:"+_greeting);
	} 
	public String hello(){ 
		return _greeting; 
	} 
	public User getUser() {  
		return new User("prance");
	}
	public Map<Long, User> testMap() {
		long aaa = System.currentTimeMillis();
		Map<Long, User> map = new HashMap<Long, User>();
		for (Long i = 0l; i < 100000l; i++) {
			map.put(i,new User("user"+i));
		}
		System.out.println(System.currentTimeMillis() - aaa);
		return map;
	}
	public String check(String name, String public_key) {
		 System.out.println(name+" :"+public_key);
		 return public_key;
	} 
}

•配置web.xml 
	  <servlet>
 	<servlet-name>hello</servlet-name>
	<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
 	<init-param>
 		<param-name>service-class</param-name>
 		<param-value>e.demo.BasicService</param-value>
 	</init-param>
  </servlet>
  <servlet-mapping>
  		<servlet-name>hello</servlet-name>
  		<url-pattern>/hello</url-pattern>
</servlet-mapping>
•	对象必须实现Serializable 接口
     User 类
public class User implements Serializable{
	private Long id;
	private String name;
	

	public User(String name) {
		 this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
}
	对于复杂对像可以使用Map的方法传递


测试的test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.caucho.hessian.client.HessianProxyFactory"%>
<%@page import="e.demo.BasicAPI"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

HessianProxyFactory factory = new HessianProxyFactory();
String  url = basePath+"/hello";
out.println(url);

BasicAPI basic = (BasicAPI)factory.create(BasicAPI.class,url);
out.println("Hello: " + basic.hello()+"\n"); 
out.println("Hello: " + basic.getUser().getName()+"\n"); 
out.println("Hello: " + basic.testMap().size()+"\n"); 
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
  <br>
    This is my JSP page. <br>
  </body>
</html>



客户端:
public class BasicClient {
	public static void main(String[] args) {
			Long start = System.currentTimeMillis();
			BasicAPI basic = getBasicAPI();
			 
			Map<Long, User> map = basic.testMap();
			
			for (Long l : map.keySet()) {
				//System.out.println(l+"  ----  "+map.get(l).getName());
			}
			
			System.out.println("-------------------"+map.size());
			Long end = System.currentTimeMillis();
			
			System.out.println(end-start);
			
	}
	
	public static BasicAPI getBasicAPI(){
		String url = "http://localhost:8002/EasyHession/hello";
		HessianProxyFactory factory = new HessianProxyFactory();
		BasicAPI basic = null;
		try {
			basic = (BasicAPI) factory.create(BasicAPI.class, url);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		return basic;
	}
	
}










 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值