`
- 浏览:
157420 次
- 性别:
- 来自:
上海
-
使用XFire Spring构建Web Service(转)
一.本例概述
在本例中,我们将在业务逻辑类是一个用户的业务逻辑类,包括创建用户、获取单个用户、获取用户数组、获取用户列表四个方法,因该文讲的是XFire+Spring构建webservice,所以在该例中我们并不涉及具体的数据库操作,而只是提供模拟实现。方法描述如下:
1) 创建用户方法:createUser(User user)
通过传入User对象作为参数来才创建用户;
2) 通过用户名获取用户信息方法:getUser(String loginName)
根据用户名获取某用户对象,该方法返回的是一个User对象;
3) 返回所有用户的数组方法:getUserArray()
返回为User数组;
4) 返回所有用户的列表的方法:getUserList()
返回为List对象,放入的对象为User类型。
二.数据对象User.java
在上篇的例子中,src/webservice目录下新建example2目录,并在example2目录下建立User.java文件,下面看看数据对象User.java的内容,代码如下:
package webservice.example2;
import java.util.Date;
/** *//**
*用户对象.
*@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
*@version1.0
*Creationdate:2007-9-28-上午10:42:44
*/
publicclass User implements java.io.Serializable {
privatestaticfinallongserialVersionUID = 1L;
/** *//**用户名*/
private String loginName;
/** *//**用户密码*/
private String password;
/** *//**手机号*/
private String mobile;
/** *//**创建时间*/
private Date createTime;
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("loginName=" + this.loginName);
sb.append("|password=" + this.password);
sb.append("|mobile=" + this.mobile);
sb.append("|createDate=" + this.createTime);
return sb.toString();
}
}
三.用户业务类UserService.java及其实现UserServiceImpl.java
下面让我们来看看本例的业务逻辑接口类UserService.java的内容:
package webservice.example2;
import java.util.List;
/** *//**
*用户业务类.
*@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
*@version1.0
*Creationdate:2007-9-28-上午10:37:09
*/
publicinterface UserService {
/** *//**
*获取用户对象.
*@paramloginName用户名
*@return返回用户对象
*/
public User getUser(String loginName);
/** *//**
*创建用户.
*@paramuser用户对象
*@return返回创建的对象的toString()方法返回的内容
*/
public String createUser(User user);
/** *//**
*获取用户信息数组.
*@return返回用户信息数组
*/
public User[] getUserArray();
/** *//**
*获得用户信息列表.
*@return返回用户信息列表
*@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
*Creationdate:2007-9-28-下午12:55:37
*/
public List<User> getUserList();
}
它的实现类UserServiceImpl.java的内容如下:
package webservice.example2;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/** *//**
*用户业务实现类.
*@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
*@version1.0
*Creationdate:2007-9-28-上午10:54:11
*/
publicclass UserServiceImpl implements UserService {
/** *//**
*获取用户对象.
*@paramloginName用户名
*@return返回用户对象
*/
public User getUser(String loginName) {
User user = new User();
user.setLoginName(loginName);
user.setPassword("12345678");
user.setMobile("13812345678");
user.setCreateTime(new Date());
return user;
}
/** *//**
*创建用户.
*@paramuser用户对象
*@return返回创建的对象的toString()方法返回的内容
*/
public String createUser(User user) {
user.setCreateTime(new Date());
return user.toString();
}
/** *//**
*获取用户信息数组.
*@return返回用户信息数组
*/
public User[] getUserArray() {
User[] userList = new User[4];
userList[0] = getUser("阿蜜果");
userList[1] = getUser("sterning");
userList[2] = getUser("娟子");
userList[3] = getUser("老肖");
return userList;
}
/** *//**
*获得用户信息列表.
*@return返回用户信息列表
*@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
*Creationdate:2007-9-28-下午12:55:37
*/
public List<User> getUserList() {
List<User> userList = new ArrayList<User>();
userList.add(getUser("阿蜜果"));
userList.add(getUser("sterning"));
userList.add(getUser("娟子"));
userList.add(getUser("老肖"));
return userList;
}
}
注意:getUserList()方法返回的List中需要采用泛型,不然会部署失败。
到此为止,我们的业务已经完成,剩下的工作只是修改配置文件和编写测试类来进行测试。让我们继续往下走吧。
四.配置文件applicationContext.xml和xfire-servlet.xml的修改
在本小节中,我们需要修改配置文件。首先在applicationContext.xml文件中添加用户逻辑bean的定义,添加的代码如下:
<bean id="UserBean" class="webservice.example2.UserServiceImpl"/>
接下来我们还需要修改xfire-servlet.xml文件来暴露我们的Web Service,修改后的该文件内容如下所示:
<entry key="/UserService.ws">
<ref bean="UserService" />
</entry>
并添加如下bean的定义:
<bean id="UserService" parent="baseWebService">
<!-- 业务服务bean -->
<property name="serviceBean" ref="UserBean" />
<!-- 业务服务bean的窄接口类 -->
<property name="serviceClass" value="webservice.example2.UserService" />
</bean>
我们的Web Service已经开发完成,启动本项目后,可通过浏览器访问:http://localhost:8080/webservice_helloworld/UserService.ws?wsdl,我们可以在浏览器中看到该例的WSDL信息。
五.Web Service测试
在本小节我们将对上述完成的Web Service进行测试,首先我们在src目录下的client.xml文件增加如下内容:
<!-- 获取用户信息的例子 -->
<bean id="testUserWebService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
<property name="serviceClass"> <value>webservice.example2.UserService</value>
</property>
<property name="wsdlDocumentUrl">
<value>http://localhost:8080/webservice_helloworld/UserService.ws?wsdl</value>
</property>
</bean>
接着我们在src/test目录下建立UserServiceClientTest.java类,编写测试代码如下:
package test;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import webservice.example2.User;
import webservice.example2.UserService;
/** *//**
* 用户业务测试类.
* @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
* @version 1.0
* Creation date: 2007-9-28 - 下午12:03:06
*/
public class UserServiceClientTest {
public static void main(String[] args) throws Exception {
<!---->UserServiceClientTest test = new UserServiceClientTest();
test.testClient();
}
public void testClient() throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"client.xml");
UserService userService = (UserService) ctx.getBean("testUserWebService");
//测试getUser()方法
System.out.println("--------------getUser()------------");
User user = userService.getUser("阿蜜果");
System.out.println(user);
//测试getArray()方法
System.out.println("--------------getUserArray()------------");
User[] userArray = userService.getUserArray();
for (int i = 0; i < userArray.length; i++) {
System.out.println("i=" + i + "|" + userArray[i]);
}
//测试createUser()方法
System.out.println("--------------createUser()------------");
User newUser = new User();
newUser.setLoginName("离离");
newUser.setPassword("123");
newUser.setMobile("13666666666");
String result = userService.createUser(newUser);
System.out.println(result);
//测试getUserList()方法
List<User> userList = userService.getUserList();
System.out.println("--------------getUserList()------------");
for (int i = 0; i < userList.size(); i++) {
System.out.println("i=" + i + "|" + userList.get(i));
}
}
}
大家可以运行该类,来查看运行效果。
<!---->
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
【使用XFire+Spring构建Web Service】是一种高效且灵活的方法,尤其适合于那些希望利用Spring框架的优秀特性来开发Web Service应用的开发者。XFire是一个先进的Web Service框架,与Axis2并列为新一代的选择,因其...
总结,使用XFire和Spring构建Web Service,可以利用Spring的IoC和AOP特性简化服务的创建和管理,同时XFire提供了高效且灵活的Web Service实现。通过以上步骤,开发者可以快速地搭建自己的Web Service,并与其他系统...
总之,使用XFire和Spring构建Web服务允许你利用Spring的灵活性和XFire的效率来创建高性能的服务。这种方式使得服务的开发、管理和维护变得更加简单,尤其适合大型企业级应用。通过实践这个教程,你不仅可以学习到Web...
总结来说,这个例子不仅展示了如何使用XFire+Spring构建Web服务,还涵盖了处理复杂数据类型、对象序列化、服务发布、异常处理等多个关键点。通过这样的实践,开发者可以更好地理解Web服务的实现原理,并能够灵活地...
这篇博客可能讨论的是如何将这三个技术——XFire、iBatis和Spring——集成在一起,构建一个Web服务应用程序。在这样的集成中,Spring可以管理整个应用的生命周期,包括XFire的Web服务和iBatis的数据访问层。通过...
【使用 XFire 与 Spring 开发 Web Service】 Web Service是一种基于标准协议的接口,它允许不同应用程序之间进行互操作性,不受平台或编程语言限制。XFire是Apache CXF项目的一部分,是一个轻量级的、高性能的Java ...
【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...
由于XFire与Spring框架的深度融合,使得开发者能够更加便利地在Spring环境中构建Web Service应用,这正是XFire在开源社区受到追捧的原因。 在XFire与Spring集成开发的过程中,主要分为以下几个步骤: 1. **配置web...
内容概要:本文档提供了基于XFire和Spring框架集成来搭建Web Service的基本指南。具体包含了创建服务接口和服务实现类(Echo 和 EchoImpl),并在Spring的应用上下文中配置XFire Exporter进行Web服务发布以及相应的...
在本教程中,我们将深入探讨如何使用XFire和Spring框架来发布Web服务。XFire是Apache CXF项目的一部分,它是一个强大的Java Web服务框架,而Spring则是Java开发中的一个核心框架,提供了依赖注入、AOP(面向切面编程...