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 生成客户端代码

文件目录

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. 返回正确的参数,说明调用正常

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

本文介绍了一种在WebService中使用复杂对象及集合的实际方法。通过示例代码详细讲解了服务端如何提供用户对象(UserBean)及其集合,并展示了客户端如何调用这些服务。此外,文章还总结了一些关键注意事项,例如确保复杂对象具有无参构造方法等。
280

被折叠的 条评论
为什么被折叠?



