posts - 297,  comments - 1618,  trackbacks - 0
              《使用XFire+Spring構建Web Service(一)——helloWorld篇》文中我們通過一個簡單的XFire+Spring實例,該實例的sayHelloWorld()方法通過傳入一個字符串參數(shù)來返回一個字符串,而實際的應用過程中,遇到的情況比這個要復雜得多,例如,傳入?yún)?shù)是對象、返回自定義對象、返回數(shù)組、返回列表。下面讓我們在此文中對XFire+Spring進行更深層的探討吧。

          一.             本例概述

          在本例中,我們將在業(yè)務邏輯類是一個用戶的業(yè)務邏輯類,包括創(chuàng)建用戶、獲取單個用戶、獲取用戶數(shù)組、獲取用戶列表四個方法,因該文講的是XFire+Spring構建webservice,所以在該例中我們并不涉及具體的數(shù)據(jù)庫操作,而只是提供模擬實現(xiàn)。方法描述如下:

          1) 創(chuàng)建用戶方法:createUser(User user)

          通過傳入User對象作為參數(shù)來才創(chuàng)建用戶;

          2) 通過用戶名獲取用戶信息方法:getUser(String loginName)

          根據(jù)用戶名獲取某用戶對象,該方法返回的是一個User對象;

          3) 返回所有用戶的數(shù)組方法:getUserArray()

          返回為User數(shù)組;

          4) 返回所有用戶的列表的方法:getUserList()

          返回為List對象,放入的對象為User類型。

          二.             數(shù)據(jù)對象User.java

          在上篇的例子中,src/webservice目錄下新建example2目錄,并在example2目錄下建立User.java文件,下面看看數(shù)據(jù)對象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;

              
          /**創(chuàng)建時間*/
              
          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();
              }

          }


          三.             用戶業(yè)務類UserService.java及其實現(xiàn)UserServiceImpl.java

          下面讓我們來看看本例的業(yè)務邏輯接口類UserService.java的內容:

          package webservice.example2;

          import java.util.List;

          /**
           *用戶業(yè)務類.
           *
          @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);

              
          /**
               *創(chuàng)建用戶.
               *@paramuser用戶對象
               *@return返回創(chuàng)建的對象的toString()方法返回的內容
               
          */

              
          public String createUser(User user);

              
          /**
               *獲取用戶信息數(shù)組.
               *@return返回用戶信息數(shù)組
               
          */

              
          public User[] getUserArray();
              
              
          /**
               *獲得用戶信息列表.
               *@return返回用戶信息列表
               *
          @author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
               *Creationdate:2007-9-28-下午12:55:37
               
          */

              
          public List<User> getUserList();
          }


          它的實現(xiàn)類UserServiceImpl.java的內容如下:

          package webservice.example2;

          import java.util.ArrayList;
          import java.util.Date;
          import java.util.List;

          /**
           *用戶業(yè)務實現(xiàn)類.
           *
          @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;
              }


              
          /**
               *創(chuàng)建用戶.
               *@paramuser用戶對象
               *@return返回創(chuàng)建的對象的toString()方法返回的內容
               
          */

              
          public String createUser(User user) {
                 user.setCreateTime(
          new Date());
                 
          return user.toString();
              }


              
          /**
               *獲取用戶信息數(shù)組.
               *@return返回用戶信息數(shù)組
               
          */

              
          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中需要采用泛型,不然會部署失敗。

          到此為止,我們的業(yè)務已經(jīng)完成,剩下的工作只是修改配置文件和編寫測試類來進行測試。讓我們繼續(xù)往下走吧。

          四.             配置文件applicationContext.xmlxfire-servlet.xml的修改

          在本小節(jié)中,我們需要修改配置文件。首先在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">
                 
          <!-- 業(yè)務服務bean -->
                 
          <property name="serviceBean" ref="UserBean" />
                 
          <!-- 業(yè)務服務bean的窄接口類 -->
                 
          <property name="serviceClass" value="webservice.example2.UserService" />
              
          </bean>

             我們的Web Service已經(jīng)開發(fā)完成,啟動本項目后,可通過瀏覽器訪問:http://localhost:8080/webservice_helloworld/UserService.ws?wsdl,我們可以在瀏覽器中看到該例的WSDL信息。

          五.             Web Service測試

          在本小節(jié)我們將對上述完成的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;

          /**
           * 用戶業(yè)務測試類.    
           * 
          @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));
                  }

              }

          }

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

          posted on 2007-09-28 13:50 阿蜜果 閱讀(15215) 評論(102)  編輯  收藏 所屬分類: Web Service
          評論共2頁: 上一頁 1 2 


          FeedBack:
          # re: 使用XFire+Spring構建Web Service(二)
          2007-09-28 13:57 | 千里冰封
          呵呵,不錯,女孩搞程序的本來就少,搞得這么牛的就更少了:)  回復  更多評論
            
          # re: 使用XFire+Spring構建Web Service(二)
          2007-09-28 15:19 | Bruce Luo
          親愛的阿米果妹妹,親一個!好樣的!  回復  更多評論
            
          評論共2頁: 上一頁 1 2 
          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統(tǒng)分析與建模實戰(zhàn)  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2296322
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汶上县| 安塞县| 邓州市| 尚义县| 翁牛特旗| 云南省| 扶风县| 茂名市| 桐庐县| 神池县| 河池市| 上饶县| 陕西省| 宁武县| 根河市| 安阳县| 江陵县| 天柱县| 吐鲁番市| 通州区| 孝义市| 深泽县| 桃园县| 太湖县| 郎溪县| 阳西县| 沁阳市| 密山市| 怀来县| 武山县| 平邑县| 阿尔山市| 中西区| 建始县| 赞皇县| 威远县| 阳高县| 惠东县| 白朗县| 略阳县| 东丰县|