javascript
使用XFire+Spring构建Web Service(二)
來源:http://www.blogjava.net/amigoxie/archive/2007/09/28/149074.html
在《使用XFire+Spring構建Web Service(一)——helloWorld篇》文中我們通過一個簡單的XFire+Spring實例,該實例的sayHelloWorld()方法通過傳入一個字符串參數來返回一個字符串,而實際的應用過程中,遇到的情況比這個要復雜得多,例如,傳入參數是對象、返回自定義對象、返回數組、返回列表。下面讓我們在此文中對XFire+Spring進行更深層的探討吧。
一.?????????????本例概述
在本例中,我們將在業務邏輯類是一個用戶的業務邏輯類,包括創建用戶、獲取單個用戶、獲取用戶數組、獲取用戶列表四個方法,因該文講的是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的內容,代碼如下:
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的內容:
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類,編寫測試代碼如下:
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));
????????}
????}
}
??? 大家可以運行該類,來查看運行效果。
總結
以上是生活随笔為你收集整理的使用XFire+Spring构建Web Service(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言 快速排序
- 下一篇: k8s与云服务器之间服务互访之节点网络打