Java6开发WebService应用--复杂对象及集合使用(4)

 webService 使用复杂对象及集合,在实际企业应用中经常使用

1. 服务端程序

package java_soa.getUser2.server;

import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class GetUserXx {
	
	/**
	 * 获取用户对象(userbean)
	 * @param user
	 * @param address
	 * @param flag
	 * @return
	 */
   public UserBean  getUser1(String user,String address, boolean flag){
	return new UserBean(user,address,flag);
   }
	
   /**
    * 返回多个用户对象(list集合对象)
    * @param num
    * @return
    */
   public List<UserBean> getUser2(int num){
	   List<UserBean> list1=new ArrayList<UserBean>();
	   UserBean user1= new UserBean();
	   for (int i=0;i<num;i++){
		   user1.setUsername("张三");
		   user1.setAddress("北京市朝阳区");
		   user1.setFlag(true);
		   list1.add(user1);
	   }
	 return list1;
   }
   
   public static void main(String[] args) {
		//发布soa地址
		Endpoint.publish("http://192.168.8.121:8095/java6ws/java_soa.server.GetUserXx", new GetUserXx());
	} 
   
}

   用户对象

package java_soa.getUser2.server;

public class UserBean {
 /**
  * 用户信息
  */
     private String username;
     private String address;
     private boolean flag;
	 public UserBean() { 
     
	 } 

	public UserBean(String username, String address, boolean flag) { 
             this.username = username; 
             this.address = address; 
             this.flag = flag; 
     } 
    public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getAddress() {
		return address;
	}

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

	public boolean isFlag() {
		return flag;
	}

	public void setFlag(boolean flag) {
		this.flag = flag;
	}


}

 

2. 发布服务端程序后,wsimport 生成客户端代码

 
Java6开发WebService应用--复杂对象及集合使用(4)_第1张图片
 文件目录


Java6开发WebService应用--复杂对象及集合使用(4)_第2张图片
 3. 客户端代码

package java_soa.getUser2.getClient;

import java.util.List;

import java_soa.getUser2.wsclient.GetUserXx;
import java_soa.getUser2.wsclient.GetUserXxService;
import java_soa.getUser2.wsclient.UserBean;
public class GetUserXxClient {

	/**
	 * 客户端调用(webService)
	 */
	public static void main(String[] args) {
		GetUserXx UserXx = new GetUserXxService().getGetUserXxPort();
		
		UserBean use1 = new UserBean();
		 use1 = UserXx.getUser1("张三", "南京市", false);
		String name = use1.getUsername();
	    String addr = use1.getAddress();
	    System.out.println("SOA 取出用户对象 name=="+name+"addr=="+addr );
	    
	    List<UserBean> list2 =UserXx.getUser2(5); 
	    for(int i=0;i<list2.size();i++){
	       use1 = list2.get(i);
	       int m = i+1;
	    	System.out.println("SOA取出第"+m+"条用户信息!"+use1.getUsername()+"  "+use1.getAddress());
	    }
	}

}

 

4. 返回正确的参数,说明调用正常


Java6开发WebService应用--复杂对象及集合使用(4)_第3张图片
 

 

5、总结
这里面其实有些细节,需要说明白:
1)、对于复杂对象,必须有一个不带参数的构造方法。
2)、服务端覆盖Object的方法不能在客户端复原,比如toString方法。
3)、服务端的带参数构造方法在客户端失效。
以上三点是非常重要的,如果不知道会很郁闷,老出错还找不到原因。

 

你可能感兴趣的:(webservice)