WebService 入门案列(基于jdk1.7发布一个WebService服务)

什么是WebService

WebService

  1. 什么是WebService呢?从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。
  2. Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。WebService平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用你喜欢的任何语言,在你喜欢的任何平台上写Web Service。
  3. WebService 为Internet 上的组件服务•通过网络提供,以URL定位方法调用•以Internet技术为基础•未來的分散式应用程序

在这里插入图片描述

Web Service的关键技术和规则

XML:描述数据的标准方法.

SOAP:表示信息交换的协议(简单对象访问协议).

在这里插入图片描述
示例:

POST /WebServices/IpAddressSearchWebService.asmx HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebXml.com.cn/getCountryCityByIp"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getCountryCityByIp xmlns="http://WebXml.com.cn/">
      <theIpAddress>string</theIpAddress>
    </getCountryCityByIp>
  </soap:Body>
</soap:Envelope>

WSDL:Web服务描述语言.

WSDL(WebService Description Language):web 服务描述语言
就是一个xml文档,用于描述当前服务的一些信息(服务名称、服务的发布地址、服务提供的方法、方法的参数类型、方法的返回值类型等)

UDDI:通用描述、发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描述商务的协议。

  1. UDDI 目录条目是介绍所提供的业务和服务的XML 文件。UDDI 目录条目包括三个部分。
       “白页”介绍提供服务的公司:名称、地址、联系方式等等;
      “黄页”包括基于标准分类法的行业类别;
      “绿页”详细介绍了访问服务的接口,以便用户能够编写应用程序以使用 Web 服务。
      服务的定义是通过一个称为类型模型(或 tModel)的 UDDI文档来完成的。多数情况下,tModel包含一个WSDL 文件,用于说明访问 XMLWeb Service 的SOAP 接口,但是tModel非常灵活,可以说明几乎所有类型的服务。
  2. UDDI 目录还包含若干种方法,可用于搜索构建您的应用程序所需的服务。例如,您可以搜索特定地理位置的服务提供商或者搜索特定的业务类型。之后,UDDI目录将提供信息、联系方式、链接和技术数据,以便您确定能满足需要的服务。
  3. UDDI 允许您查找提供所需的Web 服务的公司。如果您已经知道要与谁进行业务合作,但尚不了解它还能提供哪些服务,这时该如何处理呢?WS-Inspection规范(英文)允许您浏览特定服务器上提供的XML Web Service 的集合,从中查找所需的服务。
    在这里插入图片描述

WebService实例

Service端

  1. 新建一个动态Web工程,代码如下
package Demo;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class MyService {
	public void sayHello(){
		System.out.println("hello webservcie!!!");
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Endpoint.publish("http://localhost:8081/TestWebService/Myservice", new MyService());//发布服务
        System.out.println("ServiceTest已启动");
	}

}
  1. 运行服务端

打开浏览器,访问我们发布的地址,大家可以看到这样的效果:

在这里插入图片描述

点击WSDL后面的连接地址便可以打开WSDL配置,访问结果如下:

在这里插入图片描述

新建另一个Web工程 Client

wsimport命令(解析wsdl文件,生成客户端本地代码)

在这里插入图片描述
如下图所示
在这里插入图片描述
在这里插入图片描述

注意:
如果你是调用网络上的Webservice服务,这wsimport时会报错,解决办法是:

把xml文件保存本地计算机,后替换里面的一两行代码即可,具体:
修改xml文件,将文件中所有出现<s:element ref=“s:schema”/><s:any/>的地方全部使用? <s:any minOccurs=“2” maxOccurs=“2”/>替换掉。

除了wsimport命令外,可以借助eclipse通过wsdl连接直接生成客户端调用代码参考博客

https://www.cnblogs.com/AlanLee/archive/2017/06/02/6933073.html

客户端的调用

新建一个动态Web工程,复制wsimport里面的java代码到工程中,注意新建工程包目录的时候根据要导入的java文件的包建立包结构,否则后面调用会报错!!!!!!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Client代码为:

package demo;

public class MyClient {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyService myService = new MyServiceService().getMyServicePort();
		
		myService.sayHello();
	}

}

成功:
在这里插入图片描述

备注

推荐一个webService服务的网站,里面有些天气服务,号码归属地查询等服务,有兴趣的可以去试试

http://www.webxml.com.cn/zh_cn/index.aspx

注意wsimport时要更改xml文件,具体参考上面步骤。。。

感觉不错请点个赞,收藏一波吧!!!!

后续将更新:webService的一个框架,apache下的 CXF ,有兴趣的话可以查看我的博客。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值