webservice_webservicedemo - CSDN
webservice 订阅
Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。 [1]  Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。 展开全文
Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。 [1]  Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
信息
类    型
应用程序
平    台
独立平台
作    用
交换数据或集成
中文名
Web Service
外文名
Web Service
Web Service历史
web广泛用到的技术:他们的特点是其开放性,跨平台性,开放性正是Web services的基础。近几年来,Internet的迅猛发展使其成为全球信息传递与共享的巨大的资源库。越来越多的网络环境下的Web应用系统被建立起来,利用HTML、CGI等Web技术可以轻松地在Internet环境下实现电子商务、电子政务等多种应用。然而这些应用可能分布在不同的地理位置,使用不同的数据组织形式和操作系统平台,加上应用不同所造成的数据不一致性,使得如何将这些高度分布的数据集中起来并得以充分利用成为急需解决的问题。随着网络技术、网络运行理念的发展,人们提出一种新的利用网络进行应用集成的解决方案——Web Service。Web Service是一种新的Web应用程序分支,其可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。因此,Web Service是构造分布式、模块化应用程序和面向服务应用集成的最新技术和发展趋势。
收起全文
  • 比 WCF 更简单、更通用,比 WebService 更节省流量、更简洁,Web API 是一个轻量级的框架,非常适合构建移动客户端服务。 WebApi 基础+进阶 实战视频教程,整个课程分为两个阶段,基础和进阶(提高)阶段,两个...
  • WebService技术详解 (一)

    万次阅读 多人点赞 2017-07-25 18:01:18
    WebServiceWebService简介Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三... 简单的说,WebService就是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,

    WebService

    WebService简介

    Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。

    简单的说,WebService就是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然。跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。 远程调用,就是一台计算机的应用可以调用其他计算机上的应用。例如:支付宝,支付宝并没有银行卡等数据,它只是去调用银行提供的接口来获得数据。还有天气预报等,也是气象局把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能。

    WebService原理

    XML,SOAP和WSDL就是构成WebService平台的三大技术 。

    • WebService采用Http协议来在客户端和服务端之间传输数据。WebService使用XML来封装数据,XML主要的优点在于它是跨平台的。

    • WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议规定的。

    • WebService服务器端首先要通过一个WSDL文件来说明自己有什么服务可以对外调用。简单的说,WSDL就像是一个说明书,用于描述WebService及其方法、参数和返回值。 WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。

    WebService交互的过程就是,WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。

    JAVA WebService规范

    Java 中共有三种WebService 规范,分别是JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS。

    (1)JAX-WS:

    JAX-WS(Java API For XML-WebService)。早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(java API For XML-Remote Procedure Call)目前已经被JAX-WS 规范取代,JAX-WS 是JAX-RPC 的演进版本,但JAX-WS 并不完全向后兼容JAX-RPC,二者最大的区别就是RPC/encoded 样式的WSDL,JAX-WS 已经不提供这种支持。JAX-RPC 的API 从JAVA EE5 开始已经移除,如果你使用J2EE1.4,其API 位于javax.xml.rpc.包。JAX-WS(JSR 224)规范的API 位于javax.xml.ws.包,其中大部分都是注解,提供API 操作Web 服务(通常在客户端使用的较多,由于客户端可以借助SDK 生成,因此这个包中的API 我们较少会直接使用)。

    (2)JAXM&SAAJ:

    JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的API,相当于Web 服务的服务器端,其API 位于javax.messaging.*包,它是Java EE 的可选包,因此你需要单独下载。

    SAAJ(SOAP With Attachment API For Java,JSR 67)是与JAXM 搭配使用的API,为构建SOAP 包和解析SOAP 包提供了重要的支持,支持附件传输,它在服务器端、客户端都需要使用。这里还要提到的是SAAJ 规范,其API 位于javax.xml.soap.*包。

    JAXM&SAAJ 与JAX-WS 都是基于SOAP 的Web 服务,相比之下JAXM&SAAJ 暴漏了SOAP更多的底层细节,编码比较麻烦,而JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不需要关心SOAP 的任何细节。那么如果你想控制SOAP 消息的更多细节,可以使用JAXM&SAAJ。

    (3)JAX-RS:

    JAX-RS 是JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6 一起发行。

    WebService入门案例

    服务端的实现

    我们来实现一个天气系统的案例,客户端发送城市名称,服务器端回应相应的天气。

    1.  编写SEI(Service Endpoint Interface),SEI在webservice中称为portType,在java中就是普通接口 
    
    public interface WeatherInterface {
        public String queryWeather(String cityName);
    }
    
    2.  编写SEI实现类,此类作为webservice提供服务类 
    
    @WebService     //@WebService表示该类是一个服务类,需要发布其中的public的方法
    public class WeatherInterfaceImpl implements WeatherInterface {
    
        @Override
        public String queryWeather(String cityName) {
            System.out.println("获取城市名"+cityName);
            String weather="暴雨";    
            return weather;
        }
    
    }
    3.  第三步:发布服务,Endpoint类发布服务,publish方法,两个参数:1.服务地址;2.服务实现类 
    
    public class WeatherServer {
        public static void main(String[] args) {
            Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
        }
    }
    
    4. 测试服务是否发布成功,通过阅读wsdl,确定客户端调用的接口、方法、参数和返回值存在,证明服务发布成功
    
    //我们在浏览器输入 http://127.0.0.1:12345/weather?wsdl 来获取wsdl文件进行阅读
    
    //wsdl,是以XML文件形式来描述WebService的”说明书”,有了说明书,我们才可以知道如何使用或是调用这个服务.
    
    //现在我们还不知道怎么去阅读,后面我们会详解,只要能获取到,就能确定WebService服务发布成功 

    这里写图片描述

    客户端的实现

    //客户端调用服务有很多种方法,我们先用工具生成客户端代码,后面会详解  
    
    //wsimport是jdk自带的webservice客户端工具,可以根据wsdl文档生成客户端调用代码(java代码).当然,无论服务器端的WebService是用什么语言写的,都可以生成调用webservice的客户端代码。
    
    1.创建一个客户端空项目,cmd命令行进入此项目的src目录
      使用以下命令生成客户端代码  
    
        wsimport -s . http://127.0.0.1:12345/weather?wsdl
    
        -s是指编译出源代码文件,后面的.(点)指將代码放到当前目录下.
         最后面的http….是指获取wsdl说明书的地址
    

    这里写图片描述

    2.编写客户端
    public class WeatherClient {
    
        public static void main(String[] args) {
            //创建服务视图,视图是从wsdl文件的service标签的name属性获取
            WeatherInterfaceImplService weatherInterfaceImplService=new WeatherInterfaceImplService();  
    
            //获取服务实现类,实现类从wsdl文件的portType的name属性获取
            WeatherInterfaceImpl weatherInterfaceImpl=weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class); 
            //获取查询方法,从portType的operation标签获取
            String weather=weatherInterfaceImpl.queryWeather("北京");
            System.out.println(weather);
    
        }
    
    }
    

    至此,我们的客户端就可以获取远程服务端的数据,接下来我们来详解一下各个部分。

    WSDL

    WSDL(Web Services Description Language), web服务描述语言,他是webservice服务端使用说明书,说明服务端接口、方法、参数和返回值,WSDL是随服务发布成功,自动生成,无需编写。

    文档结构

    这里写图片描述

    Service:相关端口的集合,包括其关联的接口、操作、消息等。

    Binding:特定端口类型的具体协议和数据格式规范

    portType: 服务端点,描述 web service可被执行的操作方法,以及相关的消息,通过binding指向portType

    message: 定义一个操作(方法)的数据参数

    types: 定义 web service 使用的全部数据类型

    阅读方式

    WSDL文档应该从下往上阅读。

    1.先看service标签,看相应port的binding属性,然后通过值查找上面的binding标签。

    2.通过binding标签可以获得具体协议等信息,然后查看binding的type属性

    3.通过binding的type属性,查找对应的portType,可以获得可操作的方法和参数、返回值等。

    4.通过portType下的operation标签的message属性,可以向上查找message获取具体的数据参数信息。

    SOAP

    SOAP即简单对象访问协议,他是使用http发送的XML格式的数据,它可以跨平台,跨防火墙,SOAP不是webservice的专有协议。

    SOAP=http+xml

    SOAP结构

    必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
    可选的 Header 元素,包含头部信息
    必需的 Body 元素,包含所有的调用和响应信息
    可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
    

    这里写图片描述

    我们来看一下我们上面天气程序发送的数据的格式,这需要一个工具TCP/IP Monitor ,Eclipse自带的Debug工具之一,用于捕获Http、TCP/IP协议包。原理是一个代理服务,客户端先把数据发送到代理服务,然后代理服务再把数据发送到服务器,这样就能获取请求数据和响应数据。

    第一步:打开这个工具,选择other,然后输入TCP/IP Monitor

    这里写图片描述

    第二步:设置要代理的服务器

    这里写图片描述

    第三步:详细设置

    第一个参数是代理服务器端口,我们设置为54321
    第二个参数是被代理服务器的地址,第三个参数是被代理服务器的端口
    第四个参数要选择为TCP/IP
    

    这里写图片描述

    第四步:检测是否设置成功,我们访问代理服务器来获得wsdl文件

    这里写图片描述

    第五步:设置成功后,我们需要改一下客户端要连接的服务器,改成代理服务器的端口

    将WeatherInterfaceImplService里的所有原来地址的端口改为54321
    

    这里写图片描述

    第六步:我们启动我们的客户端,获取请求数据和响应数据

    
    请求 
    
    //先发送get请求,去获得wsdl文件,然后获得方法、参数等信息
    GET /weather?wsdl HTTP/1.1
    User-Agent: Java/1.8.0_111
    Host: 127.0.0.1:54321
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    
    //发送数据
    POST /weather HTTP/1.1
    Accept: text/xml, multipart/related
    Content-Type: text/xml; charset=utf-8
    SOAPAction: "http://ws.cad.com/WeatherInterfaceImpl/queryWeatherRequest"
    User-Agent: JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e
    Host: 127.0.0.1:54321
    Connection: keep-alive
    Content-Length: 203
    
    <?xml version="1.0" ?>
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
    <ns2:queryWeather xmlns:ns2="http://ws.cad.com/">
    <arg0>北京</arg0>
    </ns2:queryWeather>
    </S:Body>
    </S:Envelope>
    
    响应数据 
    
    HTTP/1.1 200 OK
    Date: Tue, 25 Jul 2017 05:05:58 GMT
    Transfer-encoding: chunked
    Content-type: text/xml;charset=utf-8
    
    //响应wsdl内容,来获得方法、参数等信息
    899
    <?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. --><!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.cad.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.cad.com/" name="WeatherInterfaceImplService">
    <types>
    <xsd:schema>
    <xsd:import namespace="http://ws.cad.com/" schemaLocation="http://127.0.0.1:54321/weather?xsd=1"></xsd:import>
    </xsd:schema>
    </types>
    <message name="queryWeather">
    <part name="parameters" element="tns:queryWeather"></part>
    </message>
    <message name="queryWeatherResponse">
    <part name="parameters" element="tns:queryWeatherResponse"></part>
    </message>
    <portType name="WeatherInterfaceImpl">
    <operation name="queryWeather">
    <input wsam:Action="http://ws.cad.com/WeatherInterfaceImpl/queryWeatherRequest" message="tns:queryWeather"></input>
    <output wsam:Action="http://ws.cad.com/WeatherInterfaceImpl/queryWeatherResponse" message="tns:queryWeatherResponse"></output>
    </operation>
    </portType>
    <binding name="WeatherInterfaceImplPortBinding" type="tns:WeatherInterfaceImpl">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
    <operation name="queryWeather">
    <soap:operation soapAction=""></soap:operation>
    <input>
    <soap:body use="literal"></soap:body>
    </input>
    <output>
    <soap:body use="literal"></soap:body>
    </output>
    </operation>
    </binding>
    <service name="WeatherInterfaceImplService">
    <port name="WeatherInterfaceImplPort" binding="tns:WeatherInterfaceImplPortBinding">
    <soap:address location="http://127.0.0.1:54321/weather"></soap:address>
    </port>
    </service>
    </definitions>
    0
    
    //响应数据
    HTTP/1.1 200 OK
    Date: Tue, 25 Jul 2017 05:05:59 GMT
    Transfer-encoding: chunked
    Content-type: text/xml; charset=utf-8
    
    df
    <?xml version="1.0" ?>
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:queryWeatherResponse xmlns:ns2="http://ws.cad.com/">
        <return>暴雨</return> 
        </ns2:queryWeatherResponse> 
    </S:Body>
    </S:Envelope>
    0
    

    UDDI

    UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。
    如果我们要使用一种服务,但是不知道地址(wsdl等),我们就可以在UDDI中查找。
    大部分情况下,我们都是知道服务地址的。

    Webservice的客户端调用方式

    一:生成客户端调用方式

    wsimport是jdk自带的webservice客户端工具,可以根据wsdl文档生成客户端调用代码(java代码).
    wsimport.exe位于JAVA_HOME\bin目录下 
    常用参数为:
            -d<目录>  - 将生成.class文件。默认参数。
            -s<目录> - 将生成.java文件。
            -p<生成的新包名> -将生成的类,放于指定的包下
    

    调用公网的手机归属地查询服务

    公网服务地址 (里面提供了很多免费调用的服务)
    http://www.webxml.com.cn/zh_cn/index.aspx

    第一步:wsimport生成客户端代码 
    
    wsimport -p cn.cad.mobile -s . http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
    
    会出现一些警告,是因为服务端提供的一些方法是SOAP1.2标准的,这个工具没有实现SOAP1.2标准的生成方式。    
    

    这里写图片描述

    第二步:查看wsdl文件,获取我们需要的信息 

    这里写图片描述

    第三步:根据获取到的服务名等信息来创建我们的客户端  
    
    public class MobileClient {
    
        public static void main(String[] args) {
            //创建服务视图
            MobileCodeWS mobileCodeWS=new MobileCodeWS();
            //获取服务实现类
            MobileCodeWSSoap mobileCodeWSSoap= mobileCodeWS.getPort(MobileCodeWSSoap.class);
            //调用查询方法
            String message=mobileCodeWSSoap.getMobileCodeInfo("xxxxxxxx", null);
            System.out.println(message);
    
        }
    }
    
    第四步:获取到信息 

    这里写图片描述

    还有天气等服务,自己可以去实现一下。

    该种方式使用简单,但一些关键的元素在代码生成时写死在生成代码中,不方便维护,所以仅用于测试。

    二:service编程调用方式

    public class MobileClient2 {
    
        public static void main(String[] args) throws IOException {
            //创建WSDL文件的URL
            URL wsdlDocumentLocation=new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"); 
            //创建服务名称
            //1.namespaceURI - 命名空间地址
            //2.localPart - 服务视图名
            QName serviceName=new QName("http://WebXml.com.cn/","MobileCodeWS");
            Service service=Service.create(wsdlDocumentLocation, serviceName);
    
            //获取服务实现类
            MobileCodeWSSoap mobileCodeWSSoap= service.getPort(MobileCodeWSSoap.class);
            //调用方法
            String message=mobileCodeWSSoap.getMobileCodeInfo("XXXXXXX", null);
            System.out.println(message);
    
        }
    
    }

    该种方式可以自定义命名空间,服务视图名等元素,方便以后维护,是一种标准的开发方式 。

    三:HttpURLConnection调用方式

    这种方式是由自己编写客户端,不再由工具生成,比较麻烦。

    开发步骤: 
    
            第一步:创建服务地址
    
            第二步:打开一个通向服务地址的连接
    
            第三步:设置参数
    
            第四步:组织SOAP数据,发送请求
    
            第五步:接收服务端响应 
    
    public class MobileClient2 {
    
        public static void main(String[] args) throws IOException {
                    //第一步:创建服务地址,不是WSDL地址
                    URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx");
                    //第二步:打开一个通向服务地址的连接
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    //第三步:设置参数
                    //3.1发送方式设置:POST必须大写
                    connection.setRequestMethod("POST");
                    //3.2设置数据格式:content-type
                    connection.setRequestProperty("content-type", "text/xml;charset=UTF-8");
                    //3.3设置输入输出,因为默认新创建的connection没有读写权限,
                    connection.setDoInput(true);
                    connection.setDoOutput(true);
    
                    //第四步:组织SOAP数据,发送请求
                    String soapXML = getXML("XXXXXXX");
                    OutputStream os = connection.getOutputStream();
                    os.write(soapXML.getBytes());
                    //第五步:接收服务端响应,打印
                    int responseCode = connection.getResponseCode();
                    if(200 == responseCode){//表示服务端响应成功
                        InputStream is = connection.getInputStream();
                        //将字节流转换为字符流
                        InputStreamReader isr = new InputStreamReader(is,"utf-8");
                        //使用缓存区
                        BufferedReader br = new BufferedReader(isr);
    
                        StringBuilder sb = new StringBuilder();
                        String temp = null;
                        while(null != (temp = br.readLine())){
                            sb.append(temp);
                        }
                        System.out.println(sb.toString());
    
                        is.close();
                        isr.close();
                        br.close();
                    }
    
                    os.close();
                }
    
        //组织数据,将数据拼接一下
        public static String getXML(String phoneNum){
            String soapXML = "<?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>"
                +"<getMobileCodeInfo xmlns=\"http://WebXml.com.cn/\">"
                    +"<mobileCode>"+phoneNum+"</mobileCode>"
                  +"<userID></userID>"
                +"</getMobileCodeInfo>"
              +"</soap:Body>"
            +"</soap:Envelope>";
            return soapXML;
        }
    }

    这里写图片描述

    使用注解修改WSDL内容

    作用:
    通过注解,可以更加形像的描述Web服务。对自动生成的wsdl文档进行修改,为使用者提供一个更加清晰的wsdl文档

    WebService的注解都位于javax.jws包下: 
    
    @WebService-定义服务,在类上边
        targetNamespace:指定命名空间
        name:portType的名称
        portName:port的名称
        serviceName:服务名称
        endpointInterface:SEI接口地址,如果一个服务类实现了多个接口,只需要发布一个接口的方法,可通过此注解指定要发布服务的接口。 
    
    @WebMethod-定义方法,在公开方法上边
        operationName:方法名
        exclude:设置为true表示此方法不是webservice方法,反之则表示webservice方法,默认是false 
    
    @WebResult-定义返回值,在方法返回值前边
        name:返回结果值的名称 
    
    @WebParam-定义参数,在方法参数前边
        name:指定参数的名称
    
    //以我们前面做的天气案例为例子
    
    @WebService(
            targetNamespace="http://service.cad.com",
            portName="WeatherSOAPPort",
            serviceName="WeatherWSS",
            name="WeatherSOAP"  
    )
    public class WeatherInterfaceImpl implements WeatherInterface {
    
        @WebMethod(
                operationName="getWeather",
                exclude=false
        )
        public @WebResult(name="result")String queryWeather(@WebParam(name="cityName")String cityName) {
            System.out.println("获取城市名"+cityName);
            String weather="暴雨";    
            return weather;
        }
    
    }
    然后重新发布服务,我们再访问wsdl文件,就可以看到我们改变的内容 

    这里写图片描述

    展开全文
  • Java创建WebService服务及客户端实现

    万次阅读 多人点赞 2019-05-12 00:30:44
    简介 WebService是一种服务的提供方式,通过WebService,不同应用间相互间调用变的很方便,网络上有很多常用的WebService服务,如:...Java的WebService实现,比较流行的有Axis2、Jaxws,...

    简介       

           WebService是一种服务的提供方式,通过WebService,不同应用间相互间调用变的很方便,网络上有很多常用的WebService服务,如:http://developer.51cto.com/art/200908/147125.htm,不同的语言平台对WebService都有实现,Java的WebService实现,比较流行的有Axis2、Jaxws,本文介绍的是Axis2。

    Axis2下载和部署

           Axis2是Apache开发的一个开源项目,再次感叹Apache的伟大!

           下载地址:

           http://mirror.bit.edu.cn/apache/axis/axis2/java/core/1.6.2/axis2-1.6.2-war.zip

           将其内axis2.war解压到<Tomcat安装目录>/webapps下,启动Tomcat,war包会自动解压,访问http://localhost:8080/axis2/,如果看到欢迎主页,则说明部署成功。

    配置Axis2

           <Tomcat安装目录>/webapps/axis2/WEB-INF/conf/axis2.xml,配置其内两个属性,以便调试。

    <parameter name="hotdeployment">true</parameter><!-- 开启热部署,不需要重启即可部署服务 -->
    <parameter name="hotupdate">true</parameter><!-- 开启热更新,不需要重启即可更新服务 -->

    编写服务

           所谓服务就是编写一个类,写一些方法,方法返回数据,WebService客户端获取数据。

    public class HelloService {
    
    	public String sayHello() {
    		return "hello";
    	}
    	
    }

    零配置发布服务

           服务类创建好后,我们需要发布到服务器上,将HelloService.class放到<Tomcat安装目录>/webapps/axis2/WEB-INF/pojo下,pojo没有需要创建。

           至此,我们已经成功的创建了一个WebService服务了,so easy!

           再次访问http://localhost:8080/axis2/,点击Services,可以发现可用services中多了一个HelloService,其内有一个可用操作sayHello,说明发布成功。

    HelloService
    
    Service Description : No description available for this service
    
    Service EPR : http://localhost:8080/axis2/services/HelloService
    
    Service Status : Active
    
    
    Available Operations
    sayHello

           访问http://localhost:8080/axis2/services/HelloService,页面输出正是我们的返回值。

    <ns:sayHelloResponse xmlns:ns="http://ws.apache.org/axis2">
    <return>hello</return>
    </ns:sayHelloResponse>

           这里有两点需要注意:

           - 发布的类不能放在包里,既不能使用package关键字;

           - 默认的发布目录是pojo,可以在<Tomcat安装目录>/webapps/axis2/WEB-INF/conf/axis2.xml中增加目录,

    <deployer extension=".class" directory="<要增加的目录名称>" class="org.apache.axis2.deployment.POJODeployer" />

             要注意多个目录间WebService要唯一,否则会重名,重名后,先部署的会成功,后部署的会报错。

    services.xml配置文件发布服务

           虽然上面的方式不需要配置文件,但是其服务类不能放在包内,显然是不符合我们日常开发的,Axis2也允许带包的类发布WebService,如果不允许,估计就没人用了。

           首先写一个较复杂的服务类,多个方法,带参数,有返回值的。

    package webservice.test;
    
    /**
     * 计算器运算
     * 
     * @author gaoshuang
     */
    public class CalculateService {
    
    	// 加法
    	public float plus(float x, float y) {
    		return x + y;
    	}
    
    	// 减法
    	public float minus(float x, float y) {
    		return x - y;
    	}
    
    	// 乘法
    	public float multiply(float x, float y) {
    		return x * y;
    	}
    
    	// 除法
    	public float divide(float x, float y) {
    		if (y != 0)
    			return x / y;
    		else
    			return -1;
    	}
    }

           然后编写services.xml,该文件需要放在META-INF文件夹下。

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 服务名称 -->
    <service name="CalculateService">
    	<!-- 服务描述 -->
        <description>
    		加减乘除计算服务
        </description>
        <!-- 设置服务类 -->
        <parameter name="ServiceClass">
            com.runqianapp.webservice.test.CalculateService
        </parameter>
        <!-- 方法 -->
        <operation name="plus">
        	<!-- 方法处理器,RPCMessageReceiver为带返回值的处理器,
        	             RPCInOnlyMessageReceiver为不带返回值的处理器 -->
        	<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        <operation name="minus">
        	<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        <operation name="multiply">
        	<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        <operation name="divide">
        	<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
    </service>

           最后将这两个文件打成jar包,不论用工具还是手动打,打的都是最外层的文件夹。

           

           我打的名字是server.jar,更改后缀为aar,所以最后是server.aar,Axis2建议使用aar发布WebService,将server.aar放到<Tomcat安装目录>/webapps/axis2/WEB-INF/services下,访问http://localhost:8080/axis2/services/listServices,多出了一个CalculateService,说明发布成功。

    CalculateService
    
    Service Description : CalculateService
    
    Service EPR : http://localhost:8080/axis2/services/CalculateService
    
    Service Status : Active
    
    
    Available Operations
    divide
    plus
    minus
    multiply

           分别访问:

           http://localhost:8080/axis2/services/CalculateService/plus?x=1&y=2

           http://localhost:8080/axis2/services/CalculateService/divide?x=1&y=2

           http://localhost:8080/axis2/services/CalculateService/minus?x=1&y=2

           http://localhost:8080/axis2/services/CalculateService/multiply?x=1&y=2
           

           也可以发布多个WebService,可以使用serviceGroup标签。

    <serviceGroup>
    <service name="myService1">
    	...
    </service>
    <service name="myService2">
    	...
    </service>
    </serviceGroup>

    客户端实现

           以上介绍的都是WebService服务创建及发布,那么有了一个WebService服务后,我们如何调用呢?只在浏览器上访问是没有意义的。

           下载Axis2客户端压缩包:http://mirror.esocc.com/apache/axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip,并解压。

           新建工程WebServiceClientTest,将<Axis2客户端安装目录>/lib下所有jar包添加到工程中。编写客户端代码:

    package webservice.client.test;
    
    import javax.xml.namespace.QName;
    
    import org.apache.axis2.AxisFault;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.rpc.client.RPCServiceClient;
    
    public class Client1 {
    
    	/**
    	 * @param args
    	 * @throws AxisFault
    	 */
    	public static void main(String[] args) throws AxisFault {
    		// 使用RPC方式调用WebService
    		RPCServiceClient serviceClient = new RPCServiceClient();
    		Options options = serviceClient.getOptions();
    		// 指定调用WebService的URL
    		EndpointReference targetEPR = new EndpointReference(
    				"http://localhost:8080/axis2/services/CalculateService");
    		options.setTo(targetEPR);
    		// 调用方法的参数值
    		Object[] entryArgs = new Object[] {1, 2};
    		// 调用方法返回值的数据类型的Class对象
    		Class[] classes = new Class[] { float.class };
    		// 调用方法名及WSDL文件的命名空间
    		// 命名空间是http://localhost:8080/axis2/services/CalculateService?wsdl中wsdl:definitions标签targetNamespace属性
    		QName opName = new QName("http://test.webservice", "plus");
    		// 执行方法获取返回值
    		// 没有返回值的方法使用serviceClient.invokeRobust(opName, entryArgs)
    		Object result = serviceClient.invokeBlocking(opName, entryArgs, classes)[0];
    		System.out.println(result);
    		// out: 3.0
    	}
    
    }
    

           以上是实现了一个简单的WebSerivce客户端,调用CalculateService中的plus方法,由代码可见,这种调用方式比较杂乱,代码不太友好。

    wsdl2java简化客户端

           <Axis2客户端安装目录>/bin目录,其内有两个bat,wsdl2java.bat和java2wsdl.bat,可以实现WSDL文件和Java之间的互相转换。

           考虑到我们以后可能经常使用这些命令,设置环境变量,方便以后调用。在系统变量中加入AXIS2_HOME=<Axis2客户端安装目录>,path中追加;%AXIS2_HOME%\bin。

           启动命令提示符,进入WebServiceTestClient所在目录,运行:

    wsdl2java -uri http://localhost:8080/axis2/services/CalculateService?wsdl -p webservice.client.test -s

           参数说明:uri - wsdl文件路径,网络路径或本地路径,p - 打包,这里和上一个客户端实现类打在了一个包里,wsdl2java有很多参数,详细可以运行该命令去查看。

           执行后,如果没有报错,说明运行成功,刷新项目,该包下多出了一个CalculateServiceStub类,里面的代码极其复杂,还乱呼呼的,这我们不用管,调用该类。

    package webservice.client.test;
    
    import java.rmi.RemoteException;
    
    import webservice.client.test.CalculateServiceStub.Plus;
    
    public class Client2 {
    
    	/**
    	 * @param args
    	 * @throws RemoteException 
    	 */
    	public static void main(String[] args) throws RemoteException {
    		CalculateServiceStub stub = new CalculateServiceStub();
    		Plus plus = new Plus();
    		plus.setX(1);
    		plus.setY(2);
    		float result = stub.plus(plus).get_return();// 返回值自动转型,这也是强大之处
    		System.out.println(result);
    	}
    
    }

           如此做的好处就是调用时不需要在去查看WSDL,和正常使用一个类一样,对WebService的封装都由wsdl2java自动生成,代码更优雅、简洁。

    利用wsdl2java轻松使用第三方WebService服务

           有了wsdl2java,已知一个WSDL文件我们就可以轻松的生成WebService客户端供我们调用,给我们服务。文章开头给出的链接包含了一些第三方服务,有一个服务是生成随机个数中文,WSDL:http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl,同样,启动命令提示符,进入项目路径,执行:

    wsdl2java -uri http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl -p webservice.client.test -s

           调用该类:

    package webservice.client.test;
    
    import java.rmi.RemoteException;
    
    import webservice.client.test.RandomFontsWebServiceStub.ArrayOfString;
    import webservice.client.test.RandomFontsWebServiceStub.GetChineseFonts;
    
    public class ThirdClient {
    
    	/**
    	 * @param args
    	 * @throws RemoteException 
    	 */
    	public static void main(String[] args) throws RemoteException {
    		RandomFontsWebServiceStub stub = new RandomFontsWebServiceStub();
    		GetChineseFonts getChineseFonts = new GetChineseFonts();
    		getChineseFonts.setByFontsLength(10);// 免费使用有限制,最多8个
    		ArrayOfString result = stub.getChineseFonts(getChineseFonts).getGetChineseFontsResult();
    		for(String str : result.getString()) {
    			System.out.println(str);
    		}
    	}
    
    }

    源码下载

           文中代码尽在下面链接中,免积分下载。

           http://download.csdn.net/download/ghsau/6400843

           (完)

           本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/12714965

     

    展开全文
  • webservice

    2018-12-27 13:55:35
    webservice三要素: 1.SOAP:webservice的核心传输协议。 其实本质就是基于HTTP协议, 传输一个xml格式的文档。(SOAP = HTTP + xml) 2.WSDL:是指webservice的描述语言,是用xml文档进行对接口服务进行描述的。( 就...

    webservice三要素:

    1.SOAP:webservice的核心传输协议。 其实本质就是基于HTTP协议, 传输一个xml格式的文档。(SOAP = HTTP + xml)

    2.WSDL:是指webservice的描述语言,是用xml文档进行对接口服务进行描述的。( 就相当于一个 web服务的说明书)

    3.UDDI : 将所有的web服务统一的管理,方便其他人的使用和查阅。(可以简单的理解成 是一个服务的目录)

    webservice客户端的调用:

    1.获取服务调用地址
    2.查看服务的WSDL
    3.调用服务时根据WSDL生成客户端调用代码
    wsimport -d . -s . -p 包名 wsdl
    -d:生成.class文件(默认)
    . :生成在当前目录
    -s:生成 .class文件源代码
    .: 生成在当前目录
    -p:指定 .class源代码存放包 后面紧跟包名
    wsdl:服务wsdl使用说明书地址

    使用CXF框架发布webservice(SOAP):

    1.引入jar包(cxf和spring)
    cxf-rt-frontend-jaxws
    cxf-rt-transports-http
    cxf-core
    2.编写webservice接口类,加入@WebService注解
    3.编写webservice服务实现类,加入@WebService注解
    4.发布服务 通过配置spring.xml发布webservice服务
    spring-cxf.xml
    在这里插入图片描述
    web.xml
    在这里插入图片描述
    5.客户端调用

    在这里插入图片描述

    使用CXF框架发布webservice(rest):

    重点是理解restful风格
    1.引入cxf核心jar包
    jax-ws
    jax-rs
    2.编写webservice接口类,加入@WebService注解
    3.编写webservice服务实现类,加入@WebService注解
    @GET //用在方法上表示只能以get方式访问
    @Path("/querywether/{aa}")
    4.配置spring.xml
    5.配置web.xml

    展开全文
  • WebService是什么

    万次阅读 多人点赞 2018-03-26 11:16:44
    WebService是什么鬼?全华班 2018-03-23 14:56:35喜欢就点击上面蓝色字,更多精彩!导读 | 精选一、什么是Web Service1. 什么是Web Service呢?从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够...

    WebService是什么鬼?

    全华班 2018-03-23 14:56:35

    喜欢就点击上面蓝色字,更多精彩!

    导读 | 精选

    WebService是什么鬼?

    一、什么是Web Service

    1. 什么是Web Service呢?从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。

    2.Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。WebService平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用你喜欢的任何语言,在你喜欢的任何平台上写Web Service。

    3.WebService 为Internet 上的组件服务•通过网络提供,以URL 定位方法调用•以Internet技术为基础•未來的分散式应用程序

    二、Web Service的标准

    1. SOAP(Simple Object Access Protocol)

    2. UDDI(UnviversalDescription ,Discovery,andIntegration) 统一描述发现和集成协议–公开的,或是企业自己的注册与查询

    3. WSDL(Web Service Description Language)–WebService 描述语言

    三、Web Service的标准

    1. XMLWeb Service 通过标准的Web 协议向Web 用户提供有用的功能。多数情况下使用SOAP 协议。

    2. XMLWeb Service 可以非常详细地说明其接口,这使用户能够创建客户端应用程序与它们进行通信。这种说明通常包含在称为Web 服务说明语言(WSDL)文档的XML 文档中。

    3. XMLWeb Service 已经过注册,以便潜在用户能够轻易地找到这些服务,这是通过通用发现、说明和集成(UDDI)来完成的。

    4.XMLWeb Service 体系结构的主要优点之一是:允许在不同平台上、以不同语言编写的各种程序以基于标准的方式相互通信。

    5.我们将XMLWeb Service 定义为:通过SOAP 在Web 上提供的软件服务,使用WSDL 文件进行说明,并通过UDDI 进行注册。

    四、SOAP

    •Soap 是XML Web Service 的通信协议。

    •SOAP 是一种规范,用来定义消息的XML 格式 。包含在一对SOAP 元素中的、结构正确的XML 段就是SOAP 消息。

    •SOAP 规范的其他部分介绍如何将程序数据表示为XML,以及如何使用 SOAP 进行远程过程调用 (RPC)。这些可选的规范部分用于实现 RPC 形式的应用程序,其中客户端将发出一条 SOAP 消息(包含可调用函数,以及要传送到该函数的参数),然后服务器将返回包含函数执行结果的消息。目前,多数 SOAP 实现方案都支持 RPC 应用程序。SOAP 还支持文档形式的应用程序,在这类应用程序中,SOAP 消息只是 XML 文档的一个包装。文档形式的 SOAP 应用程序非常灵活,许多新的 XML Web Service 都利用这一特点来构建使用 RPC 难以实现的服务

    WebService是什么鬼?

    五、SOAP

    •SOAP 规范的最后一个可选部分定义了包含SOAP 消息 的 HTTP 消息的样式。此 HTTP 绑定非常重要,因为几乎所有当前的OS(以及许多以前的 OS)都支持HTTP. HTTP 绑定虽然是可选的,但几乎所有 SOAP 实现方案都支持HTTP 绑定,因为它是SOAP 的唯一标准协议。由于这一原因,人们通常误认为 SOAP 必须使用 HTTP。其实,有些实现方案也支持 MSMQ、MQ 系列、SMTP 或 TCP/IP 传输,但由于 HTTP 非常普遍,几乎所有当前的XML Web Service 都使用它。由于 HTTP 是 Web的核心协议,因此大多数组织的网络基础结构都支持HTTP。

    • 到目前为止,SOAP 最引人注目的特征是它可以在许多不同的软件和硬

    件平台上实现。这意味着SOAP 可用于链接企业内部和外部的不同系统。

    • HTTP 的普及和SOAP 的简单性使您几乎可以从任何环境调用它们,

    因此成为XMLWeb Service 的理想基础。 SOAP 的用户并不直接编写SOAP 消息,而是使用SOAP 工具包来创建和分析SOAP 消息。这些工具包通常将函数调用从某种语言转换为SOAP 消息。

    五、UDDI

    •UDDI 目录条目是介绍所提供的业务和服务的XML 文件。UDDI 目录条目包括三个部分。

    “白页”介绍提供服务的公司:名称、地址、联系方式等等;

    “黄页”包括基于标准分类法的行业类别;

    “绿页”详细介绍了访问服务的接口,以便用户能够编写应用程序以使用 Web 服务。

    服务的定义是通过一个称为类型模型(或 tModel)的 UDDI文档来完成的。多数情况下,tModel包含一个WSDL 文件,用于说明访问 XMLWeb Service 的SOAP 接口,但是tModel非常灵活,可以说明几乎所有类型的服务。

    •UDDI 目录还包含若干种方法,可用于搜索构建您的应用程序所需的服务。例如,您可以搜索特定地理位置的服务提供商或者搜索特定的业务类型。之后,UDDI目录将提供信息、联系方式、链接和技术数据,以便您确定能满足需要的服务。

    •UDDI 允许您查找提供所需的Web 服务的公司。如果您已经知道要与谁进行业务合作,但尚不了解它还能提供哪些服务,这时该如何处理呢?WS-Inspection规范(英文)允许您浏览特定服务器上提供的XML Web Service 的集合,从中查找所需的服务。

    WebService是什么鬼?

    五、wsdl

    •Web Service Description Language (WSDL):用来定义WebService交换的文件格式以及提供服务方式的说明文件

    •WSDL 表示 Web服务说明语言,是一个 XML文档,用于说明一组 SOAP 消息以及如何交换这些消息。WSDL对于 SOAP 的作用就象TLD 对于Tiglib的作用。由于WSDL 是 XML 文档,因此很容易进行阅读和编辑;但大多数情况下,它由软件生成和使用。

    •要查看 WSDL 的值,可以假设您要调用由您的一位业务伙伴提供的SOAP 方法。您可以要求对方提供一些 SOAP消息示例,然后编写您的应用程序以生成并使用与示例类似的消息。WSDL 通过明确的表示法指定请求消息必须包含的内容以及响应消息的样式。

    •WSDL 文件用于说明消息格式的表示法以XML 架构标准为基础,这意味着它与编程语言无关,而且以标准为基础,因此适用于说明可从不同平台、以不同编程语言访问的XML Web Service 接口。除说明消息内容外,WSDL 还定义了服务的位置,以及使用什么通信协议与服务进行通信。WSDL 文件定义了编写使用 XML Web Service 的程序所需的全部内容。

    •当前,许多 SOAP工具包都包括从现有程序接口生成 WSDL 文件的工具,但却几乎没有直接用于编写WSDL 的工具,而且 WSDL的工具支持也很不完整。但不久就会出现编写 WSDL 文件的工具,接着还会有生成代理和存根的工具(与 COMIDL 工具很相似),这些工具将成为多数SOAP 实现方案的一部分。到那时,WSDL将成为创建 XML Web Service 的 SOAP接口的首选方法。 •由W3C制定的标准

    声明:文章属于个人原创,转载请注明文章出处


    文章出处:http://url.cn/5fJ0dYh

    展开全文
  • WebService实战讲解课程

    2019-02-27 11:56:30
    Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都...
  • webService详细

    千次阅读 多人点赞 2019-10-10 19:55:59
    webServiceWebService概述 1.1 WebService是什么 WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的...
  • WebService

    千次阅读 2018-11-12 17:16:42
    WebService 0. WebService简介 0.1 问题引入 问题一: Ø 它们公司服务器的数据库中都保存了天气预报数据吗? Ø 如果没有, 那数据都存在哪了呢? Ø 这些网站是如何得到这些数据的呢? 问题二: Ø 各个门户网站...
  • 我的第一次WebService接口开发

    万次阅读 多人点赞 2020-05-27 21:58:31
    最近项目上需要对接WebService接口,之前从来没有用过,这次都遇见了。记录下基础的使用和我遇见的问题。 正文 概述 WebService接口百度一搜,各个介绍的都非常详细,由于刚开始没接触,看的也不是很懂。首先记住一...
  • 实现webservice的几种方式

    万次阅读 2018-11-16 09:13:44
    1, WebService是两个系统的远程调用,使两个系统进行数据交互,如应用:天气预报服务、银行ATM取款、使用邮箱账号登录各网站等。 2, WebService之间的调用是跨语言的调用。Java、.Net、php,发送Http请求,使用的...
  • Webservice工作原理及实例

    万次阅读 多人点赞 2017-06-08 22:32:14
    Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI...
  • 5天学会jaxws-webservice编程第一天

    万次阅读 多人点赞 2012-11-27 12:36:59
    前言:随着近几年来,SOA,EAI等架构体系的日渐成熟,Webservice越来越炽手可热,尤其是在企业做异质平台整合时成为了首选的技术。Java的Webservice技术更是层出不穷,比较流行的有:Axis2,Spring WS以及Jaxws。...
  • WebService 的创建,部署和使用

    万次阅读 多人点赞 2013-06-05 15:44:09
    WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成.  第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口...
  • SpringBoot整合WebService服务

    万次阅读 多人点赞 2018-11-10 13:19:46
     其实WebService并不是什么神秘的东西,它就是一个可以远程调用的类,或者说是组件,把你本地的功能开放出去共别人调用。 为什么使用WebService? 简单解释一下WebService,比如你的项目需要查询...
  • 前言:WebService的学习并不是项目中使用到的,只不过是今天一个朋友咨询我关于WebService的一些知识,虽然之前对WebService有一些了解,但当时看了不少文章都无法理解,毕竟没有实质性的事,只是单独学习的话,效率...
  • java调用WebService服务的几种方法

    万次阅读 2018-03-13 08:38:43
    我这儿是以C语言生成的WebService为例。因为通常来说,两个java端之间的互相通讯没必要写成WebService的方式,太麻烦。除非有一方已经固定了是webService的方式(常见于牛逼的甲方)。而且就算写成了WebService方式...
  • Java WebService接口生成和调用 图文详解

    万次阅读 多人点赞 2017-09-16 15:29:05
    webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或...
  • eclipse+webservice开发实例

    万次阅读 多人点赞 2011-12-13 13:47:49
    1.利用Java编写简单的WebService实例 http://nopainnogain.iteye.com/blog/791525 2.Axis2与Eclipse整合开发Web Service http://tech.ddvip.com/2009-05/1242968642120461.html 3....
  • 一、创建webService服务。采用appache提供的cxf开发webService服务,需要引入如下几个包1、创建工程test创建实体类package hu.liu;import lombok.Getter;import lombok.Setter;/** * @author 作者:David * @...
  • WebService】自定义WebService服务及其调用

    万次阅读 多人点赞 2018-08-21 16:54:04
    其实在实际中,我们自定义ws的可能性比较小,一般都是去调用已有的ws较多,除非项目需要发布一个ws。但是为了更好的理解ws,这一篇... 使用jdk自定义一个ws只需要做两件事:一是使用注解@WebService,二是调用Endpoint
1 2 3 4 5 ... 20
收藏数 137,701
精华内容 55,080
关键字:

webservice