hessian java调用

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();
        }
    }
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值