zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    Task Scheduler Error and Success Constants (Windows)
    Error 2147943712 during task creation
    How to: Fix a network printer suddenly showing as offline in Windows Vista, 7 or 8 « Robin's Blog
    PowerShell监控Windows打印服务器
    Office 2010 KMS激活原理和案例分享
    Office and Windows KMS使用帮助
    [转自开心软件园]解读“剩余 Windows 重置计数”和“信任时间”
    KMS错误代码收集
    Unattend.xml应答文件制作(WISM)-- 转自爱做梦的鱼
    Acronis True Image Home 2011 PXE服务器配置_qxxz_新浪博客
  • 原文地址:https://www.cnblogs.com/rodge-run/p/6492962.html
Copyright © 2011-2022 走看看