zoukankan      html  css  js  c++  java
  • webservice简单实现

    创建工程:

    一个服务端,一个客户端

    添加相关jar

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.sgor.com</groupId>
      <artifactId>WC_Server</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <dependencies>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-core</artifactId>
        <version>3.1.6</version>
    </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.1.6</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>3.1.6</version>
    </dependency>
      
      
      </dependencies>
    </project>
    

     编写接口类

    package com.sgor.webservice;
    
    import java.util.List;
    import java.util.Map;
    
    import javax.jws.WebService;
    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
    
    import com.sgor.entity.Role;
    import com.sgor.entity.User;
    import com.sgor.util.adapter.MapAdapter;
    
    @WebService
    public interface WS_Interface {
    	public String say(String str);
    	public List<Role> getUserRole(User user);//登陆验证 模拟
    	
    	
    	@XmlJavaTypeAdapter(MapAdapter.class)
    	public Map<String,List<Role>> getRoles();//不支持类型适配器
    		
    
    }
    

     接口实现

    package com.sgor.webservice.impl;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.jws.WebService;
    
    import com.sgor.entity.Role;
    import com.sgor.entity.User;
    import com.sgor.webservice.WS_Interface;
    
    @WebService
    public class WS_InterfaceImpl implements WS_Interface {
    
    	public List<Role> getUserRole(User user) {
    		List<Role> list = new ArrayList<Role>();
    		try {
    			if (!user.equals("") || user != null) {
    				if (user.getAccount().equals("admin")
    						&& user.getPassword().equals("123456")) {
    					list.clear();
    					list.add(new Role(1, "系统管理员"));
    					list.add(new Role(2, "系统操作员"));
    				} else if (user.getAccount().equals("pd")
    						&& user.getPassword().equals("123456")) {
    					list.clear();
    					list.add(new Role(3, "程序员"));
    				} else {
    					list.clear();
    					list.add(new Role(9999, "账号不存在或密码错误!"));
    				}
    			}
    		} catch (Exception e) {
    			list.add(new Role(9997, "系统异常,暂时无法完成请求"));
    			return list;
    		}
    		return list;
    	}
    
    	public Map<String, List<Role>> getRoles() {
    		Map<String, List<Role>> map =new  HashMap<String, List<Role>>();
    		List<Role> list = new ArrayList<Role>();
    		list.add(new Role(1,"系统管理员"));
    		list.add(new Role(2,"系统操作员"));
    		map.put("admin", list);
    		List<Role> list1 = new ArrayList<Role>();
    		list1.add(new Role(1,"系统设计师"));
    		list1.add(new Role(2,"系统开发者"));
    		map.put("pd", list1);
    		return map;
    	}
    
    }
    

     适配器

    package com.sgor.util.adapter;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.xml.bind.annotation.adapters.XmlAdapter;
    
    import com.sgor.entity.Role;
    import com.sgor.util.entity.MapRole;
    
    public class MapAdapter extends XmlAdapter<MapRole[], Map<String,List<Role>>>{
    
    	@Override
    	public Map<String, List<Role>> unmarshal(MapRole[] v) throws Exception {
    		// TODO Auto-generated method stub
    		Map<String, List<Role>> map = new HashMap<String, List<Role>>();
    		for(int i=0;i<v.length;i++){
    			MapRole maprole = v[i];
    			map.put(maprole.getKey(), maprole.getValue());
    		}
    		return map;
    	}
    
    	@Override
    	public MapRole[] marshal(Map<String, List<Role>> v) throws Exception {
    		MapRole[] roles = new MapRole[v.size()];
    		int i=0;
    		for(String key:v.keySet()){
    			//声明roles[i]
    			roles[i] = new MapRole();
    			roles[i].setKey(key);
    			roles[i].setValue(v.get(key));
    			i++;
    		}
    			
    		return roles;
    	}
    }
    

     entity

    package com.sgor.util.entity;
    
    import java.util.List;
    
    import com.sgor.entity.Role;
    
    public class MapRole {
    	private String key;
    	private List<Role> value;
    	public String getKey() {
    		return key;
    	}
    	public void setKey(String key) {
    		this.key = key;
    	}
    	public List<Role> getValue() {
    		return value;
    	}
    	public void setValue(List<Role> value) {
    		this.value = value;
    	}
    	
    }
    
    package com.sgor.entity;
    
    public class Role {
    	private int id;//编号
    	private String rolename;//角色
    	public Role() {
    		super();
    	}
    	public Role(int id, String rolename) {
    		super();
    		this.id = id;
    		this.rolename = rolename;
    	}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getRolename() {
    		return rolename;
    	}
    	public void setRolename(String rolename) {
    		this.rolename = rolename;
    	}
    
    }
    
    package com.sgor.entity;
    
    public class User {
    	private int id;//编号
    	private String account;//登陆名
    	private String name;//用户名
    	private String password;//密码
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getAccount() {
    		return account;
    	}
    	public void setAccount(String account) {
    		this.account = account;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	
    
    }
    

     Server端

    package com.sgor.server;
    
    import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
    
    import com.sgor.webservice.WS_Interface;
    import com.sgor.webservice.impl.WS_InterfaceImpl;
    
    public class WS_Server {
    	public static void main(String[] args) {
    		System.out.println("WebService 启动开始");
    		WS_Interface implementor = new WS_InterfaceImpl();
    		String address="http://127.0.0.1/Ws_Service";//接口地址设置
    		
    		
    		//方式一:使用jdk自带方法创建服务端url
    		//Endpoint.publish(address, implementor);//jdk自带创建webservice接口
    		
    		
    		//方式二:使用cxf创建服务端url
    		JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
    		factoryBean.setAddress(address);//cxf设置地址
    		factoryBean.setServiceClass(WS_Interface.class);//设置接口类
    		factoryBean.setServiceBean(implementor);//设置接口实现类
    		factoryBean.create();//创建接口
    		System.out.println("WebService 启动成功");
    		
    	}
    
    }
    

    启动服务 

    浏览器输入刚刚创建的url  http://127.0.0.1/Ws_Service?wsdl

    使用工具解析xml生成代码,去官网下载工具包之后配置环境变量

    xxx:/apache-cxf-xxx/bin;配置到path中即可

    配置完之后输入wsdl2java确认配置成功

    创建client工程 去相应的目录下执行wsdl2java http://127.0.0.1/Ws_Service?wsdl

    创建客户端:

    package com.sgor.Client;
    
    import java.util.List;
    
    import com.sgor.webservice.MapRole;
    import com.sgor.webservice.MapRoleArray;
    import com.sgor.webservice.Role;
    import com.sgor.webservice.User;
    import com.sgor.webservice.WSInterface;
    import com.sgor.webservice.WSInterfaceService;
    
    public class WS_Client {
    	public static void main(String[] args) {
    		WSInterfaceService wsinterfaceservice = new WSInterfaceService();
    		WSInterface wsinterface = wsinterfaceservice.getWSInterfacePort();
    		//向服务器端发送参数 请求返回
    		/**
    		 * 使用cxf工具包生成解析类步骤:
    		 * 1.下载对应版本工具包 如apache-cxf-3.1.10
    		 * 2.配置环境变量在path中添加xxx://apache-cxf-3.1.10/bin
    		 * 3.执行批处理文件CMD>>进入需要工具类目录如E:sgorWS_Clientsrcmainjava  执行wsdl2java 服务端url 
    		 * 4.刷新工程文件夹 创建客户端调用方法
    		 */
    		User user = new User();
    		user.setId(1);
    		user.setAccount("admin");
    		user.setPassword("123456");
    		List<Role> rolelist = wsinterface.getUserRole(user);
    		System.out.println("*****************getUserRole()方法测试*****************");
    		System.out.println("账号:"+user.getAccount()+"密码:"+user.getPassword());
    		System.out.println("系统查询结果如下:");
    		for(Role list:rolelist){
    			
    			System.out.println(list.getId()+" "+list.getRolename());
    		}
    		System.out.println("******************getRoles()方法测试*******************");
    		MapRoleArray array=wsinterface.getRoles();
    		List<MapRole> roleList=array.getItem();
    		for (int i = 0; i < roleList.size(); i++) {
    			MapRole roles=roleList.get(i);
    			System.out.println("分组:"+roles.getKey());
    			for(Role r:roles.getValue()){
    				System.out.println("编号:"+r.getId()+" 角色:"+r.getRolename());
    				
    			}
    			System.out.println("======================================================");
    		}
    		
    		
    	}
    
    }
    

     运行结果:

    项目目录:

    一条咸鱼醒着做梦
  • 相关阅读:
    PythonStudy——数据类型总结 Data type summary
    PythonStudy——可变与不可变 Variable and immutable
    PythonStudy——列表操作 List operatio
    PythonStudy——列表的常用操作 List of common operations
    PythonStudy——列表类型 List type
    PythonStudy——字符串扩展方法 String extension method
    PythonStudy——字符串重要方法 String important method
    AWT,Swing,RCP 开发
    JQuery插件机制
    最新知识网站
  • 原文地址:https://www.cnblogs.com/sgor/p/6478489.html
Copyright © 2011-2022 走看看