上面的服务传递的是简单数据类型,返回的也是简单数据类型。下面我们用JavaBean 、List、Map、Array等返回值或参数完成WebService。
1、首先看看JavaBean模式的参数和返回值的WebService,JavaBean代码如下:
package com.hoo.entity;
import java.io.Serializable;
/**
* function:User Entity
* @author hoojo
* @createDate Dec 16, 2010 10:20:02 PM
* @file User.java
* @package com.hoo.entity
* @project AxisWebService
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
public class User implements Serializable {
private static final long serialVersionUID = 677484458789332877L;
private int id;
private String name;
private String email;
private String address;
//Constractor
//getter、setter
@Override
public String toString() {
return this.id + "#" + this.name + "#" + this.email + "#" + this.address;
}
}
没有上面特别就是一个普通的Java对象,里面提供一些属性及getter、setter方法和toString方法(在显示数据的时候有用),值
得注意的是在远程调用的Java对象都需要实现Serializable接口,这样在网络中传递对象的时候就不会出现重复的JavaBean。用过或是了
解EJB、RMI的朋友应该知道这点。序列化后的对象可以用io进行序列化写入到文件中,也可以反序列化解析到对象中的数据。
2、好,回正题。下面编写WebService的服务器端代码。
package com.hoo.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.hoo.entity.User;
/**
* function:axis WebService传递复杂类型数据
* @author hoojo
* @createDate Dec 16, 2010 10:21:06 PM
* @file ManagerUser.java
* @package com.hoo.service
* @project AxisWebService
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
@SuppressWarnings("deprecation")
public class ManagerUser {
public User getUserByName(String name) {
User user = new User();
user.setId(new Date().getSeconds());
user.setName(name);
user.setAddress("china");
user.setEmail(name + "@hoo.com");
return user;
}
public void setUser(User user) {
System.out.println(user);
}
public List getUsers(int i) {
List users = new ArrayList();
for (int j = 0; j <= i; j++) {
User user = new User();
user.setId(new Date().getSeconds());
user.setName("jack#" + j);
user.setAddress("china");
user.setEmail("jack" + j + "@hoo.com");
users.add(user);
}
return users;
}
public void setUserMap(Map maps) {
System.out.println(maps);
}
public User[] getUserArray(int i) {
User[] users = new User[i];
for (int j = 0; j < i; j++) {
User user = new User();
user.setId(new Date().getSeconds());
user.setName("jack#" + j);
user.setAddress("china");
user.setEmail("jack" + j + "@hoo.com");
users[j] = user;
}
return users;
}
public void setUserArray(User[] users) {
for (User u : users) {
System.out.println(u);
}
}
public Map getUserMap() {
Map users = new HashMap();
User user = new User();
user.setId(new Date().getSeconds());
user.setName("jack#");
user.setAddress("china");
user.setEmai