Axis2系列之对象类型的简单例子【3】

之所以说是简单例子,是因为类文件仍在data文件夹下,但包括了一维、二维数组及返回值是对象类型

1.服务器端代码

首先建一个bean

package data;

import java.io.Serializable;

public class User implements Serializable {

	private static final long serialVersionUID = 1L;
	private int id;
	private String name;
	private String address;
	private String email;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

}

 注意:此bean有package

  而下面的service方法仍没有package

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

import data.User;

public class SimpleService {

	public String upload4Byte(byte[] b, int len) {
		String path = "";
		FileOutputStream fos = null;
		String dir = System.getProperty("user.dir");
		File file = new File(dir + "/" + new Random().nextInt(100) + ".jsp");
		try {
			fos = new FileOutputStream(file);
			fos.write(b, 0, len);
			path = file.getAbsolutePath();
			System.out.println("file path:" + file.getAbsolutePath());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return path;
	}

	public int[] getArray(int i) {
		int[] array = new int[i];
		for (int j = 0; j < i; j++) {
			array[j] = new Random().nextInt(1000);
		}
		return array;
	}

	public String[][] getTwoArray() {
		return new String[][] { { "中国", "北京" }, { "日本", "东京" }};
	}

	public User getUer() {
		User user = new User();
		user.setAddress("JingsanRoad");
		user.setEmail("uer@123.com");
		user.setName("spark");
		user.setId(2);
		return user;
	}
}

将SimpleService.class文件拷贝到pojo文件夹下

值得注意的是这个User对象的package是datas,需要在tomcat目录下的webapps中的axis2的WEB-INF目录下创建一个datas目录,和你的User对象的目录保持一致。否则你的WebService将会出现ClassNotFontException异常。然后重启你的tomcat,虽然axis2支持热部署 

2.客户端代码

package com.client;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

import data.User;

public class SimpleServiceClient {

	public static void main(String args[]) {
		RPCServiceClient client;
		try {
			client = new RPCServiceClient();
			Options options = client.getOptions();
			String address = "http://localhost:8080/axis2/services/SimpleService";
			String defualNameSpace = "http://ws.apache.org/axis2";
			EndpointReference epr = new EndpointReference(address);
			options.setTo(epr);

			QName qname = new QName(defualNameSpace, "upload4Byte");
			String path = System.getProperty("user.dir");
			File file = new File(path + "/WebRoot/index.jsp");
			FileInputStream fis = new FileInputStream(file);
			int len = (int) file.length();
			byte[] b = new byte[len];
			int read = fis.read(b);
			fis.close();
			Object[] result = client.invokeBlocking(qname, new Object[] { b,
					len }, new Class[] { String.class });
			System.out.println("upload4Byte:" + result[0]);

			qname = new QName(defualNameSpace, "getTwoArray ");
			result = client.invokeBlocking(qname, new Object[] {},
					new Class[] { String[][].class });
			String[][] strs = (String[][]) result[0];
			System.out.println("getTwoArray :");
			for (String[] s : strs) {
				for (String str : s) {
					System.out.println(str);
				}
			}
			// for(int i=0;i<strs.length;i++){
			// String[] temp=strs[i];
			// for(int j=0;j<temp.length;j++){
			// System.out.println(temp[j]);
			// }
			// }
			qname = new QName(defualNameSpace, "getArray ");
			result = client.invokeBlocking(qname, new Object[] { 3 },
					new Class[] { int[].class });
			int[] arr = (int[]) result[0];
			System.out.println("getArray: ");
			for (int i = 0; i < arr.length; i++) {
				System.out.println(arr[i]);
			}
			
			qname = new QName(defualNameSpace, "getUer");
			result = client.invokeBlocking(qname, new Object[] {},
					new Class[] { User.class });
			System.out.println("getUer:");
			User user = (User) result[0];
			System.out.println("name=" + user.getName());
			System.out.println("address=" + user.getAddress());
		} catch (AxisFault e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 输出结果:

upload4Byte:C:\Program Files\apache-tomcat-6.0.24\bin\69.jsp
getTwoArray :
中国
北京
日本
东京
getArray:
231
56
411
getUer:
name=spark
address=JingsanRoad

posted on 2011-12-17 12:28  重阳真人  阅读(3337)  评论(0编辑  收藏  举报

导航