转自: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
xfire+spring webservice