一. 在服务端发布一个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;

hessian在ssh项目中的配置的更多相关文章

  1. SiteMesh在项目中的配置

    SiteMesh在项目中的配置 首先在web.xml里面增加siteMesh的配置: <filter> <filter-name>sitemesh</filter-nam ...

  2. Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用

     1 修改pom.xml,添加依赖文件: <dependency> <groupId>com.whalin</groupId> <artifactId&g ...

  3. 在SSH项目中实现分页效果

    在实现分页的时候,我使用的是数据库下面的User表,实现的效果是通过分页查询 能够将表中的数据分页显示,点击相关的按钮实现:首页.上一页.下一页.末页的显示 1新建一个dynamic web proj ...

  4. log4j java项目中的配置

    第一步你需要 相关的jar包 第二歩你需要一个关于log4j的配置文件 第三歩 你需要一个检测用的java 文件 导入这两个jar包进你的项目中 commons-logging.jar log4j-1 ...

  5. ORM Nhibernate框架在项目中的配置

    在项目中使用 Nhibernet 时,一定要将 配置文件 .xml  编译方式设置为 嵌入式资源,否则在运行项目时就会出现错误. 以下是hibernate.cfg.xml 的配置,在配置中使用的是 M ...

  6. SSH 项目中 使用websocket 实现网页聊天功能

    参考文章  :java使用websocket,并且获取HttpSession,源码分析    http://www.cnblogs.com/zhuxiaojie/p/6238826.html 1.在项 ...

  7. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.5——在项目中共享配置

    问题: 取出多个模块下相同的配置 解决方案: 在顶级gradle配置文件里面使用allprojects或者subprojects块 讨论: 当你在android studio中新建android项目时 ...

  8. vue项目中全局配置变量

    在项目中api管理需要用到全局变量,创建全局变量的方式也有很多. 1.通过export default const BASEURL = "http://localhost:3333/&quo ...

  9. SSH 项目中 用Hibernate底层 简单的封装DAO层

    废话不多少了,主要是使用hibernate的查询方法,自己封装了DAO层,供service来方便使用. 首先:必须要继承的 public class CommonDao extends Hiberna ...

随机推荐

  1. Leetcode_114_Flatten Binary Tree to Linked List

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42744919 Given a binary tree, f ...

  2. 《java入门第一季》之面向对象(匿名对象)

    /* 匿名对象:就是没有名字的对象. 匿名对象的应用场景: A:调用方法,仅仅只调用一次的时候. 注意:调用多次的时候,不适合. 匿名对象调用完毕就是垃圾.可以被垃圾回收器回收,释放了系统资源. B: ...

  3. 仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化

    仿百度壁纸客户端(六)--完结篇之Gallery画廊实现壁纸预览已经项目细节优化 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度 ...

  4. 【Java编程】Java学习笔记<一>

    1.  高级语言的编译和执行方法可以归为两大基本技术:编译执行和解释执行.C/C++/Delphi是编译执行,basic/java/matlab是解释执行. 2.    尽管Java是解释执行的,也需 ...

  5. MTK Android software Tools工具的说明

    MTK发布的Android software Tools工具包,里面包含了很多的MTK工具,如下是简要说明及学习文档 MTK Android software Tools工具的说明如下: 工具 说明 ...

  6. C++之IO操作

    可参考自: C++之标准设备IO操作流 C++之预定义类型IO格式控制 C++之文件IO操作流

  7. mybatis ----数据级联查询(多对一)

    工程的目录结构: 有两个表,一个文章表article ,一个用户表user. create table article (id int(11) not null auto_increment, use ...

  8. 【大前端攻城狮之路】JavaScript函数式编程

    转眼之间已入五月,自己毕业也马上有三年了.大学计算机系的同学大多都在北京混迹,大家为了升职加薪,娶媳妇买房,熬夜加班跟上线,出差pk脑残客户.同学聚会时有不少兄弟已经体重飙升,开始关注13号地铁线上铺 ...

  9. JSP指令与动作

    Jsp基本指令和动作 (2011-08-18 16:25:13) 转载▼ 标签: 杂谈 分类: java JSP基本指令 jsp命令指令用来设置与整个jsp页面相关的属性,它并不直接产生任何可见的输出 ...

  10. 使用 JMeter 进行压力测试

    一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率:预估系统的承载能力,使我们能根据其做出一些应对措施.所以压力测 ...