hessian java 调用实例
一、 编写服务端代码
1) 编写实体类
public class Efile implements Serializable {
private static final long serialVersionUID = 8824334653712012069L;
private Fwqpz pzm ;
private Map<String , Fwqpz> fwqpzMap;
private String fileName;
private String title;
private String md5;
public class Fwqpz implements Serializable{
private static final long serialVersionUID = 2091708553885622574L;
private String pzm;
private String dataPath;
private Integer port;
private Map<String , Object> mapping;
2)编写一个接口
public interface EfileService {
public void addEfile(Efile efile);
public Efile getEfile(String id , Fwqpz pzm);
public Fwqpz getEfileMap();
}
3)编写一个实现
public class EfileServiceImpl implements EfileService {
public void addEfile(Efile efile) {
System.out.println(efile.getFileName());
System.out.println("保存成功");
}
public Efile getEfile(String id, Fwqpz pzm) {
Map<String , Fwqpz> pzmMap = new HashMap<String, Fwqpz>();
Fwqpz pzmObj = new Fwqpz();
pzmObj.setDataPath("d:/data");
pzmObj.setPort(21);
Fwqpz pzmObj1 = new Fwqpz();
pzmObj1.setDataPath("d:/degital");
pzmObj1.setPort(2561);
pzmMap.put("data", pzmObj);
pzmMap.put("degital" , pzmObj1);
Efile efile = new Efile();
efile.setFileName(id);
efile.setFwqpzMap(pzmMap);
efile.setMd5("*/5-554-*4-5*4-4-4");
return efile;
}
public Fwqpz getEfileMap() {
Fwqpz pzmObj = new Fwqpz();
pzmObj.setDataPath("d:/data");
pzmObj.setPort(21);
return pzmObj;
}
}
4)编写一个HessianServlet
public class HsServlet extends HessianServlet implements EfileService{
public void addEfile(Efile efile) {
System.out.println(efile.getFileName());
System.out.println("保存成功");
}
public Efile getEfile(String id, Fwqpz pzm) {
Map<String , Fwqpz> pzmMap = new HashMap<String, Fwqpz>();
Fwqpz pzmObj = new Fwqpz();
pzmObj.setDataPath("d:/data");
pzmObj.setPort(21);
Fwqpz pzmObj1 = new Fwqpz();
pzmObj1.setDataPath("d:/degital");
pzmObj1.setPort(2561);
pzmMap.put("data", pzmObj);
pzmMap.put("degital" , pzmObj1);
Efile efile = new Efile();
efile.setFileName(id);
efile.setFwqpzMap(pzmMap);
efile.setMd5("*/5-554-*4-5*4-4-4");
return efile;
}
public Fwqpz getEfileMap() {
Fwqpz pzmObj = new Fwqpz();
pzmObj.setDataPath("d:/data");
pzmObj.setPort(21);
return pzmObj;
}
}
5)引入jar包
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
6)配置web.xml
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- extends hessianServlet 在servlet内部impletments 接口方法 -->
<servlet>
<servlet-name>ExtendsHsSevlet</servlet-name>
<servlet-class>cn.com.hwxt.ly.servlet.HsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ExtendsHsSevlet</servlet-name>
<url-pattern>/ExtendsHsSevlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>HessianServlet</servlet-name>
<!-- servlet-class中指定的类是固定的,统一使用 com.caucho.hessian.server.HessianServlet -->
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<!-- 服务接口,使用全路径 -->
<param-name>home-api</param-name>
<param-value>cn.com.hwxt.ly.service.i.EfileService</param-value>
</init-param>
<init-param>
<!-- 服务实现类,使用全路径 -->
<param-name>home-class</param-name>
<param-value>cn.com.hwxt.ly.service.impl.EfileServiceImpl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HessianServlet</servlet-name>
<url-pattern>/HessianServlet</url-pattern>
</servlet-mapping>
</web-app>
OK,服务端代码编写完毕!
二、编写客户端代码
1)实现类客户端调用
public class CallExtendsHessianServlet {
//调用 HsServlet 这个servlet的测试
public static void main(String[] args) {
String url="http://localhost:8080/PureServlet/ExtendsHsSevlet";
HessianProxyFactory factory=new HessianProxyFactory();
factory.setOverloadEnabled(true);
try {
Fwqpz fwpz = new Fwqpz();
fwpz.setPort(591);
fwpz.setDataPath("c:/temp/sdfs/sdw/斯蒂芬莫");
EfileService remote =(EfileService) factory.create(EfileService.class, url);
Efile efile = remote.getEfile("this is test call" , fwpz);
System.out.println(efile.getFileName());
Map<String, Fwqpz> map = efile.getFwqpzMap();
Set<String> set = map.keySet();
for (String key : set) {
System.out.println(map.get(key).getDataPath());
}
System.out.println(efile.getMd5());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
2)HessianServlet客户端调用
public class CallHessianServlet {
//调用hessian自己的servlet的方法
public static void main(String[] args) {
String url="http://localhost:8080/PureServlet/HessianServlet";
HessianProxyFactory factory=new HessianProxyFactory();
factory.setOverloadEnabled(true);
try {
Fwqpz fwpz = new Fwqpz();
fwpz.setPort(591);
fwpz.setDataPath("c:/temp/sdfs/sdw/斯蒂芬莫");
EfileService remote =(EfileService) factory.create(EfileService.class, url);
Efile efile = remote.getEfile("this is test call" , fwpz);
System.out.println(efile.getFileName());
Map<String, Fwqpz> map = efile.getFwqpzMap();
Set<String> set = map.keySet();
for (String key : set) {
System.out.println(map.get(key).getDataPath());
}
System.out.println(efile.getMd5());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}