1:这个小Demo是我在IOS系统上搞起来的,MAVEN、JDK、TOMCAT、ECLIPSE安装都不一一说了,可以自己尝试一下,有问题,可以在线问我
2:这是一个Hessian入门级别的项目,项目是Maven项目、方便管理和以后整合SpringMVC。
==================================把环境搞起来,先跑一下,就知道Hessian Demo作为一个轻量级的remoting onhttp工具的大概原理了=====
1Maven的Pom.xml文件 依赖的包(hessian的jar包,会报异常,到时候可以注意一下这个问题)
<dependencies>
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<!-- <version>4.0.7</version> -->
<version>3.1.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
2:web.xml(这里的内容都已经写好注释了,不懂的地方可以再看一下)
<!-- 使用Hessian远程访问:配置拦截 -->
<servlet>
<servlet-name>synchLocalhost</servlet-name>
<!-- 自定义名称 -->
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<!-- 这个是调用jar里面的Hessian拦截器,不需要更改-->
<init-param>
<param-name>home-class</param-name>
<!-- 这个是Hessian拦截器后跳转的实现类标识符,不需要更改 -->
<param-value>com.shenhl.hession.HelloHessianImpl</param-value>
<!-- 自定义Hessian的实现类的全路径 -->
</init-param>
<init-param>
<param-name>home-api</param-name>
<!-- 这个是Hessian拦截器后跳转的接口标识符,不需要更改 -->
<param-value>com.shenhl.hession.HelloHessian</param-value>
<!-- 自定义Hessian的接口类的全路径 -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<!-- servlet-name:与前面的一致 -->
<!-- url-pattern :访问入口名 客户端通过访问入口进入服务器中Hessian拦截器,拦截后跳转到自定义的实现类中方法处理-->
<servlet-name>synchLocalhost</servlet-name>
<url-pattern>/synchLocalhost</url-pattern>
</servlet-mapping>
3:类,源码:HelloHessian.javapackage com.shenhl.hession;
import java.util.List;
import java.util.Map;
public interface HelloHessian {
String sayHello();
List myLoveFruit();
Map myBabays();
MyCar getMyCar();
}
4:HelloHessianImpl接口的实现类
package com.shenhl.hession;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.caucho.hessian.server.HessianServlet;
/**
* 2016 7 26 9:27
* @author user
*
*/
public class HelloHessianImplextends HessianServlet implements HelloHessian , Serializable{
/**
*
*/
privatestatic finallong serialVersionUID =1L;
public String sayHello() {
return"welcom to my Hessian";
}
public List<String> myLoveFruit() {
List<String> list =new ArrayList<String>();
list.add("blueberry");
list.add("banana");
list.add("grape");
returnlist;
}
public Map<String, String> myBabays() {
Map<String, String> map = new HashMap<String, String>();
map.put("son","张大四");
map.put("daughter","李小三");
map.put("son","王小二");
returnmap;
}
public MyCar getMyCar() {
MyCar car =new MyCar();
car.setCarName("英菲尼迪");
car.setCarModel("Q50");
returncar;
}
}
package com.shenhl.hession;
import java.io.Serializable;
public class MyCarimplements Serializable {
/**
*
*/
private static final long serialVersionUID = 5302943492321676322L;
private StringcarName;
private StringcarModel;
public String getCarName() {
returncarName;
}
public void setCarName(String carName) {
this.carName =carName;
}
public String getCarModel() {
returncarModel;
}
public void setCarModel(String carModel) {
this.carModel =carModel;
}
@Override
public String toString() {
return"my car name:[" + this.carName +"] model:[" + this.carModel +"].";
}
}
6:HessianClientTest.java类
package com.shenhl.hession;
import java.net.MalformedURLException;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import com.caucho.hessian.client.HessianProxyFactory;
/**
* 参考的源文:http://ribbonchen.blog.163.com/blog/static/118316505201472024252460/
*
* @author user
*
*/
public class HessianClientTest {
public static void main(String[] args) {
//URL:http://本地地址:服务端口/项目名称/web.xml中配置的名称
String url ="http://localhost:8080/hession_demo/synchLocalhost";
HessianProxyFactory factory = new HessianProxyFactory() ;
try {
HelloHessian hello = (HelloHessian)factory.create(HelloHessian.class,url);
System.out.println(hello.sayHello());
MyCar car =hello.getMyCar();
System.out.println(car.toString());
for (Object entry:hello.myBabays().entrySet()) {
System.out.println(entry +"************" + entry);
}
for (Object str:hello.myLoveFruit()) {
System.out.println("Object Love Fruit:"+str);
}
Map babies = hello.myBabays();
Iterator it = babies.entrySet().iterator();
while(it.hasNext()){
Entryentry = (Entry)it.next();
System.out.println(entry.getKey() +" " + entry.getValue());
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}