zoukankan      html  css  js  c++  java
  • xfire+spring webservice

    转自:http://blog.csdn.net/joe_007/article/details/7086702

    转载:http://www.cnblogs.com/boogle/archive/2008/09/20/1294924.html

    网上介绍XFire方面的文章已经很多了,我主要是介绍一下与Spring开发的集成,做个例子,抛块砖吧。
     
    个人感受:先谈个人感受,可以更加明确和了解开发中的思路,XFire与Spring可以说得上绝配,如果你开发所采用的架构是SSH模式,或者有Spring框架,那么你就正常开发,不要管web service,你只需要明白哪个类是用于web service的,并且在Spring测试通过,你的web service服务端开发可以说基本搞定。
     
    说明:
    我写这文章主要是说明开发过程及给个例子,并不是讲web service 协议或者spring开发。我有时间可以写点这方面的内容。
     
    开发环境:
    1,JDK 1.6.0
    2,Eclipse JEE 3.4,外加XFire eclipse plugin(主要用于客户端开发)。
    3,tomcat-5.5.26
    4,SoapUI 主要用于测试。
    5,下载xfire-distribution-1.2.6.zip,pjl-comp-filter-1.6.6.zip(用于传输压缩)
    需求:
    对外提供一个表的增删改查。
     
    开发步骤:
    1,建立web开发环境。
    2,拷贝需要采用的依赖包。
    3,开发业务功能。
    4,配置Spring。
    5,配置web service。
    6,测试。
     
    开发:
    1,建立web开发环境。
    用eclipse建立一个动态web项目(myeclipse也一样,需要配置tomcat用于提供web service)。
    2,拷贝需要采用的依赖包。
    解压xfire-distribution-1.2.6.zip,pjl-comp-filter-1.6.6.zip拷贝lib里面的内容及xfire-all-1.2.6.jar,pjl-comp-filter-1.6.6.jar,ORACLE驱动classes12.jar。
    3,开发业务功能。
    建立表结构

    create table HD.HDUSER
    (
      ID NUMBER(8) not null,
      NAME NVARCHAR2(16) not null,
      PASSWD NVARCHAR2(16)
    )
    tablespace HANDLEWELL
      pctfree 10
      initrans 1
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );

     
    建立业务对象
     

    public class User implements Serializable {

        private static final long serialVersionUID = -4924323782825351658L;
        
        private Integer id;
        private String name;
        private String passwd;

        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 getPasswd() {
            return passwd;
        }

        public void setPasswd(String passwd) {
            this.passwd = passwd;
        }

        @Override
        public String toString() {
            StringBuffer sb = new StringBuffer("User:[");
            sb.append("ID:").append(id).append(",");
            sb.append("Name:").append(name).append(",");
            sb.append("Passwd:").append(passwd).append("]");
            return sb.toString();
        }

    }

    建立业务接口

     

    public interface IUserService {
        public boolean addUser(int id, String name, String passwd);
        public boolean modifyUser(int id, String name, String passwd);
        public User queryUser(int id);
        public boolean deleteUser(int id);
    }

    建立DAO接口

    public interface IUserDAO {
        public boolean addUser(User user);
        public boolean modifyUser(User user);
        public User queryUser(int id);
        public boolean deleteUser(int id);
    }

    实现DAO接口

    public class UserDAOImpl extends JdbcDaoSupport implements IUserDAO {

        @Override
        public boolean addUser(User user) {
            String sql = "insert into HDUSER(id, name, passwd)values(" + user.getId() + ",'" + user.getName() + "','" + user.getPasswd() + "')";
            this.getJdbcTemplate().execute(sql);
            return true;
        }

        @Override
        public boolean deleteUser(int id) {
            String sql = "delete from HDUSER where id=" + id;
            this.getJdbcTemplate().execute(sql);
            return true;
        }

        @Override
        public boolean modifyUser(User user) {
            // TODO Auto-generated method stub

            return false;
        }

        @Override
        public User queryUser(int id) {
            // TODO Auto-generated method stub

            return null;
        }

    }

    实现业务

    public class UserServiceImpl implements IUserService {
        
        private IUserDAO userDAO;
        
        public IUserDAO getUserDAO() {
            return userDAO;
        }

        public void setUserDAO(IUserDAO userDAO) {
            this.userDAO = userDAO;
        }

        @Override
        public boolean addUser(int id, String name, String passwd) {
            User u = new User();
            u.setId(new Integer(id));
            u.setName(name);
            u.setPasswd(passwd);
            this.getUserDAO().addUser(u);
            return true;
        }

        @Override
        public boolean deleteUser(int id) {
            // TODO Auto-generated method stub

            return false;
        }

        @Override
        public boolean modifyUser(int id, String name, String passwd) {
            // TODO Auto-generated method stub

            return false;
        }

        @Override
        public User queryUser(int id) {
            // TODO Auto-generated method stub

            return null;
        }

    }

    4,配置Spring。

    在WEB-INF下建立applicationContext.xml文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <bean id="userBean" class="com.handlewell.user.service.impl.UserServiceImpl">
            <property name="userDAO" ref="userDAO" />
        </bean>
        
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
               <property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property>
               <property name="jdbcUrl"><value>jdbc:oracle:thin:@localhost:1521:orcl</value></property>
            <property name="user"><value>hd</value></property>
            <property name="password"><value>hd</value></property>
        </bean>
        
        <bean id="userDAO" class="com.handlewell.user.dao.impl.UserDAOImpl">
            <property name="dataSource" ref="dataSource" />
        </bean> 

    </beans>

    在web.xml文件加入Spring配置

    <!-- begin Spring 配置 -->
        <context-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml</param-value>
        </context-param>
         <listener>
           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
         <listener> 
           <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
        </listener>
        <!-- end Spring配置 -->

    5,配置web service。

    在WEB-INF下建立xfire-servlet.xml文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <!-- 引入XFire配置信息 -->
        <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
        
        <!-- 定义访问的url-->
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
           <property name="urlMap"> 
               <map> 
                  <entry key="/userService.ws"> 
                      <ref bean="userService" /> 
                  </entry> 
               </map> 
           </property> 
        </bean>

        <!-- 使用XFire导出器 -->
        <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
           <property name="serviceFactory" ref="xfire.serviceFactory" />
           <property name="xfire" ref="xfire" />
        </bean>
        
        <!-- 建立web service服务 -->
        <bean id="userService" parent="baseWebService">
           <property name="serviceBean" ref="userBean" />
           <property name="serviceClass" value="com.handlewell.user.service.IUserService" />
        </bean>
    </beans>

    在web.xml中加入

    <!-- begin XFire 配置 -->
        <servlet> 
           <servlet-name>xfire</servlet-name> 
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        </servlet> 
        <servlet-mapping> 
           <servlet-name>xfire</servlet-name>
           <url-pattern>*.ws</url-pattern>
        </servlet-mapping>
        <!-- end XFire配置 -->

    至此开发工作结束。

    6,测试。

    启动tomcat服务,先访问一下WSDL信息http://localhost:8080/sx/userService.ws?wsdl

  • 相关阅读:
    虚拟环境地址
    ubuntu 查看占用文件空间大小
    drf serializer官网所得
    百度api 找到当前电话号码归属地
    mongo 改bug
    django orm 读写分离,分库分app
    __setattr__,__getattr__,__getattribute__
    Python之路--Django--模型
    Python之路--Django--模板
    Python之路--Django--视图
  • 原文地址:https://www.cnblogs.com/summer520/p/3567037.html
Copyright © 2011-2022 走看看