JAX-WS方式和调用.net编写的WebService方式的发布以及使用。

什么是WebService

1.WebService:一种基于Web的服务,服务端提供一些资源让客户端进行访问,获取一些公共的数据。比如天气预报,股票信息,手机归属地查询等等。
2.WebServcie是一种跨平台,跨语言的通信规范。
3.气象局负责将收集的每天的天气信息,并将这些信息暴露出来,各大站点的应用去调用题目得到当天或者未来几天的天气情况,然后以不同形式展示出来。
4.网站提供了天气预报的信息,其实网站本身什么都没有做,只是调用了一下远程接口。这个就是WebService的典型应用。

什么时候使用WebService

1.同一家公司的新旧应用之间。
2.不同公司或者不同项目的应用之间
	1) 淘宝、京东查询快递公司物流信息。
	2) 支付宝,网银支付接口的调用。
	2) QQ登录各种系统,本公司或者外部系统只需要使用同一个QQ号就可以登录。
3.一些提供内容聚合的应用:天气预报,身份证,手机归属地等信息。

Web Service组织示意图

在这里插入图片描述

Web服务的重要术语

1.WSDL(Web Services Description Language):Web服务描述语言。一个XML文档,WSDL定义了Web Service 的名称、处理服务的方法、请求的参数及返回的数据格式。一个WebService对应唯一一个wsdl文档。
2.SOAP(Simple Object Access Protocol):简单对象传输协议。一个基于HTTP和XML的协议,用于在Web上的应用程序交换结构化的数据。
3.SEI(WebService Endpoint Interface):WebService服务端用来处理请求的接口。
4.CXF(Celtix + XFire):一个Apache的用于开发webService服务器和客户端框架。

WSDL的基本结构

1.Types元素
	数据类型定义的容器
2.Message元素
	通信消息的数据结构的抽象类型定义
3.PorType元素
	可以描述一个Web Service可被执行的操作以及相关的消息
4.Binding元素
	特定端口类型的具体协议和数据格式规范的绑定
5.Service元素
	相关服务访问点的集合

SOAP概述

1.SOAP(SImple Object Access Protocol,简称对象访问协议)基于XML的,用于在分布式环境下交换信息的轻量级协议。
2.SOAP 1.2规范与2003年6月24日被发布为W3C推荐标准
3.SOAP的优点
	1)与厂商无关
	2)相对于平台独立
	3)相对与操作系统独立
	4)相对与编程语言独立

开发WebService

1.WebService组成
	1)服务器端:提供WebService的服务器端。(Java开发)
	2)客户端:调用远程WebServiec的客户端应用程序。可以在任何系统下使用任何语言调用。
2.开发WebService分为两种方式
	1)JAX-WS方式:Web标准服务
	2)CXF方式:基于CXF框架开发

代码演示

一、使用JAX-WS发布服务

1.完成功能:查询自定义省以及城市。
1)开发步骤:

  1. 创建一个JavaProject项目
  2. 添加WebService的接口,使用@WebService和@WebMethod注解修饰类。
  3. 添加实现WebService接口的类,使用@WebService修饰,并指定EndpointInterface属性到接口的完整类名。
  4. 添加一个Endpoint来发布WebService。

2)添加WeatherService接口,使用@WebService修饰类,使用@WebMethoid修饰方法。

@WebService
public interface WeatherService {

	@WebMethod
	public Set<String> getProvince();

	@WebMethod
	public List<String> getCitys(String pro);
	
}

3)添加WeatherServiceImpl类,实现WeatherService接口,使用@WebService修饰类,添加endpointInterface属性,并重写接口的方法。

@WebService(endpointInterface = "com.znsd.webservice.service.WeatherService")
public class WeatherServiceImp implements WeatherService {

	static List<String> list;
	
	static {
		
		list = new ArrayList<String>();
		list.add("湖南省");
		list.add("广东省");
		list.add("湖北省");
		
	}
	
	@Override
	public List<String> getProvince() {
		
		return list;
		
	}
	
	@Override
	public List<String> getCitys(String prowince) {

		ArrayList<String> citys = new ArrayList<String>();
		
		switch (prowince) {
		case "湖南省":
			
			citys.add("永州市");
			citys.add("长沙市");
			citys.add("岳阳市");
			
			break;
		
		case "广东省":
			
			citys.add("深圳市");
			citys.add("广州市");
			citys.add("佛山市");
			
			break;
			
		case "湖北省":
			
			citys.add("武汉市");
			citys.add("黄石市");
			citys.add("襄阳市");
			
			break;
			
		}
		
		return citys;
	}

}

4)发布WebService:

public static void main(String[] args) {
		
		// 该地址是自己定义
		String address = "http://localhost:9999/weather/getweathers";
		
		// 发布webService
		Endpoint.publish(address, new WeatherServiceImp());
		System.out.println("发布成功!!");
		
	}
发布之后项目不要停止可以通过http://localhost:9999/weather/getweathers?wsdl来访问webService服务器地址。
	WebService常用注解
		1.@WebService(必须的)
			修饰一个类或者接口为一个WebSevice,如果有接口,必须提供endpointInterface指定接口名称,否则会报警告。
		2.@WebMethod(可省略)
			修饰一个方法为一个Web方法。可以被远程调用。也可以通过exclude=true来排除某个方法。
		3.@WebParm(可省略)
			修饰生成wsdl文件中方法的参数名称。

二、使用JAX-WS调用服务

	1.实现步骤:
		1)创建客户端项目,在src目录下生成调用代码。
		2)使用wsimport工具从WSDL文件生成客户端调用所需的Java类。

一、在client的客户端目录下
D:\Java\myworkspace\TheClient\src>wsimport -p com.znsd.webservice.service(该包名为生产代码所在的包,自己定义) -keep http://localhost:9999/weather/getweathers?wsdl(该路径为你发布项目的路径)
在这里插入图片描述
cmd中回车即可。
刷新项目就会出现。
在这里插入图片描述
二、启动客户端测试

public static void main(String[] args) {
		
		WeatherService service = new WeatherServiceImpService().getWeatherServiceImpPort();
		
		List<String> list = service.getProvince();
		System.out.println(Arrays.toString(list.toArray()));
		
		List<String> citys = service.getCitys("湖北省");
		System.out.println(Arrays.toString(citys.toArray()));
		
	}

调用.net编写的WebService

一、完成功能远程天气预报。
	1.使用java语言调用.net编写的WebService时,会出现解析错误
	2.需要修改wsdl文件。
	3.实现步骤:
		1)将wsdl文件保存到本地。
		2)将wsdl文件中的
			<s:element ref="s:schama"  />
			<s:any />
		3)替换成
		<s:any minOccurs="2" maxOccurs="2" />

	原创天气预报地址:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsd

在这里插入图片描述
在这里插入图片描述
选择wsdl。后保存到项目的src目录下

通过本地文件生产java代码
D:\javaworkspas\springWork\web-fabu_service\src>D:\Java\workspace\getWeather\src>wsimport -p com.lxit.weather -keep D:\Java\workspace\getWeather\src\weather.wsdl
在这里插入图片描述
回车即可,会生成如下包:
在这里插入图片描述
二、调用天气方法

public static void main(String[] args) {
	WeatherWSSoap ws = new WeatherWS().getWeatherWSSoap();
	ArrayOfString list = ws.getWeather("深圳", null);
	for (String string : list.getString()) {
	    System.out.println(string);
	}
}

在这里插入图片描述
以上为WebService的创建以及使用,新手编写,请见谅。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值