WebService体系之——复杂对象的传递
WebService体系之——复杂对象的传递
摘要:进一步实现传递List、Map、Array类型的JavaBean的集合。
一简介:
主要搭建的步骤:
1、 到apache的cxf官网上下载相应的jar包。
2、 建立一个java工程、将下载的jar包引入到项目中。
3、 创建集合类型的JavaBean。
4、 创建服务端功能接口。
5、 创建实现服务端功能接口的具体类。
6、 发布服务接口。
7、 创建测试类、充当客户端调用服务端提供的功能、获取服务调用服务端提供的服务(具体点就是调用服务端提供的方法)。
二:同一个项目时具体步骤及代码
1、创建java项目、引入jar包、方便起见就直接把jar包(除endorsed文件夹下的之外)全部引入即可下载之后的包中我们还可以发现有自带的spring的包、这样我们在使用spring集成它的时候就方便很多了、这里先不提集成。后面会补充jar和项目结构图。
2、创建集合类型的JavaBean——Users:
package com.chy.ws.model; import java.util.List; import java.util.Map; public class Users { private List<UserInfo> userList; private Map<Integer, UserInfo> userMap; private UserInfo[] userArray; public List<UserInfo> getUserList() { return userList; } public void setUserList(List<UserInfo> userList) { this.userList = userList; } public UserInfo[] getUserArray() { return userArray; } public void setUserArray(UserInfo[] userArray) { this.userArray = userArray; } public Map<Integer, UserInfo> getUserMap() { return userMap; } public void setUserMap(Map<Integer, UserInfo> userMap) { this.userMap = userMap; } }
3、创建服务端接口:注意别忘了在服务端接口类级别上加上@WebService ! UserComplexService代码:
package com.chy.ws.service; import javax.jws.WebService; import com.chy.ws.model.Users; @WebService public interface UserComplexService { public Users getUserList(); public Users getUserMap(); public Users getUserArray(); }
4、创建实现服务端功能接口的具体类——UserComplexServiceImpl代码:
package com.chy.ws.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.chy.ws.model.UserInfo; import com.chy.ws.model.Users; public class UserComplexServiceImpl implements UserComplexService { @Override public Users getUserList() { List<UserInfo> userList = new ArrayList<UserInfo>(); userList.add(new UserInfo("vicky", 23)); userList.add(new UserInfo("ivy", 26)); userList.add(new UserInfo("simon", 26)); userList.add(new UserInfo("carol", 29)); Users users = new Users(); users.setUserList(userList); return users; } @Override public Users getUserMap() { Map<Integer, UserInfo> map = new HashMap<Integer, UserInfo>(); map.put(23, new UserInfo("vicky", 23)); map.put(22, new UserInfo("caty", 22)); map.put(24, new UserInfo("leah", 24)); map.put(25, new UserInfo("kelly", 25)); map.put(27, new UserInfo("ivy", 27)); map.put(26, new UserInfo("simon", 26)); map.put(29, new UserInfo("carol", 29)); Users users = new Users(); users.setUserMap(map); return users; } @Override public Users getUserArray() { UserInfo[] userInfo = new UserInfo[5]; for(int i=0;i<5;i++){ UserInfo info = new UserInfo(); info.setAge(23+i); info.setUserName("Array"+(i+1)); userInfo[i] = info; } Users users = new Users(); users.setUserArray(userInfo); return users; } }
5、发布服务接口——WebServiceUserComplex代码:
package com.chy.ws.server; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import com.chy.ws.service.UserComplexService; import com.chy.ws.service.UserComplexServiceImpl; public class WebServiceUserComplex { public WebServiceUserComplex(){ JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); factory.setServiceClass(UserComplexService.class); factory.setServiceBean(new UserComplexServiceImpl()); factory.setAddress("http://localhost:8080/usercomplexservice"); factory.create(); //another release web service method //Endpoint.publish("http://localhost:8080/usercomplexservice", new UserComplexServiceImpl()); } public static void main(String[] args) { new WebServiceUserComplex(); System.out.println("Server ready..."); try { Thread.sleep(1000*300);//休眠五分分钟,便于测试 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Server exit..."); System.exit(0); } }
6、通过浏览器访问地址:http://localhost:8080/usercomplexservice?wsdl 若有结果则发布成功!
7、测试类——WebServiceUserComplexClient代码:
package com.chy.ws.client; import java.util.Arrays; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.chy.ws.service.UserComplexService; public class WebServiceUserComplexClient { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(UserComplexService.class); factory.setAddress("http://localhost:8080/usercomplexservice"); UserComplexService userComplexService = (UserComplexService) factory.create(); System.out.println("invoking service..."); System.out.println("array users: " + Arrays.toString(userComplexService.getUserArray().getUserArray())); System.out.println("list users: " + userComplexService.getUserList().getUserList()); System.out.println("map users: " + userComplexService.getUserMap().getUserMap()); } }
三:不同项目时客户端搭建具体步骤及代码
1、创建一个java项目、引入与服务端相同的jar包。
2、创建集合类型的JavaBean——Users(注意一定要和服务器中的集合类型的JavaBean是相同的包名和内容、可直接将服务端的复制过来)。
3、创建服务端功能接口(直接将服务端的java代码复制到客户端、注意:完整路径名一定要一样、及包名完全相同)。
4、创建测试类来测试服务——UserComplexClient代码:
package com.chy.ws.client; import java.util.Arrays; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.chy.ws.service.UserComplexService; public class UserComplexClient { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(UserComplexService.class); factory.setAddress("http://localhost:8080/usercomplexservice"); UserComplexService userComplexService = (UserComplexService)factory.create(); System.out.println("invoking service..."); System.out.println("array users: " + Arrays.toString(userComplexService.getUserArray().getUserArray())); System.out.println("list users: " + userComplexService.getUserList().getUserList()); System.out.println("map users: " + userComplexService.getUserMap().getUserMap()); } }
四:补充——项目结构图及jar包
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。