使用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进行传送,否则客户端执行的时候会出现类型转换不成功。