zoukankan      html  css  js  c++  java
  • Web Service中的XFire 传输List 自定义对象.

    我把这个创建的步骤和代码的贴出来,.

    首先新建一个工程,取名就随便点啦..MyWebService,然后复制jar包到lib目录下, 创建包,建立接口..写一个javaBean的类,

    以下是一个简单的不能再简单的接口了,

    Java代码   收藏代码
    1. package pack.java.xfire.demo;  
    2. import java.util.List;  
    3. /** 
    4.  * @author Administrator 
    5.  * 服务端接口; 
    6.  */  
    7. public interface IPerson {  
    8.     public abstract List<Person> getPersonList();  
    9.     public abstract List<Person> setPersonList(List<Person> personList);  
    10.     public abstract Person getPersonObj();  
    11. }  

       接下来就是实现这个接口:

    Java代码   收藏代码
    1. package pack.java.xfire.demo;  
    2.   
    3. import java.io.Serializable;  
    4. import java.util.ArrayList;  
    5. import java.util.HashMap;  
    6. import java.util.List;  
    7. import java.util.Map;  
    8. /** 
    9.  * Service 端,实现类; 
    10.  * @author Administrator 
    11.  * 
    12.  */  
    13. public class PersonImpl implements IPerson,Serializable{  
    14.       
    15.     private static final long serialVersionUID = -9034712983379559694L;  
    16.   
    17.     public List<Person> getPersonList(){  
    18.         List<Person> list=new ArrayList<Person>();  
    19.         Person person=new Person();  
    20.         person.setAge(22);  
    21.         person.setName("Zhou");  
    22.         person.setSex("Boy");  
    23.         list.add(person);  
    24.         Person person2=new Person();  
    25.         person2.setAge(19);  
    26.         person2.setName("Peng");  
    27.         person2.setSex("Girl");  
    28.         list.add(person2);  
    29.         return list;  
    30.     }  
    31.       
    32.     public Person getPersonObj(){  
    33.         Person person=new Person();  
    34.         person.setAge(22);  
    35.         person.setName("ZengPing");  
    36.         person.setSex("Girl");  
    37.         Map<Integer, String> map=new HashMap<Integer, String>();  
    38.         map.put(1"HuFang");  
    39.         map.put(2"DuanYouYu");  
    40.         map.put(3"TianWei");  
    41.         List<String> list=new ArrayList<String>();  
    42.         list.add("List1");  
    43.         list.add("List2");  
    44.         list.add("List3");  
    45.         person.setList(list);  
    46.         person.setMap(map);  
    47.         return person;  
    48.     }  
    49.       
    50.     public List<Person> setPersonList(List<Person> personList){  
    51.         return personList;  
    52.     }  
    53. }  

      

    之后,在你的工程的src目录下建立,META-INF/xfire/services.xml文件,其内容如下:

    Xml代码   收藏代码
    1. <?xml version="1.0" encoding = "utf-8" ?>  
    2. <beans xmlns="http://xfire.codehaus.org/config/1.0">  
    3.     <service>  
    4.         <name>PersonService</name>  
    5.         <namespace>http://simple.java.xifire/IPerson</namespace>  
    6.         <serviceClass>pack.java.xfire.demo.IPerson</serviceClass>  
    7.         <implementationClass>pack.java.xfire.demo.PersonImpl</implementationClass>  
    8.         <scope>request</scope>    
    9.     </service>  
    10. </beans>  

    在启动web 服务器, 在浏览器中输入:

    http://localhost:8080/XFireServices/services/

    之后就能看到

    Available Services:

    • PersonService [wsdl]<!--Just filling space according to http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807--><!--Just filling space according to http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807-->

    点击进去之后,自动产生的一个对应的一些xml配置文件..

    配置客户端:

    1.建立客户端工程, 拷贝jar包到lib目录下, 然后建立包 和 接口,JavaBean等等, 这里说明一点:

    客户端建立的包和接口一样要和服务器端的接口和类一摸一样,还有服务器端的javaBean必须实现Serializable,才能够传输.

    否则会找不到,对应的文件, 从服务器返回过来的数据会为null;

    在写一个测试类,用来测试服务器的返回的数据,

    Java代码   收藏代码
    1. package pack.java.xfire.demo;  
    2.   
    3. import java.net.MalformedURLException;  
    4. import java.util.ArrayList;  
    5. import java.util.Iterator;  
    6. import java.util.List;  
    7. import java.util.Map;  
    8.   
    9. import org.codehaus.xfire.client.XFireProxyFactory;  
    10. import org.codehaus.xfire.service.Service;  
    11. import org.codehaus.xfire.service.binding.ObjectServiceFactory;  
    12.   
    13. /** 
    14.  * Client 测试端; 
    15.  * @author Administrator 
    16.  * 
    17.  */  
    18. public class ClientDemo {  
    19.   
    20.     /** 
    21.      * 主方法; 
    22.      * @param args 
    23.      */  
    24.     public static void main(String[] args) {  
    25.         // TODO Auto-generated method stub  
    26.         String  url="http://PC2009120421osa:8080/XFireServices/services/PersonService";  
    27.         Service serviceModel=new ObjectServiceFactory().create(IPerson.class);  
    28.         try {  
    29.             IPerson person=(IPerson) new XFireProxyFactory().create(serviceModel, url);  
    30.             List<Person> list=person.getPersonList();  
    31.             //输出Person list集合;  
    32.             for(Person per:list){  
    33.                 System.out.println(per.getName()+","+per.getAge()+","+per.getSex());  
    34.             }  
    35.             List<Person> list2=new ArrayList<Person>();  
    36.             Person person2=new Person();  
    37.             person2.setAge(11);  
    38.             person2.setName("Test");  
    39.             person2.setSex("Girl");  
    40.             list2.add(person2);  
    41.             //设置Person list集合;  
    42.             List<Person> personList2=person.setPersonList(list2);  
    43.             //输出从服务器端返回的集合数据;  
    44.             for (Person per : personList2) {  
    45.                 System.out.println(" "+per.getName()+","+per.getAge()+","+per.getSex());  
    46.             }  
    47.               
    48.             //调用服务器端的单个对象;  
    49.             Person person3 =person.getPersonObj();  
    50.             System.out.println(" "+person3.getName()+","+person3.getAge()+","+person3.getSex());  
    51.             Map<Integer,String> map=person3.getMap();  
    52.             System.out.println(" 服务器端返回的List集合");  
    53.             List<String> list3=person3.getList();  
    54.             for (String str : list3) {  
    55.                 System.out.println(str);  
    56.             }  
    57.             System.out.println(" 服务器端返回的Map集合");  
    58.             for(Iterator<Integer> iterator=map.keySet().iterator();iterator.hasNext();){  
    59.                 int resultKey=iterator.next();  
    60.                 String resultValue=map.get(resultKey);  
    61.                 System.out.println(resultKey+","+resultValue);  
    62.             }  
    63.         } catch (MalformedURLException e) {  
    64.             // TODO Auto-generated catch block  
    65.             e.printStackTrace();  
    66.         }  
    67.     }  
    68. }  

      

    控制台输出的结果如下:代表成功..

    -----------------------------------------------------------------------

    Zhou,22,Boy
    Peng,19,Girl

    Test,11,Girl

    ZengPing,22,Girl

    服务器端返回的List集合
    List1
    List2
    List3

    服务器端返回的Map集合

  • 相关阅读:
    Confd+Consul 动态生成配置文件
    Flask实例化的参数 及 对app的配置
    Flask 中的路由系统
    Flask 中内置的 Session
    Flask中的模板语言jinja2
    docker
    windows上使用git
    redis的源码编译安装+发布订阅+RDB持久化
    mariadb安装和mysql主从同步
    nginx负载均衡
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3306561.html
Copyright © 2011-2022 走看看