体验了一把Hessian。
工程目录:
服务端:
web.xml中追加如下内容
<servlet>
<servlet-name>Hessian Service</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<param-value>com.mytest.hessian.BasicService</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Hessian Service</servlet-name>
<url-pattern>/basic</url-pattern>
</servlet-mapping>
BasicAPI.java
package com.mytest.hessian;
import java.util.List;
import java.util.Map;
public interface BasicAPI {
public String hello();
public Map getMap(Map m);
public List getList(List li);
}
BasicService.java
package com.mytest.hessian;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;
import com.caucho.hessian.server.HessianServlet;
public class BasicService extends HessianServlet implements BasicAPI {
private String _greeting = "Hello, world";
public void setGreeting(String greeting) {
_greeting = greeting;
}
public String hello() {
return _greeting;
}
//[1, 2, a, 5] => [*, **, null, *****]
@Override
public List getList(List li) {
List r = new ArrayList();
for(int i=0; i<li.size(); i++) {
Object o = li.get(i);
if(o instanceof Integer) {
int n = (Integer)o;
r.add(buildStar(n));
}else {
r.add(null);
continue;
}
}
return r;
}
private String buildStar(int n) {
StringBuilder sb = new StringBuilder(10);
for(int i=0; i<n; i++) {
sb.append("*");
}
return sb.toString();
}
//{a=>1, b=>2, c=>'beta'} => {a => '*', b => '**', c => null}
@Override
public Map getMap(Map m) {
Map r = new TreeMap();
Set set = m.entrySet();
Iterator iter = set.iterator();
while(iter.hasNext()) {
Entry entry = (Entry) iter.next();
String k = (String)entry.getKey();
Object o = entry.getValue();
if(o instanceof Integer) {
r.put(k, buildStar((Integer)o));
}else {
r.put(k, null);
}
}
return r;
}
}
客户端:
BasicAPI.java
同上。
Client.java
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import com.caucho.hessian.client.HessianProxyFactory;
import com.mytest.hessian.BasicAPI;
public class Client {
public static void main(String[] args) throws MalformedURLException{
String url = "http://localhost:8080/HessianService/basic";
HessianProxyFactory factory = new HessianProxyFactory();
BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url);
// hello world
System.out.println("hello: " + basic.hello());
//[1, 2, a, 5] => [*, **, null, *****]
//getList
List li = basic.getList(getInputList());
System.out.println(li);
//{a=>1, b=>2, c=>'beta'} => {a => '*', b => '**', c => null}
//getMap
Map m = basic.getMap(getInputMap());
System.out.println(m);
}
@SuppressWarnings("unchecked")
public static List getInputList() {
List inputList = new ArrayList();
inputList.add(1);
inputList.add(2);
inputList.add("a");
inputList.add(5);
return inputList;
}
@SuppressWarnings("unchecked")
public static Map getInputMap() {
Map inputMap = new TreeMap();
inputMap.put("a", 1);
inputMap.put("b", 2);
inputMap.put("c", "beta");
return inputMap;
}
}
运行Client,输出如下信息:
hello: Hello, world
[*, **, null, *****]
{a=*, b=**, c=null}