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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。