使用cxf进行javabean的传递,以及复杂类型(list)的传递。
1,建立一个web service。
然后建立自定义对象User
package com.duduli.user; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import org.apache.cxf.aegis.type.java5.XmlType; //@XmlType(name = "user") //@XmlAccessorType(XmlAccessType.FIELD) public class User { public User(){ }; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
似乎注解可有可无
2,建立基础发送传递方式javabean和list
@WebMethod(operationName = "getU", action = "urn:GetU") public User getU(); @WebMethod(operationName = "getUserArray", action = "urn:GetUserArray") public ArrayList<User> getUserArray();
上面为一个interface,请对其进行实现
@Override public User getU() { // TODO Auto-generated method stub User u = new User(); u.setName("duduli"); u.setAge(21); return u; } @Override public ArrayList<User> getUserArray() { // TODO Auto-generated method stub System.out.println("return array"); User u = new User(); u.setName("tom"); u.setAge(23); ArrayList<User> l = new ArrayList<User>(); l.add(u); return l; }
3,开启web service。
客户端调用。
使用eclipse for javaee
建立一个动态web 项目
填写项目名称之后,点击完成。
在项目名称上点击右键,新建web service client
填写wsdl
点击完成后就会出现一堆java类文件。
然后编写测试类
@org.junit.Test public void test02() { FirstImpService fis = new FirstImpService(); First f = fis.getFirstImpPort(); User u = f.getU(); System.out.println(u.getName()); System.out.println(u.getAge()); } @org.junit.Test public void test03() { FirstImpService fis = new FirstImpService(); First f = fis.getFirstImpPort(); List<User> u = f.getUserArray(); for(User user:u){ System.out.println(user.getName()); System.out.println(user.getAge()); } }
注意在这里传递list或map对象的时候不能穿List要它的实现类,ArrayList。map也是一样。使用HashMap进行传送,否则客户端执行的时候会出现类型转换不成功。