热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webservice通讯协议(webservice案例)

面向短期的临时数据处理、面向万维网络,是Soap的基础。是XMLWebService的通信协议。WSDL:WSDL文件是一个XML文档,用于说明一组SOAP消息以及


web服务的工作原理和示例


一、web服务的基本概念


Web Service (也称为XML Web Service WebService )是一种轻量级、独立的通信技术,可以接收internet或internet上其他系统发出的请求。是SOAP在Web上提供的软件服务,使用WSDL文件进行说明并使用UDDI进行注册。


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


简单对象访问协议(simpleobjectaccessprotocol )。 XMLweb服务的通信协议。 用户在UDDI中找到你的WSDL描述文档后,他可以在SOAP中调用你建立的Web服务的一个或多个操作。 SOAP是XML文档格式调用方法的规范,可以支持各种底层接口,包括http(s )和SMTP。


wsdl:(webservicesdescriptionlanguage ) wsdl文件是一组说明如何交换SOAP消息的XML文档。 大多数情况下,它由软件自动生成和使用。


通用描述、发现和集成(UDDI )是主要面向Web服务提供者和用户的新项目。 在用户调用Web服务之前,必须确定该服务包含什么业务方法,找到调用的接口的定义,然后在服务端创建软件。 UDDI是一种引导系统基于描述文档查找相应服务的机制。 UDDI利用SOAP消息机制(标准XML/HTTP )发布、编辑、浏览和搜索注册信息。 以XML格式封装各种类型的数据,并将其发送到注册中心,或从注册中心返回所需的数据。


二.呼叫原理


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


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


Web服务委托人向Web服务中介委托特定服务,中介根据要求咨询UDDI注册中心,为委托人查找符合要求的服务(发现)


Web服务中介者将满足条件的Web服务描述信息返回给Web服务请求者。 该描述信息是用WSDL编写的,可以由各种Web服务兼容设备读取; (发现)


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


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


三、呼叫方式:


1 .在net上以GET/POST/SOAP方式动态调用web服务的简单灵活的方法(C# ) )。


调用web服务有三种方法


1 ).httpget


2 ).httppost


3 ).httpsoap


soap的优点是可以传输结构化数据,但不能做到前两个。


btw、soap最终也使用HTTP传输XM


web服务实例


一、使用CXF开发web服务端:


每个web服务组件都需要两个部分:接口和实现类。 步骤: 1、准备开发所需的jar软件包【apache-cxf-2.5.9下载】


2、开发使用@ web服务修饰的web服务业务接口。


package com.ywx; importJavaX.jws.web服务; @ webservicepublicinterfacehelloworld { string sayhi (string name ); }


3、要写这个方法的实现类,方法也需要用@WebService限定,在其中的参数中,如下指定要实现的接口,指定服务名。


package com.ywx.impl; import java.util.Date; importJavaX.jws.web服务; import com.ywx.HelloWorld; @ web服务(endpoint interface=' com.ywx.hello world ',serviceName='HelloWorld

Ws")//指定webservice所实现的接口以及服务名称public class HellowWorlds implements HelloWorld{@Overridepublic String sayHi(String name) {return name+"您好!现在时间是:"+new Date();}}

4、暴露Web Service的函数,运行函数暴露Web Service:
package com.ywx.lee;import javax.xml.ws.Endpoint;import com.ywx.HelloWorld;import com.ywx.impl.HellowWorlds;public class ServiceMain {public static void main(String args[]){HelloWorld hw = new HellowWorlds();//调用Endpoint的publish方法发布Web ServiceEndpoint.publish("192.168.1.7/vashon", hw);System.out.println("Web Service暴露成功!");}}
然后运行浏览器,输入:http://192.168.1.7/vashon?wsdl 查看结果,如果成功生成如下wsdl文档则表示Web Service暴露成功。


二、使用CXF开发Web Service客户端:
步骤:
1、新建一个客户端工程 2、调用CXF提供的wsdl2java工具或使用eclipse/myeclipse的new Web Service生成客户端代码(这里使用第二种方式):

                                           

输入wsdl链接:
                                             
点击next:
                                                                                                       选择生成客户端代码的位置:    


                                           


点击finish,生成客户端代码如下:

                                                                            

3、在客户端写测试类测试:
package com.ywx.test;import java.rmi.RemoteException;import com.ywx.HelloWorldProxy;public class TestService {public static void main(String args[]){HelloWorldProxy h = new HelloWorldProxy();try {String s = h.sayHi("明理的曲奇");System.out.println("调webservice:"+s);} catch (RemoteException e) {e.printStackTrace();}}}
运行结果(传入一个参数,调用Web Service返回的字符串结果如下):


其调用生成的格式已经有服务端定义好了,看上面贴出来的代码或者下面的截图说明:


Web Service服务端和客户端工程结果截图如下:
                   


推荐阅读
author-avatar
长江7808
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有