功能描述:平常在项目中使用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

 

 

发布于2010-07-14 

posted on 2014-06-04 17:56  ymlove7  阅读(182)  评论(0)    收藏  举报