2019-03-13 WebService入门学习

1 什么是WebService

它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。

2 关键技术和规则

在构建和使用Web Service时,主要用到以下几个关键的技术和规则:

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

可扩展的标记语言(XML)是Web service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

2.2 SOAP:表示信息交换的协议.

SOAP是web service的标准通信协议,SOAP为simple object access protocoll的缩写,简单对象访问协议. 它是一种标准化的传输消息的XML消息格式。

2.3 WSDL:Web服务描述语言

WSDL的全称是web service Description Language,是一种基于XML格式的关于web服务的描述语言。其主要目的在于web service的提供者将自己的web服务的所有相关内容,如所提供的服务的传输方式,服务方法接口,接口参数,服务路径等,生成相应的完全文档,发布给使用者。使用者可以通过这个WSDL文档,创建相应的SOAP请求消息,通过HTTP传递给webservice提供者;web服务在完成服务请求后,将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成自己能够理解的内容。

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

将web service进行UDDI注册发布,UDDI是一种创建注册表服务的规范,以便大家将自己的web service进行注册发布供使用者查找.然而当服务提供者想将自己的web service向全世界公布,以便外部找到其服务时,那么服务提供者可以将自己的web service注册到相应的UDDI商用注册网站,目前全球有IBM等4家UDDI商用注册网站。因为WSDL文件中已经给定了web service的地址URI,外部可以直接通过WSDL提供的URI进行相应的web service调用。所以UDDI并不是一个必需的web service组件,服务方完全可以不进行UDDI的注册。

3 常用标签释义

3.1 服务端

3.1.1 发布本服务器内部服务端口

@WebService
public interface InstrumentServiceIntf {
    @WebMethod
    List<InstrumentInfoBean> getEquipmentSearch(Context context,
            final @WebParam(name = "name") String name);
}

实现类

@SuppressWarnings("restriction")
@WebService(name = "instrument", 
serviceName = "InstrumentServiceImpl", 
targtNamespace = "http://com.jiuqi.dna.gams.GXH.DXYQ.webservice.intf/", 
endpointInterface = "com.jiuqi.dna.gams.GXH.DXYQ.webservice.intf.InstrumentServiceIntf")
public class InstrumentServiceImpl extends Service implements InstrumentServiceIntf{}

3.1.2 发布其他服务器内部服务端口

package com.jiuqi.dna.gams.gxh.dxyq.webservice.intf;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;

/**
 * This class was generated by Apache CXF 2.3.3
 * 2019-01-15T15:37:41.874+08:00
 * Generated source version: 2.3.3
 * 
 */
 
@WebService(targetNamespace = "http://intf.webservice.DXYQ.GXH.gams.dna.jiuqi.com/",
name = "InstrumentServiceIntf")
@XmlSeeAlso({ObjectFactory.class})
public interface InstrumentServiceIntf {

 
    @WebMethod
    @RequestWrapper(localName = "updateSelfTestStatus", 
targetNamespace = "http://intf.webservice.DXYQ.GXH.gams.dna.jiuqi.com/", 
className = "com.jiuqi.dna.gams.gxh.dxyq.webservice.intf.UpdateSelfTestStatus")
    @ResponseWrapper(localName = "updateSelfTestStatusResponse", 
targetNamespace = "http://intf.webservice.DXYQ.GXH.gams.dna.jiuqi.com/", 
className = "com.jiuqi.dna.gams.gxh.dxyq.webservice.intf.UpdateSelfTestStatusResponse")
    @WebResult(name = "return", targetNamespace = "")
    public int updateSelfTestStatus(
        @WebParam(name = "credictCardInfo", targetNamespace = "")
        java.lang.String credictCardInfo
    );

3.2 客户端


/*
 * 
 */

package intf.webservice.dxyq.gxh.gams.dna.jiuqi.com;

import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceFeature;
import com.jiuqi.dna.gams.gxh.dxyq.webservice.intf.InstrumentServiceIntf;
import javax.xml.ws.Service;

/**
 * This class was generated by Apache CXF 2.3.3
 * 2019-01-15T15:37:41.942+08:00
 * Generated source version: 2.3.3
 * 
 */


@WebServiceClient(name = "InstrumentServiceImpl", 
//                  wsdlLocation = "http://www.yqsbgl.ynu.edu.cn/dna_ws/instrument?wsdl",
                    wsdlLocation = "http://192.168.128.1:9797/dna_ws/instrument?wsdl",
                  targetNamespace = "http://com.jiuqi.dna.gams.GXH.DXYQ.webservice.intf/") 
public class InstrumentServiceImpl extends Service {

    public final static URL WSDL_LOCATION;

    public final static QName SERVICE = new QName("http://com.jiuqi.dna.gams.GXH.DXYQ.webservice.intf/", "InstrumentServiceImpl");
    public final static QName InstrumentPort = new QName("http://com.jiuqi.dna.gams.GXH.DXYQ.webservice.intf/", "instrumentPort");
    static {
        URL url = null;
        try {
//          url = new URL("http://www.yqsbgl.ynu.edu.cn/dna_ws/instrument?wsdl");
            url = new URL("http://192.168.128.1:9797/dna_ws/instrument?wsdl");
            
        } catch (MalformedURLException e) {
            System.err.println("Can not initialize the default wsdl from http://www.yqsbgl.ynu.edu.cn/dna_ws/instrument?wsdl");
            // e.printStackTrace();
        }
        WSDL_LOCATION = url;
    }

    public InstrumentServiceImpl(URL wsdlLocation) {
        super(wsdlLocation, SERVICE);
    }

    public InstrumentServiceImpl(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);
    }

    public InstrumentServiceImpl() {
        super(WSDL_LOCATION, SERVICE);
    }
    
    //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2
    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1
    //compliant code instead.
    public InstrumentServiceImpl(WebServiceFeature ... features) {
        super(WSDL_LOCATION, SERVICE, features);
    }

    //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2
    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1
    //compliant code instead.
    public InstrumentServiceImpl(URL wsdlLocation, WebServiceFeature ... features) {
        super(wsdlLocation, SERVICE, features);
    }

    //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2
    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1
    //compliant code instead.
    public InstrumentServiceImpl(URL wsdlLocation, QName serviceName, WebServiceFeature ... features) {
        super(wsdlLocation, serviceName, features);
    }

    /**
     * 
     * @return
     *     returns InstrumentServiceIntf
     */
    @WebEndpoint(name = "instrumentPort")
    public InstrumentServiceIntf getInstrumentPort() {
        return super.getPort(InstrumentPort, InstrumentServiceIntf.class);
    }

    /**
     * 
     * @param features
     *     A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy.  Supported features not in the <code>features</code> parameter will have their default values.
     * @return
     *     returns InstrumentServiceIntf
     */
    @WebEndpoint(name = "instrumentPort")
    public InstrumentServiceIntf getInstrumentPort(WebServiceFeature... features) {
        return super.getPort(InstrumentPort, InstrumentServiceIntf.class, features);
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352