• 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

  • 相关阅读:
    稳扎稳打Silverlight(13) 2.0交互之鼠标事件和键盘事件
    稳扎稳打Silverlight(17) 2.0数据之详解DataGrid, 绑定数据到ListBox
    再接再厉VS 2008 sp1 + .NET 3.5 sp1(2) Entity Framework(实体框架)之详解 Linq To Entities 之一
    稳扎稳打Silverlight(8) 2.0图形之基类System.Windows.Shapes.Shape
    稳扎稳打Silverlight(11) 2.0动画之ColorAnimation, DoubleAnimation, PointAnimation, 内插关键帧动画
    稳扎稳打Silverlight(21) 2.0通信之WebRequest和WebResponse, 对指定的URI发出请求以及接收响应
    稳扎稳打Silverlight(16) 2.0数据之独立存储(Isolated Storage)
    稳扎稳打Silverlight(9) 2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush
    稳扎稳打Silverlight(23) 2.0通信之调用WCF的双向通信(Duplex Service)
    游戏人生Silverlight(1) 七彩俄罗斯方块[Silverlight 2.0(c#)]
  • 原文地址:https://www.cnblogs.com/summer520/p/3567037.html
Copyright © 2020-2023  润新知