热门标签 | 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服务端和客户端工程结果截图如下:
                   


推荐阅读
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
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社区 版权所有