• hessian在ssh项目中的配置


    一. 在服务端发布一个web项目

    1.创建一个动态的web项目,并导入hessian的jar包

    2. 在服务端的crm项目中创建接口

    package cn.rodge.crm.service;
    import java.util.List;
    import cn.rodge.crm.domain.Customer;
    // 客户服务接口
    public interface CustomerService {
        // 未关联定区客户
        public List<Customer> findnoassociationCustomers();
        // 查询已经关联指定定区的客户
        public List<Customer> findhasassociationCustomers(String decidedZoneId);
        // 将未关联定区客户关联到定区上
        public void assignCustomersToDecidedZone(Integer[] customerIds, String decidedZoneId); 
        // 根据电话查询客户
        public List<Customer> findCustomerByTelephone (String telephone);  
        //根据地址查询定区id
        public String findDecidedZoneByAddress (String address);
    }

    Customer.java实体类
    package cn.rodge.crm.domain;
    import java.io.Serializable;
    public class Customer implements Serializable {
        private Integer id;
        private String name;
        private String station;
        private String telephone;
        private String address;
        private String decidedzone_id;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getStation() {
            return station;
        }
        public void setStation(String station) {
            this.station = station;
        }
        public String getTelephone() {
            return telephone;
        }
        public void setTelephone(String telephone) {
            this.telephone = telephone;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        public String getDecidedzone_id() {
            return decidedzone_id;
        }
        public void setDecidedzone_id(String decidedzone_id) {
            this.decidedzone_id = decidedzone_id;
        }
    }

    Customer.hbm.xml映射文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="cn.rodge.crm.domain.Customer" table="t_customer">
            <id name="id">
                <generator class="native"></generator>
            </id>
            <property name="name"></property>
            <property name="station"></property>
            <property name="telephone"></property>
            <property name="address"></property>
            <property name="decidedzone_id"></property>
        </class>
    </hibernate-mapping>

    3.针对接口提供实现类

    package cn.rodge.crm.service.impl;
    import java.util.List;
    import org.hibernate.Session;
    import cn.rodge.crm.domain.Customer;
    import cn.rodge.crm.service.CustomerService;
    import cn.rodge.crm.utils.HibernateUtils;
    public class CustomerServiceImpl implements CustomerService {
        public List<Customer> findnoassociationCustomers() {
            Session session = HibernateUtils.openSession();
            session.beginTransaction();
            String hql = "from Customer where decidedzone_id is null";
            List<Customer> customers = session.createQuery(hql).list();
            session.getTransaction().commit();
            session.close();
            return customers;
        }
        public List<Customer> findhasassociationCustomers(String decidedZoneId) {
            Session session = HibernateUtils.openSession();
            session.beginTransaction();
            String hql = "from Customer where decidedzone_id = ?";
            List<Customer> customers = session.createQuery(hql).setParameter(0, decidedZoneId).list();
            session.getTransaction().commit();
            session.close();
            return customers;
        }
        public void assignCustomersToDecidedZone(Integer[] customerIds, String decidedZoneId) {
            Session session = HibernateUtils.openSession();
            session.beginTransaction();
            // 取消定区所有关联客户
            String hql2 = "update Customer set decidedzone_id=null where decidedzone_id=?";
            session.createQuery(hql2).setParameter(0, decidedZoneId).executeUpdate();
            // 进行关联
            String hql = "update Customer set decidedzone_id=? where id =?";
            if (customerIds != null) {
                for (Integer id : customerIds) {
                    session.createQuery(hql).setParameter(0, decidedZoneId).setParameter(1, id).executeUpdate();
                }
            }
            session.getTransaction().commit();
            session.close();
        }
        public List<Customer> findCustomerByTelephone(String telephone) {
            Session session = HibernateUtils.openSession();
            session.beginTransaction();
            String hql = "from Customer  where telephone = ?";
            List<Customer> customers = session.createQuery(hql).setParameter(0, telephone).list();
            session.getTransaction().commit();
            session.close();
            return customers;
        }
        public String findDecidedZoneByAddress(String address) {
            Session session = HibernateUtils.openSession();
            session.beginTransaction();
            String hql = "select decidedzone_id from Customer  where address = ?";
            List<String> list = session.createQuery(hql).setParameter(0, address).list();
            String decidedzone_id = null;
            if (list != null && list.size() > 0) {
                decidedzone_id = list.get(0);
            }
            session.getTransaction().commit();
            session.close();

            return decidedzone_id;
        }
    }

    4.在web.xml中配置spring框架的一个Servlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>    
     <servlet>
        <servlet-name>remoting</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
        <servlet-name>remoting</servlet-name>
        <url-pattern>/remoting/*</url-pattern>
      </servlet-mapping>
     
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    5.在WEB-INF目录下提供配置文件remoting-servlet.xml,注册服务

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!-- 业务类  -->
        <bean id="customerService" class="cn.rodge.crm.service.impl.CustomerServiceImpl" />
        
        <!-- 注册hessian服务 -->
        <bean id="/customer" class="org.springframework.remoting.caucho.HessianServiceExporter">
            <!-- 业务接口实现类 -->
            <property name="service" ref="customerService" />
            <!-- 业务接口 -->
            <property name="serviceInterface" value="cn.rodge.crm.service.CustomerService" />
        </bean>
    </beans>   

    二. 在客户端

    1. 导入hessian的jar包

    2. 在项目同提供一个接口, 与服务端中提供的接口一致. 如果服务单有向客户端传递自定义类, 则也需要在客户端进行相应的配置

    package cn.rodge.crm.service;
    import java.util.List;
    import cn.rodge.crm.domain.Customer;
    // 客户服务接口
    public interface CustomerService {
        // 未关联定区客户
        public List<Customer> findnoassociationCustomers();
        // 查询已经关联指定定区的客户
        public List<Customer> findhasassociationCustomers(String decidedZoneId);
        // 将未关联定区客户关联到定区上
        public void assignCustomersToDecidedZone(Integer[] customerIds, String decidedZoneId);
        // 根据电话查询客户
        public List<Customer> findCustomerByTelephone (String telephone);
        //根据地址查询定区id
        public String findDecidedZoneByAddress (String address);
    }

    package cn.rodge.crm.domain;
    import java.io.Serializable;
    public class Customer implements Serializable {
        private Integer id;
        private String name;
        private String station;
        private String telephone;
        private String address;
        private String decidedzone_id;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getStation() {
            return station;
        }
        public void setStation(String station) {
            this.station = station;
        }
        public String getTelephone() {
            return telephone;
        }
        public void setTelephone(String telephone) {
            this.telephone = telephone;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        public String getDecidedzone_id() {
            return decidedzone_id;
        }
        public void setDecidedzone_id(String decidedzone_id) {
            this.decidedzone_id = decidedzone_id;
    }

    3. 在spring的applicationContext.xml中配置一个代理对象

        <bean id="customerService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
            <property name="serviceInterface" value="cn.rodge.crm.service.CustomerService"></property>
            <property name="serviceUrl" value="http://localhost:8080/crm/remoting/customer"></property>
        </bean>

    4.通过注解, 将这个代理对象注入给相应的类

      //注入hessian中的customerService
        @Resource
        private CustomerService customerService;

  • 相关阅读:
    Neural Collaborative Filtering
    Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks
    Statistical Comparisons of Classifiers over Multiple Data Sets
    Data Poisoning Attacks on FactorizationBased Collaborative Filtering
    Markov Chain
    Adversarial Personalized Ranking for Recommendation
    常见网络协议
    Python3 JWT的生成与验证
    Python3函数中如何理解递归
    Python3使用re模块解析正则表达式
  • 原文地址:https://www.cnblogs.com/rodge-run/p/6492962.html
Copyright © 2020-2023  润新知