使用CXF处理JavaBean式的复合类型和List集合类型的形参和返回值

webservice 新民 1253℃ 已收录 1评论

在web service的服务器端中加入两个javaBean :   User和 Cat

代码如下:

User.java

package com.xm.cxf.ws.domain;


/**
 * 创建个javaBean对象
 * @author zhaoxinmin
 *
 */
public class User {
	
	
	private Integer id;
	
	
	private String name;
	
	
	private String pass;
	
	private String address;
	
	
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}

	public User(Integer id, String name, String pass, String address) {
		super();
		this.id = id;
		this.name = name;
		this.pass = pass;
		this.address = address;
	}

	public Integer getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public String getAddress() {
		return address;
	}

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

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + ((pass == null) ? 0 : pass.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (pass == null) {
			if (other.pass != null)
				return false;
		} else if (!pass.equals(other.pass))
			return false;
		return true;
	}
}

Cat.java

package com.xm.cxf.ws.domain;

/**
 * @author zhaoxinmin
 */
public class Cat {
	private Integer id;
	
	private String name;
	
	private String color;

	public Cat() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Cat(Integer id, String name, String color) {
		super();
		this.id = id;
		this.name = name;
		this.color = color;
	}

	public Integer getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}
}



在 web service 服务器端中的 接口(HelloWord.java)加入如下方法:
public List getCatByUser(User user );
在HelloWord的实现类(HelloWorlWs.java)中加入如下代码:

@Override
	public List getCatByUser(com.xm.cxf.ws.domain.User user) {
		
		UserSrevice   us=new UserServiceImpl();
		
		return us.getCatsByUser(user);
	}
在 web  service 服务器端项目中加入  UserSrevice接口:
package com.xm.cxf.service;

import java.util.List;

import com.xm.cxf.ws.domain.Cat;
import com.xm.cxf.ws.domain.User;

public interface UserSrevice {

	List getCatsByUser(User user);
}

在web service 服务器端项目中加入UserSrevice 的实现类:

package com.xm.cxf.ws.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.xm.cxf.service.UserSrevice;
import com.xm.cxf.ws.domain.Cat;
import com.xm.cxf.ws.domain.User;

public class UserServiceImpl implements UserSrevice {
	
		//用HashMap 来模拟数据库
		static 	Map<User, List > catDB=new HashMap<>();

		static {
			List catList1=new ArrayList<>();
			catList1.add(new Cat(1, "懒猫", "蓝色"));
			catList1.add(new Cat(2, "红猫", "红色"));
			catDB.put(new User(1, "孙悟空", "123", "花果山"), catList1);
			
			List catList2=new ArrayList<>();
			catList2.add(new Cat(3, "花猫", "花色"));
			catList2.add(new Cat(4, "Tomcat猫", "Tomcat色"));
			catDB.put(new User(2, "如来", "123", "西天"), catList2);
		}
		
	@Override
	public List getCatsByUser(User user) {
		return catDB.get(user);
	}
}

再次在dos窗口是使用CXF提供的wsdl2java 来生成最新的客户端代码,如下图:image002

此时,wsdl2java 已经成功执行,客户端最新代码已经成功生成。刷新MyEclipse 上的客户端项目文件就能看到最新代码了,如下图:

image004

在web service 客户端的主类文件(ClientMain.java)中加入如下代码:

User u=new User();
	    u.setId(30);
	    u.setName("孙悟空");
	    u.setPass("123");
	    
	    List list = hw.getCatByUser(u);
	    
	    for (Cat cat : list) {
			System.out.println(cat.getName());
		}

运行此类后,会调用web service的服务端,调用结果如下:
image006

此时,表示web service 客户端调用服务器端成功。

本站文章如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:https://www.snowruin.com/?p=1536
喜欢 (3)or分享 (0)
发表我的评论
取消评论
表情 代码 贴图 加粗 链接 私信 删除线 签到

Hi,请填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)条精彩评论。
  1. [忍不了]
    静香2015-11-23 01:22 回复| unknow| unknow