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
浙公网安备 33010602011771号