1、新建学生类databean
package databean; public class Student implements java.io.Serializable { private static final long serialVersionUID = 1L; 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、新建webservice服务类,包含三种类型方法,String数组,byte数组,Student对象bean
import java.io.ByteArrayOutputStream; import java.io.ObjectOutputStream; import databean.Student; public class ObjectService { /* * 返回一维字符串数组 */ public String[] getArray() { String[] strArray = new String[]{ "数组元素1", "数组元素2", "数组元素3" }; return strArray; } /* * 返回Student类的对象实例 */ public Student getStudent(String name,int age) { Student student = new Student(); student.setName(name); student.setAge(age); return student; } /* * 将Student类的对象实例序列化,并返回序列化后的字节数组 */ public byte[] getStudentBytes(String name,int age) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); // 将对象student写入 ObjectOutputStream Student student = new Student(); student.setName(name); student.setAge(age); oos.writeObject(student); return baos.toByteArray(); } }
3、新建客户端程序
package client; import java.io.ByteArrayInputStream; import java.io.ObjectInputStream; import java.util.Date; import javax.xml.namespace.QName; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; import databean.Student; public class ObjectRPCClient { public static void main(String[] args) throws Exception { RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/ObjectService"); options.setTo(targetEPR); System.out.println(new Date()+" ----调用 getArray-----"); QName opAddEntry = new QName("http://ws.apache.org/axis2", "getArray"); String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry,new Object[]{}, new Class[]{String[].class })[0]; for (String s : strArray){ System.out.println(s); } System.out.println(new Date()+" ----调用 getStudent(String name,int age)-----"); opAddEntry = new QName("http://ws.apache.org/axis2", "getStudent"); databean.Student student = (databean.Student) serviceClient.invokeBlocking( opAddEntry, new Object[]{"张三",20}, new Class[]{databean.Student.class})[0]; System.out.println(student.getName()+" "+student.getAge()); System.out.println(new Date()+" ----调用 getStudentBytes(String name,int age)-----"); opAddEntry = new QName("http://ws.apache.org/axis2", "getStudentBytes"); byte[] bytes = (byte[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{"李四",21}, new Class[]{byte[].class})[0]; ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes)); student = (Student) ois.readObject(); System.out.println(student.getName()+" "+student.getAge()); } }
4、将Student编译后的class文件放到 axis2\WEB-INF\classes\databean 目录下,将ObjectService.java编译后的class文件放到axis2\WEB-INF\pojo目录下。
5、执行客户端程序。
6、输出结果如下:
Thu Mar 15 21:29:38 CST 2012 ----调用 getArray----- 数组元素1 数组元素2 数组元素3 Thu Mar 15 21:29:38 CST 2012 ----调用 getStudent(String name,int age)----- 张三 20 Thu Mar 15 21:29:38 CST 2012 ----调用 getStudentBytes(String name,int age)----- 李四 21