一. 本例概述
在本例中,我们将在业务逻辑类是一个用户的业务逻辑类,包括创建用户、获取单个用户、获取用户数组、获取用户列表四个方法,因该文讲的是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<ahref="mailto:xiexingxing1121@126.com">AmigoXie</a>
*@version1.0
*Creationdate:2007-9-28-上午10:42:44
*/

publicclassUser
implements
java.io.Serializable
{
privatestaticfinallongserialVersionUID=1L;

/***//**用户名*/
privateStringloginName;

/***//**用户密码*/
privateStringpassword;

/***//**手机号*/
privateStringmobile;

/***//**创建时间*/
privateDatecreateTime;

publicDategetCreateTime()
{
returncreateTime;
}

publicvoidsetCreateTime(DatecreateTime)
{
this.createTime=createTime;
}

publicStringgetLoginName()
{
returnloginName;
}

publicvoidsetLoginName(StringloginName)
{
this.loginName=loginName;
}

publicStringgetMobile()
{
returnmobile;
}

publicvoidsetMobile(Stringmobile)
{
this.mobile=mobile;
}

publicStringgetPassword()
{
returnpassword;
}

publicvoidsetPassword(Stringpassword)
{
this.password=password;
}

publicStringtoString()
{
StringBuffersb=newStringBuffer();
sb.append("loginName="+this.loginName);
sb.append("|password="+this.password);
sb.append("|mobile="+this.mobile);
sb.append("|createDate="+this.createTime);
returnsb.toString();
}
}
三. 用户业务类UserService.java及其实现UserServiceImpl.java
下面让我们来看看本例的业务逻辑接口类UserService.java的内容:
package
webservice.example2;
import
java.util.List;

/***/
/**
*用户业务类.
*@author<ahref="mailto:xiexingxing1121@126.com">AmigoXie</a>
*@version1.0
*Creationdate:2007-9-28-上午10:37:09
*/

publicinterfaceUserService
{
/***//**
*获取用户对象.
*@paramloginName用户名
*@return返回用户对象
*/
publicUsergetUser(StringloginName);

/***//**
*创建用户.
*@paramuser用户对象
*@return返回创建的对象的toString()方法返回的内容
*/
publicStringcreateUser(Useruser);

/***//**
*获取用户信息数组.
*@return返回用户信息数组
*/
publicUser[]getUserArray();

/***//**
*获得用户信息列表.
*@return返回用户信息列表
*@author<ahref="mailto:xiexingxing1121@126.com">AmigoXie</a>
*Creationdate:2007-9-28-下午12:55:37
*/
publicList<User>getUserList();
}

它的实现类UserServiceImpl.java的内容如下:
package
webservice.example2;
import
java.util.ArrayList;
import
java.util.Date;
import
java.util.List;

/***/
/**
*用户业务实现类.
*@author<ahref="mailto:xiexingxing1121@126.com">AmigoXie</a>
*@version1.0
*Creationdate:2007-9-28-上午10:54:11
*/

publicclassUserServiceImpl
implements
UserService
{
/***//**
*获取用户对象.
*@paramloginName用户名
*@return返回用户对象
*/
publicUsergetUser(StringloginName)
{
Useruser=newUser();
user.setLoginName(loginName);
user.setPassword("12345678");
user.setMobile("13812345678");
user.setCreateTime(newDate());
returnuser;
}

/***//**
*创建用户.
*@paramuser用户对象
*@return返回创建的对象的toString()方法返回的内容
*/
publicStringcreateUser(Useruser)
{
user.setCreateTime(newDate());
returnuser.toString();
}

/***//**
*获取用户信息数组.
*@return返回用户信息数组
*/
publicUser[]getUserArray()
{
User[]userList=newUser[4];
userList[0]=getUser("阿蜜果");
userList[1]=getUser("sterning");
userList[2]=getUser("娟子");
userList[3]=getUser("老肖");
returnuserList;
}

/***//**
*获得用户信息列表.
*@return返回用户信息列表
*@author<ahref="mailto:xiexingxing1121@126.com">AmigoXie</a>
*Creationdate:2007-9-28-下午12:55:37
*/
publicList<User>getUserList()
{
List<User>userList=newArrayList<User>();
userList.add(getUser("阿蜜果"));
userList.add(getUser("sterning"));
userList.add(getUser("娟子"));
userList.add(getUser("老肖"));
returnuserList;
}
}
注意: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<ahref="mailto:xiexingxing1121@126.com">AmigoXie</a>
*@version1.0
*Creationdate:2007-9-28-下午12:03:06
*/

public
class
UserServiceClientTest
{
publicstaticvoidmain(String[]args)throwsException
{
UserServiceClientTesttest=newUserServiceClientTest();
test.testClient();
}

publicvoidtestClient()throwsException
{
ApplicationContextctx=newClassPathXmlApplicationContext(
"client.xml");
UserServiceuserService=(UserService)ctx.getBean("testUserWebService");
//测试getUser()方法
System.out.println("--------------getUser()------------");
Useruser=userService.getUser("阿蜜果");
System.out.println(user);
//测试getArray()方法
System.out.println("--------------getUserArray()------------");
User[]userArray=userService.getUserArray();
for(inti=0;i<userArray.length;i++)
{
System.out.println("i="+i+"|"+userArray[i]);
}
//测试createUser()方法
System.out.println("--------------createUser()------------");
UsernewUser=newUser();
newUser.setLoginName("离离");
newUser.setPassword("123");
newUser.setMobile("13666666666");
Stringresult=userService.createUser(newUser);
System.out.println(result);
//测试getUserList()方法
List<User>userList=userService.getUserList();
System.out.println("--------------getUserList()------------");
for(inti=0;i<userList.size();i++)
{
System.out.println("i="+i+"|"+userList.get(i));
}
}
}
大家可以运行该类,来查看运行效果。
运行有问题的人可在此留下你们的email给我,我将这个工程发给你们。
本文深入探讨了如何使用XFire+Spring构建复杂Web服务,包括处理对象参数、返回自定义对象、数组、列表等场景。通过具体实例展示了创建用户、获取单个用户、用户数组和用户列表的方法,以及数据对象User的定义和业务逻辑实现。同时介绍了配置文件修改、测试类编写等关键步骤,最后提供了测试案例。
2862

被折叠的 条评论
为什么被折叠?



