使用axis1+spring+hibernate搭建webservice框架(一)

来源:互联网 发布:零售药店收银软件 编辑:程序博客网 时间:2024/04/28 10:22

写在前面的话:

       网上的教程大多都是使用wsdl2java工具构建webservice。本文则直接采用编辑server-config.wsdd来发布webservice,相比而言,可以比较快速的部署一个项目,适应工作需要。

   本教程模拟提供用户接口用于和别的系统结合,主要功能包括接受用户的增删改查。

一数据库创建
    创建数据库webservice

,创建用户表user

用户表内容如下:

1CREATE TABLE ` user ` (
2 `uid` int ( ) unsigned NOT NULL auto_increment,
3 `name` varchar ( ) NOT NULL default '' ,
4 `password` varchar ( ) NOT NULL default '' ,
5 `nickname` varchar ( ) NOT NULL default '' ,
6 PRIMARY KEY (`uid`)
7) ENGINE=InnoDB DEFAULT CHARSET= gbk;

(您也可以直接使用附件中的sql文件创建数据库)

二新建web项目,搭建spring+hibernate框架。

1)新建用户模型,User类,如下:

01package com.zuidaima.model;
02 
03public class User {
04    /*
05     
21     */
22    private String nickname;
23 
24    /*
25     * 必须提供一不带参数的构造方法,以供hibernate初始化User
26     */
27    public User() {
28 
29    }
30 
31    /*
32     * 使用参数构建User
33     */
34    public User(String name, String password, String nickname) {
35        this.name = name;
36        this.password = password;
37        this.nickname = nickname;
38    }
39 
40    public Integer getUid() {
41        return uid;
42    }
43 
44    public void setUid(Integer uid) {
45        this.uid = uid;
46    }
47 
48    public String getName() {
49        return name;
50    }
51 
52    public void setName(String name) {
53        this.name = name;
54    }
55 
56    public String getPassword() {
57        return password;
58    }
59 
60    public void setPassword(String password) {
61        this.password = password;
62    }
63 
64    public String getNickname() {
65        return nickname;
66    }
67 
68    public void setNickname(String nickname) {
69        this.nickname = nickname;
70    }
71}

另外user的配置文件User.hbm.xml如下:

01<?xml version="1.0" encoding="UTF-8"?>
02<!DOCTYPE hibernate-mapping PUBLIC
03    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
04    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
05 
06<hibernate-mapping>
07    <class name="com.zuidaima.model.User" table="user">
08        <id name="uid" type="java.lang.Integer" column="UID">
09            <generator class="native"></generator>
10        </id>
11        <property name="name" type="java.lang.String" column="NAME"
12            length="45" insert="true" update="true" />
13        <property name="password" type="java.lang.String" column="PASSWORD"
14            length="45" insert="true" update="true" />
15        <property name="nickname" type="java.lang.String" column="NICKNAME"
16            length="45" insert="true" update="true" />
17    </class>
18</hibernate-mapping>

2)新建DAO,UserDAO类,如下:

01package com.zuidaima.dao;
02 
03import java.util.List;
04 
05import org.springframework.orm.hibernate.support.HibernateDaoSupport;
06import com.zuidaima.model.User;
07 
08public class UserDAO extends HibernateDaoSupport {
09    public User getUser(int uid) {
10        return (User) getHibernateTemplate().get(User.classnew Integer(uid));
11    }
12 
13    /**
14     * 添加用户
15     *
16     * @param user
17     */
18    public void saveUser(User user) {
19        getHibernateTemplate().save(user);
20    }
21 
22    /**
23     * 删除用户
24     *
25     * @param uid
26     */
27    public void deleteUser(int uid) {
28        StringBuffer strBuf = new StringBuffer();
29        strBuf.append("from User as u where u.uid=");
30        strBuf.append(uid);
31        getHibernateTemplate().delete(strBuf.toString());
32    }
33 
34    /**
35     * 更新用户
36     *
37     * @param user
38     */
39    public void updateUser(User user) {
40        getHibernateTemplate().saveOrUpdate(user);
41    }
42 
43    /**
44     * 根据用户名查找用户
45     *
46     * @param name
47     * @return user or null
48     */
49    /*
50     * return null if can't find
51     */
52    
63    }
64 
65    /**
66     * 用户列表
67     *
68     * @return user List
69     */
70    public List listUser() {
71        StringBuffer strBuf = new StringBuffer();
72        strBuf.append("select u from User as u ");
73        return getHibernateTemplate().find(strBuf.toString());
74    }
75 
76}

3)新建管理层,UserManager接口和其实现UserManagerImpl。

UserManager接口:

01package org.yoo.service;
02 
03 import java.util.List;
04 
05 import org.yoo.model.User;
06 
07 public interface UserManager {
08  
09 /**
10 * 根据uid查找用户
11 * @param uid
12 * @return user
13 */
14 public User getUserByUid( int uid);
15 /**
16 * 增加用户
17 * @param user
18 */
19 public void saveUser(User user);
20 /**
21 * 删除用户
22 * @param uid
23 */
24 public void deleteUser( int uid);
25  
26 /**
27 * 更新用户信息
28 * @param user
29 */
30 public void updateUser(User user);
31  
32 /**
33 * 根据用户名查找用户
34 * @param name
35 * @return user
36 */
37 public User getUserByName(String name);
38  
39 /**
40 * 用户列表
41 * @return user List
42 */
43 public List listUser();
44}

UserManagerImpl如下:

01package com.zuidaima.service.impl;
02 
03import java.util.List;
04 
05import com.zuidaima.dao.UserDAO;
06import com.zuidaima.model.User;
07import com.zuidaima.service.UserManager;
08 
09public class UserManagerImpl implements UserManager {
10    private UserDAO userDAO = null;
11 
12    public void deleteUser(int uid) {
13        userDAO.deleteUser(uid);
14 
15    }
16 
17    public User getUserByName(String name) {
18 
19        return userDAO.getUserByName(name);
20    }
21 
22    public User getUserByUid(int uid) {
23 
24        return userDAO.getUser(uid);
25    }
26 
27    public List listUser() {
28 
29        return userDAO.listUser();
30    }
31 
32    public void saveUser(User user) {
33        userDAO.saveUser(user);
34 
35    }
36 
37    public void updateUser(User user) {
38        userDAO.updateUser(user);
39 
40    }
41 
42    /*
43     * Ioc By Spring
44     */
45    public void setUserDAO(UserDAO userDAO) {
46        this.userDAO = userDAO;
47    }
48 
49}

4)配置xml文件。Spring-config.xml

01<?xml version="1.0" encoding="UTF-8"?>
02<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
03    "http://www.springframework.org/dtd/spring-beans.dtd">
04 
05<beans>
06 
07    <!-- ==DATA SOURCE======================================== -->
08    <!-- Data Source for MYSQL -->
09    <bean id="dataSource_MYSQL"
10        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
11        <property name="driverClassName">
12            <value>org.gjt.mm.mysql.Driver</value>
13        </property>
14        <property name="url">
15            <value>jdbc:mysql://127.0.0.1:3306/webservice?useUnicode=true&amp;characterEncoding=GBK</value>
16        </property>
17        <property name="username">
18            <value>root</value>
19        </property>
20        <property name="password">
21            <value>111111</value>
22        </property>
23    </bean>
24 
25    <!--==SESSION FACTORY===================================== -->
26    <!-- Hibernate SessionFactory -->
27    <bean id="sessionFactory"
28        class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
29        <property name="dataSource">
30            <ref local="dataSource_MYSQL" />
31        </property>
32 
33        <property name="mappingResources">
34            <list>
35                <value>com/zuidaima/model/mysql/User.hbm.xml</value>
36            </list>
37        </property>
38 
39        <property name="hibernateProperties">
40            <props>
41                <!--sql dialect for MYSQL -->
42                <prop key="hibernate.dialect">
43                    net.sf.hibernate.dialect.MySQLDialect
44                </prop>
45                <prop key="connection.pool.size">10</prop>
46                <prop key="statement_cache.size">25</prop>
47                <prop key="jdbc.fetch_size">50</prop>
48                <prop key="jdbc.batch_size">30</prop>
49                <prop key="hibernate.show_sql">true</prop>
50                <prop key="cglib.use_reflection_optimizer">true</prop>
51            </props>
52        </property>
53    </bean>
54    <!--==TRANSACTION======================================= -->
55    <!-- Transaction manager for a single Hibernate SessionFactory -->
56    <bean id="transactionManager"
57        class="org.springframework.orm.hibernate.HibernateTransactionManager">
58        <property name="sessionFactory">
59            <ref local="sessionFactory" />
60        </property>
61    </bean>
62</beans>

Spring-dao.xml

01<?xml version="1.0" encoding="UTF-8"?>
02<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
03    "http://www.springframework.org/dtd/spring-beans.dtd">
04<beans>
05    <bean id="userDAO" class="com.zuidaima.dao.UserDAO">
06        <property name="sessionFactory">
07            <ref bean="sessionFactory" />
08        </property>
09    </bean>
10</beans>

Spring-service.xml

01<?xml version="1.0" encoding="UTF-8"?>
02<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
03    "http://www.springframework.org/dtd/spring-beans.dtd">
04 
05<beans>
06    <bean id="userManager" class="com.zuidaima.service.impl.UserManagerImpl">
07        <property name="userDAO">
08            <ref bean="userDAO" />
09        </property>
10    </bean>
11</beans>

5)构建bean工厂

在此只前,都是和利用spring+hibernate搭建web项目一致,这一步开始要有些不同了。由于axis1不支持spring,所以无法直接创建spring的容器,我们需要自己构建bean工厂。

创建BeanxmlFactoryl类,如下:

01package com.zuidaima.beanfactory;
02 
03import org.springframework.context.ApplicationContext;
04import org.springframework.context.support.ClassPathXmlApplicationContext;
05import com.zuidaima.service.UserManager;
06 
07/**
08 * 单列模式的bean工厂类 SpringBean Factory
09 *
10 * @author yoo
11 *
12 */
13public class BeanxmlFactory {
14    private static BeanxmlFactory beanxmlfactory = null;
15    private UserManager userManager = null;
16 
17    /*
18     * 私有的构造方法
19     */
20    private BeanxmlFactory() {
21        /**
22         * 读取spring+hibernate的配置文件
23         */
24        String[] configs = { "/spring-config.xml", "/spring-dao.xml",
25                "/spring-service.xml" };
26        ApplicationContext context = new ClassPathXmlApplicationContext(configs);
27        /*
28         * 获取制定的bean
29         */
30        this.userManager = (UserManager) context.getBean("userManager");
31    }
32 
33    /*
34     *
35     */
36    public synchronized static BeanxmlFactory getInstance() {
37        if (beanxmlfactory == null) {
38            beanxmlfactory = new BeanxmlFactory();
39        }
40        return beanxmlfactory;
41    }
42 
43    public UserManager getUserManager() {
44        return userManager;
45    }
46 
47}


0 0
原创粉丝点击