XFire+Spring整合構建Web Service的框架搭建實例代碼下載

原文:XFire+Spring整合構建Web Service的框架搭建實例代碼下載

源代碼下載地址:http://www.zuidaima.com/share/1751866791365632.htm


     在《使用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的內容,代碼如下:

package webservice.example2;

 import java.util.Date;

 /** */ /**
 *用戶對象. 
 *@author<a href="mailto:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">AmigoXie</a>
 *@version1.0
 *Creationdate:2007-9-28-上午10:54:11
 */
publicclass UserServiceImpl implements UserService ]=getUser("老肖");
 return userList;
 }

 /** *//**
 *獲得用戶信息列表.
 *@return返回用戶信息列表
 *@author<a href="mailto:[email protected]">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:[email protected]">AmigoXie</a>
 * @version 1.0
 * Creation date: 2007-9-28 - 下午12:03:06
 */
 public class UserServiceClientTest ; i <userList.size(); i++) {
 System.out.println("i="+ i + "|" + userList.get(i));
 }
 }
}

    大家可以運行該類,來查看運行效果。
    運行有問題的人可在此留下你們的email給我,我將這個工程發給你們。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章