hessian spring 调用

来源:互联网 发布:电力网络摄像头 编辑:程序博客网 时间:2024/06/06 20:00


hessian spring 调用实例

 一、 编写服务端代码

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)引入jar包

a) spring相关jar包

b) hession、servlet等核心jar包

5)配置web.xml、spring-context.xml、hessian-servlet.xml

a)配置web.xml

<welcome-file-list>
    <welcome-file>SpringmvcHessian/hs/efService.hs</welcome-file>
  </welcome-file-list>

 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath:spring/*.xml</param-value>
   </context-param>


 <servlet>
  <servlet-name>hessian</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 </servlet>

 <servlet-mapping>
  <servlet-name>hessian</servlet-name>
  <url-pattern>/hs/*</url-pattern>
 </servlet-mapping>

b)配置spring-context.xml

<bean id="eFileService" class="cn.ly.services.impl.EfileServiceImpl" />

 <!-- 使用HessianServiceExporter 将普通bean导出成Hessian服务 -->
 <bean id="service_hs_rpc" class="org.springframework.remoting.caucho.HessianServiceExporter">
  <property name="service" ref="eFileService" />
  <!-- Hessian服务的接口 -->
  <property name="serviceInterface" value="cn.ly.services.i.EfileService" />
 </bean>

c)配置hessian-servlet.xml

<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="urlMap">
   <map>
    <entry key="/efService.hs"  value-ref="service_hs_rpc" />
   </map>
  </property>
 </bean>

OK,服务端编写完成!

2、编写客户端代码

a) Servlet客户端

public class CallHessianServlet {
    //调用hessian自己的servlet的方法
    public static void main(String[] args) {
        String url="
http://localhost:8080/SpringmvcHessian/hs/efService.hs";
        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();
        }
    }
}

b)Spring客户端

public class SpringCall {
    public static void main(String[] args) {
        try {
            ApplicationContext context = new ClassPathXmlApplicationContext("/remoting-client.xml");
            Fwqpz fwpz = new Fwqpz();
            fwpz.setPort(591);
            fwpz.setDataPath("c:/temp/sdfs/sdw/斯蒂芬莫");
            EfileService remote = (EfileService) context.getBean("efileServiceClent");
            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 (Exception e) {
            e.printStackTrace();
        }
    }
}

0 0