溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
                  功能描述:平常在項目中使用xfire來寫webservice返回值大都為字符串,今天無意間查看了xfire的官方文檔,發現用xfire來編寫返回值為list的web服務也很簡單。但步驟稍微繁瑣一點。怕遺忘,特此記錄一番。
                  環境描述:myeclipse6.5+xfire1.2
                  核心代碼:
                  普通的JavaBean:Users.java(該類是一普通的JavaBean,建議實現java.io.Serializable接口)主要用來實現List<Users>這種功能
                  
          package com.xfiredemo.entity;

          import java.io.Serializable;

          @SuppressWarnings(
          "serial")
          public class Users implements Serializable{
              
              
          private int id;
              
          private String username;
              
          private String sex;
              
          private int age;
              
          private String memo;
              
          public int getId() {
                  
          return id;
              }

              
          public void setId(int id) {
                  
          this.id = id;
              }

              
          public String getUsername() {
                  
          return username;
              }

              
          public void setUsername(String username) {
                  
          this.username = username;
              }

              
          public String getSex() {
                  
          return sex;
              }

              
          public void setSex(String sex) {
                  
          this.sex = sex;
              }

              
          public int getAge() {
                  
          return age;
              }

              
          public void setAge(int age) {
                  
          this.age = age;
              }

              
          public String getMemo() {
                  
          return memo;
              }

              
          public void setMemo(String memo) {
                  
          this.memo = memo;
              }

          }

                  webservice接口IUsersService
                  
          package com.xfiredemo.service;

          import java.util.List;

          import com.xfiredemo.entity.Users;

          /**
           * webservice接口
           * 
          @author coder
           *
           
          */

          public interface IUsersService {
              
              
          public List<Users> getUsers();
              
          }
                  用于描述該webservice接口中返回值類型的描述文件IUsersService.aegis.xml(該文件必須與webservice中的接口位于同一目錄,且命名遵循webservice接口名.aegis.xml 如本文件IUsersService.aegis.xml)
                  
          <?xml version="1.0" encoding="UTF-8"?>
              
          <!-- 
                  該文件用來描述IUsersService接口中getUsers()方法返回值的類型
                  該文件必須與IUsersService位于同一目錄中,且該文件遵循如下命名規則
                  webservice接口名.aegis.xml 如本文件IUsersService.aegis.xml
              
          -->
          <mappings>
              
          <!-- 映射getUsers方法返回值類型 -->
              
          <mapping>
                  
          <method name="getUsers">
                      
          <return-type componentType="#users"/>
                  
          </method>
                  
          <!--
                      name對應<return-type componentType="#users"/>中的componentType 
                      class為實體bean的類型即list中存放的類型 
                      componentType為實體bean的類型
                  
          -->
                  
          <component name="users" class="com.xfiredemo.entity.Users" componentType="com.xfiredemo.entity.Users"/>
              
          </mapping>
          </mappings>
                  webservice接口實現類UsersServiceImpl.java (構造模擬數據)
          package com.xfiredemo.service;

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

          import com.xfiredemo.entity.Users;

          /**
           * webservice實現類
           * @author coder
           *
           */
          public class UsersServiceImpl implements IUsersService {
              
              //返回users對象的集合
              public List
          <Users> getUsers() {
                  
                  /*******************模擬數據庫往list中添加三條模擬數據并返回******************/
                  List
          <Users> list=new ArrayList<Users>();
                  Users users=new Users();
                  users.setId(1);
                  users.setUsername("user1");
                  users.setSex("男");
                  users.setAge(20);
                  users.setMemo("暫無");
                  list.add(users);
                  
                  users=new Users();
                  users.setId(2);
                  users.setUsername("user2");
                  users.setSex("男");
                  users.setAge(20);
                  users.setMemo("暫無");
                  list.add(users);
                  
                  users=new Users();
                  users.setId(3);
                  users.setUsername("user3");
                  users.setSex("男");
                  users.setAge(20);
                  users.setMemo("暫無");
                  list.add(users);
                  
                  return list;
              }
              
          }
                  客戶端測試代碼:UsersServiceClient.java
          package com.xfiredemo.service.client;

          import java.net.MalformedURLException;
          import java.util.List;

          import org.codehaus.xfire.client.XFireProxyFactory;
          import org.codehaus.xfire.service.Service;
          import org.codehaus.xfire.service.binding.ObjectServiceFactory;

          import com.xfiredemo.entity.Users;
          import com.xfiredemo.service.IUsersService;

          /**
           * webservice客戶端測試類
           * 
          @author coder
           *
           
          */

          public class UsersServiceClient {
              
              
          public static void main(String[] args) {
                  
          //構建service
                  Service service=new ObjectServiceFactory().create(IUsersService.class);
                  
          try {
                      
          //獲得自定義webservice接口
                      IUsersService usersService=(IUsersService) new XFireProxyFactory().create(service, "http://localhost:8080/xfiredemo/services/UsersService");
                      
          //調用該webservice中定義的getUsers()方法
                      List<Users> list=usersService.getUsers();
                      
          //輸出list長度
                      System.out.println(list.size());
                      
          //遍歷list
                      for (Users users : list) {
                          System.out.println(
          "id:"+users.getId()+"\tusername:"+users.getUsername()+"\tsex:"+users.getSex()+"\tage:"+users.getAge()+"\tmemo:"+users.getMemo());
                      }

                  }
           catch (MalformedURLException e) {
                      e.printStackTrace();
                  }

                  
                  
              }

          }

                  效果圖:

                  
                   點我下載完整的例子
                  參考文檔:http://docs.codehaus.org/display/XFIRE/User%27s+Guide
          posted on 2010-07-14 11:05 雪山飛鵠 閱讀(8978) 評論(4)  編輯  收藏 所屬分類: webservice

          Feedback

          # re: 輕松使用xfire編寫返回值為list的webservice服務 2011-10-31 20:15 不知道
          客戶端怎么會有服務器端定義的users類型嗎????  回復  更多評論
            

          # re: 輕松使用xfire編寫返回值為list的webservice服務 2012-05-02 17:14 玩兒
          都很好,可是這樣一個簡單工程怎么編譯運行啊?  回復  更多評論
            

          # re: 輕松使用xfire編寫返回值為list的webservice服務 2013-06-18 11:21 路過的
          返回類型不是List結構嗎 怎么又成了VO??  回復  更多評論
            

          # re: 輕松使用xfire編寫返回值為list的webservice服務 2013-11-22 11:59 yanyujiang
          @不知道
          我也有這個疑問,感覺這都是在服務端上的,而不是客戶端上的。webservice服務端和客戶端不是分開的嗎?  回復  更多評論
            

          主站蜘蛛池模板: 庆阳市| 塔城市| 嘉鱼县| 乌审旗| 阳信县| 寿光市| 台州市| 铜梁县| 华亭县| 辽宁省| 佛学| 英德市| 屏东县| 长沙县| 福海县| 三河市| 滦平县| 乐东| 格尔木市| 大庆市| 新干县| 吉林市| 龙海市| 卓资县| 和政县| 和平区| 来凤县| 呼伦贝尔市| 鄱阳县| 交口县| 曲水县| 蓬溪县| 寿宁县| 宜君县| 谷城县| 钟山县| 绥滨县| 丹寨县| 内丘县| 云安县| 涪陵区|