加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService体系之——复杂对象的传递

发布时间:2020-12-16 23:47:40 所属栏目:安全 来源:网络整理
导读:WebService体系之——复杂对象的传递 ? ? ? ? ? 摘要:进一步实现传递List、Map、Array类型的JavaBean的集合。 一简介: ? ? ? ??主要搭建的步骤: ? ? ? ??1、????????????到apache的cxf官网上下载相应的jar包。 ? ? ? ??2、????????????建立一个java工程、

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包


? ? ? ? 相对于前面的图这里明显有了多加的内容、但是并没有重新建一个新的项目。回头看的时候方便点。

?? ? ? ??? ? ? ??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读