WebService 简单介绍以及Eclipse IDE下服务器端+客户端的实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36940806/article/details/80636986

一、Web Service基本概念

Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术ps:Internet 是面向全球的网络,而 Intranet 则是 Internet 技术在企业机构内部的实现。:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

 

一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

 

 下面是一些需要了解的基本术语

XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。


Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

 

 

 

扫描二维码关注公众号,回复: 4676049 查看本文章

 

 

二、调用原理

 

                                                                                    

 

 

实现一个完整的Web服务包括以下步骤:

◆ Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册; (发布)

◆ Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务; (发现)

◆ Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;(发现)

◆ 利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;(绑定)

◆ Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。(绑定)

 

 

 

 

客户端——> 阅读WSDL文档 (根据文档生成SOAP请求) ——>发送到Web服务器——>交给WebService请求处理器 (ISAPI Extension)

——>处理SOAP请求——> 调用WebService——>生成SOAP应答 ——> Web服务器通过http的方式交给客户端

三、WebService案例


第一步:创建web services 服务器端 

(1) Eclipse 下 新建 java Project  命名为 test_services  创建如下几个类

新建接口 IHelloWorld 代码如下

package com.services;

import javax.jws.WebService;

@WebService
public interface IHelloWorld {

	String say(String str);
}

新建 HelloWorldImpl 类 实现 IHelloWorld接口  代码如下

package com.services;

import javax.jws.WebService;

@WebService
public class HelloWorldImpl implements IHelloWorld {


	public String say(String str){
		return str+",世界!";
	}
}

新建 ServicesMain 类 用于暴露WSDL

package com.services;


import javax.xml.ws.Endpoint;


public class ServiceMain {


	public static void main(String[] args) {
		String address="http://127.0.0.1:9999/test_services"; //这里相当于在本地主机上发布一个项目的地址
		Endpoint.publish(address, new HelloWorldImpl());  //第一个参数是项目的地址,第二个参数是功能类
		System.out.println("Web Service已成功暴露...");  //这里是提示信息,web services  是否成功暴露
	}
}

(2)我们现在运行ServiceMain  让webservice 暴露出来



可以看到 已打印出 web service 已成功暴露的提示信息

(3)在浏览器中查看wsdl,检测 web service是否成功暴露

输入的地址为 ServiceMain 中的 address 地址加上 “?WSDL”


这里是我发布的服务器地址 

  在浏览器地址栏中输入  http://127.0.0.1:9999/test_services?WSDL


到这里 说明服务器端已经发布成功了,启示这里的WSDL相当于该项目的使用说明书


第二步:创建 web service  服务器端测试 服务器端发布的类的功能,

() file ->new JavaProject 命名为 test_client ,然后在该项目上点击鼠标右键,

新建Web Service Client  客户端,注意 在Service definition 中填入的是WSDL的地址,也就是第一步中测试WSDL是否发布成功的地址


(2)可以看到这里已经生成了客户端的代码



接下来 我们写一个测试类 ServiceTest

package com.services;

import java.rmi.RemoteException;

public class ServiceTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		HelloWorldImplProxy hello=new  HelloWorldImplProxy();
		 String str = null;
		try {
			str = hello.say("你好");
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//服务器端定义了客户端调用返回的格式
		 System.out.println(str);
	}

}

运行测试类,结果如下


到这里 一个简单的web service 项目的服务器端和客户顿就已经成功构建了。

猜你喜欢

转载自blog.csdn.net/qq_36940806/article/details/80636986