功能描述:平常在項目中使用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
環境描述:myeclipse6.5+xfire1.2
核心代碼:
普通的JavaBean:Users.java(該類是一普通的JavaBean,建議實現java.io.Serializable接口)主要用來實現List<Users>這種功能










































































































































































點我下載完整的例子
參考文檔:http://docs.codehaus.org/display/XFIRE/User%27s+Guide