[webservice] CXF 处理Map 类型数据
利用Apache CXF处理Map类型数据。
项目结构图:

1.接口类:
package com.xwolf.cxf.dao; import java.util.List; import java.util.Map; import javax.jws.WebService; import com.xwolf.cxf.pojo.User; @WebService public interface IHelloWS { public String getName(String name ); public User getUser(); public List<User> getUserList(); public Map<String, User> getUserMap(); }
2 ,接口实现类:
package com.xwolf.cxf.dao.impl; import java.util.List; import java.util.Map; import javax.jws.WebService; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import com.xwolf.cxf.dao.IHelloWS; import com.xwolf.cxf.pojo.User; import com.xwolf.cxf.util.MapOfUser; import com.xwolf.cxf.util.UserService; @WebService public class HelloWSImpl implements IHelloWS { @Override public String getName(String name) { return "Hello,CXF: getName():"+ name+",你好 !"; } @Override public User getUser() { User user =new User(21, "彭天吧", 6453.43); return user; } @Override public List<User> getUserList() { return UserService.getUserList(); } /** * 加上XmlJavaTypeAdapter注解,用封装的类处理 */ @Override @XmlJavaTypeAdapter(value=MapOfUser.class) public Map<String, User> getUserMap() { return UserService.getUserMap(); } }
3.User实体类:
package com.xwolf.cxf.pojo; /** * USER实体类 * @author Administrator * */ public class User { private Integer id ; private String name ; private Double saraly; // 构造器,get和set方法省略 }
UserMap:
package com.xwolf.cxf.pojo; import java.util.ArrayList; import java.util.List; /** * 封装Map为普通实体类 * @author xwolf * @Date 2015-05-30 10:24 * */ public class UserMap { public static class EntryMap{ private String key; private User value ; public EntryMap(){ } public EntryMap(String key2, User user2) { this.key=key2; this.value=user2; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public User getValue() { return value; } public void setValue(User user) { this.value = user; } } private List<EntryMap> entryMaps = new ArrayList<UserMap.EntryMap>(); public List<EntryMap> getEntryMaps() { return entryMaps; } public void setEntryMaps(List<EntryMap> entryMaps) { this.entryMaps = entryMaps; } }
4. MapOfUser:
package com.xwolf.cxf.util; import java.util.HashMap; import java.util.Map; import javax.xml.bind.annotation.adapters.XmlAdapter; import com.xwolf.cxf.pojo.User; import com.xwolf.cxf.pojo.UserMap; import com.xwolf.cxf.pojo.UserMap.EntryMap; /** * map转化为为普通实体类的处理方法 * * @author xwolf * @Date 2015-05-30 10:26AM * */ public class MapOfUser extends XmlAdapter<UserMap, Map<String, User>> { @Override public Map<String, User> unmarshal(UserMap v) throws Exception { Map<String,User> mapUser = new HashMap<String, User>(); for (EntryMap map :v.getEntryMaps()){ mapUser.put(map.getKey(), map.getValue()); } return mapUser; } @Override public UserMap marshal(Map<String, User> v) throws Exception { UserMap userMap = new UserMap(); for(String key: v.keySet()) { userMap.getEntryMaps().add(new EntryMap(key,v.get(key))); } return userMap; } }
UserService:
package com.xwolf.cxf.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.xwolf.cxf.pojo.User; import com.xwolf.cxf.pojo.UserMap; import com.xwolf.cxf.pojo.UserMap.EntryMap; /** * 数据构造 模拟数据库 * @author Administrator * */ public class UserService { /** * List类型数据 * @return */ public static List<User> getUserList(){ List<User> list = new ArrayList<User>(); list.add(new User(1,"Jhon", 234.32)); list.add(new User(10,"纳兰性德",432.32)); list.add(new User(32, "Rollia",8543.32)); list.add(new User(54, "Yellow", 690.32)); return list ; } /** * 封装Map数据 * @return */ public static Map<String, User> getUserMap(){ Map<String, User> map = new HashMap<String, User>(); map.put("1", new User(1, "测试", 232.432)); map.put("21", new User(12,"黑狗身上白",4324D)); map.put("23", new User(13,"白狗身上肿",(double) 432443f)); map.put("21", new User(14,"上白",5435.54)); return map; } }
TestWS:
package com.xwolf.cxf.test; import javax.xml.ws.Endpoint; import com.xwolf.cxf.dao.impl.HelloWSImpl; /** * 发布webservice * @author xwolf * */ public class TestWS { public static void main(String[] args) { Endpoint.publish("http://localhost:8989/Web/service", new HelloWSImpl()); System.out.println("发布成功"); } }
参考:

浙公网安备 33010602011771号