webservice存取普通对象类型

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

猜你喜欢

转载自huangqiqing123.iteye.com/blog/1454866