Webservice入门程序

服务端:

第一步:创建SEI(ServiceEndpoint Interface)接口,本质上就是Java接口

packagecn.itcast.ws.jaxws.ws;
/**
 * SEI接口
 * @author wujinxing
 *
 */

publicinterface Weatherinterface {
    public String queryWeather(String cityName);
}

第二步:创建SEI实现类,在实现类上加入@WebService

package cn.itcast.ws.jaxws.ws;

import javax.jws.WebService;
/**
 * SEI实现类
 * @author wujinxing
 *
 */
@WebService   //@WebService表示该类是一个服务类,需要发布其中的public的方法
public class WeatherServiceImpl implements Weatherinterface {
	@Override
	public String queryWeather(String cityName) {
		System.out.println("from client..."+cityName);
		String weather  =  "晴";
		return weather;
	}
}

第三步:发布服务,Endpoint发布服务,publish方法,两个参数:1.服务地址;2.服务实现类

package cn.itcast.ws.jaxws.ws;

import javax.xml.ws.Endpoint;
/**
 * 天气服务端
 * @author wujinxing
 *
 */
public class WeatherServer {
	public static void main(String[] args) {
		//Endpoint发布服务
		//参数解释:
		//1.address - 服务地址
		//2.implementor - 实现类   Endpoint.publish(address, implementor);
		Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherServiceImpl());
	}
}

第四步:测试服务是否发布成功,通过阅读使用说明书,确定客户端调用的接口、方法、参数和返回值存在,证明服务发布成功。

WSDL地址:服务地址+”?wsdl”

WSDL阅读方式:从下往上


 

客户端:

第一步:wsimport命令生成客户端代码

cmd命令行找到项目文件夹

wsimport -s . http://127.0.0.1:12345/weather?wsdl 

第二步:根据使用说明书,使用客户端代码调用服务端

第一步:创建服务视图,视图是从service标签的name属性获取

第二步:获取服务实现类,实现类从portType的name属性获取

第三步:获取查询方法,从portType的operation标签获取

package cn.itcast.ws.jaxws.ws.client;

import cn.itcast.ws.jaxws.ws.WeatherServiceImpl;
import cn.itcast.ws.jaxws.ws.WeatherServiceImplService;
/**
 * 
 * 天气查询客户端
 * @author wujinxing
 *
 */
public class WeatherClient {

	public static void main(String[] args) {
		//创建服务视图
		WeatherServiceImplService weatherServiceImplService = new WeatherServiceImplService();
		
		//获取服务实现类
		WeatherServiceImpl weatherServiceImpl = weatherServiceImplService.getPort(WeatherServiceImpl.class);
		
		//调用查询方法
		String weather = weatherServiceImpl.queryWeather("北京");
		
		System.out.println(weather);
	}
}

结果:

客户端

:

服务端


Webservice的优缺点

优点:

l  发送方式采用http的post发送,http的默认端口是80,防火墙默认不拦截80,所以跨防火墙

l  采用XML格式封装数据,XML是跨平台的,所以webservice也可以跨平台。

l  Webservice支持面向对象

缺点:

l  采用XML格式封装数据,所以在传输过程中,要传输额外的标签,随着SOAP协议的不断完善,标签越来越大,导致webservice性能下降

易于复用

l  发布一个服务(对内/对外),不考虑客户端类型,不考虑性能,建议使用webservice

l  服务端已经确定使用webservice,客户端不能选择,必须使用webservice

l  考虑性能时不建议使用webservice

l  同构程序下不建议使用webservice,比如java 用RMI,不需要翻译成XML的数据

 



你可能感兴趣的:(学习)