国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

WebService服務(wù)調(diào)用方法介紹

2019-11-14 15:02:58
字體:
供稿:網(wǎng)友

1 背景概述

由于在項目中需要多次調(diào)用webservice服務(wù),本文主要總結(jié)了一下java調(diào)用WebService常見的6種方式,即:四種框架的五種調(diào)用方法以及使用AEAI ESB進(jìn)行調(diào)用的方法。

2 預(yù)期讀者

  1. 數(shù)通暢聯(lián)內(nèi)部員工

  2. 廣大計算機(jī)愛好者

3 名詞解釋

Web Service也叫xml Web Service: WebService是一種可以接收從Internet或者Intranet上的其它系統(tǒng)中傳遞過來的請求,輕量級的獨(dú)立的通訊技術(shù)。是通過SOAP在Web上提供的軟件服務(wù),使用WSDL文件進(jìn)行說明,并通過UDDI進(jìn)行注冊。
XML:(Extensible Markup Language)擴(kuò)展型可標(biāo)記語言。面向短期的臨時數(shù)據(jù)處理、面向萬維網(wǎng)絡(luò),是Soap的基礎(chǔ)。
Soap:(Simple Object access PRotocol)簡單對象存取協(xié)議。是XML Web Service 的通信協(xié)議。當(dāng)用戶通過UDDI找到你的WSDL描述文檔后,他通過可以SOAP調(diào)用你建立的Web服務(wù)中的一個或多個操作。SOAP是XML文檔形式的調(diào)用方法的規(guī)范,它可以支持不同的底層接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用于說明一組 SOAP 消息以及如何交換這些消息。大多數(shù)情況下由軟件自動生成和使用。
UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務(wù)供應(yīng)商和使用者的新項目。在用戶能夠調(diào)用Web服務(wù)之前,必須確定這個服務(wù)內(nèi)包含哪些商務(wù)方法,找到被調(diào)用的接口定義,還要在服務(wù)端來編制軟件,UDDI是一種根據(jù)描述文檔來引導(dǎo)系統(tǒng)查找相應(yīng)服務(wù)的機(jī)制。UDDI利用SOAP消息機(jī)制(標(biāo)準(zhǔn)的XML/HTTP)來發(fā)布,編輯,瀏覽以及查找注冊信息。它采用XML格式來封裝各種不同類型的數(shù)據(jù),并且發(fā)送到注冊中心或者由注冊中心來返回需要的數(shù)據(jù)。

4 實(shí)現(xiàn)思路

通過soapUI工具使用四種WebService框架來生成客戶端代碼進(jìn)行調(diào)用,或者使用Xfire的jar包中的的Client類進(jìn)行調(diào)用,無需生成客戶端代碼,還可以使用AEAI ESB工具中的soup調(diào)用組件進(jìn)行調(diào)用。

5 實(shí)現(xiàn)步驟

5.1 工具材料

  • soapUI-3.6.1:

soapUI是一個開源測試工具,通過soap/http來檢查、調(diào)用、實(shí)現(xiàn)Web Service的功能/負(fù)載/符合性測試。該工具既可作為一個單獨(dú)的測試軟件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。

  • Axis:

axis全稱Apache EXtensible Interaction System 即阿帕奇可擴(kuò)展交互系統(tǒng)。Axis本質(zhì)上就是一個SOAP引擎,提供創(chuàng)建服務(wù)器端、客戶端和網(wǎng)關(guān)SOAP操作的基本框架。

  • Axis2:

Axis2是下一代 Apache Axis。Axis2 雖然由 Axis 1.x 處理程序模型提供支持,但它具有更強(qiáng)的靈活性并可擴(kuò)展到新的體系結(jié)構(gòu)。

  • Cxf:

Apache CXF = Celtix + XFire,開始叫 Apache CeltiXfire,后來更名為 Apache CXF 了,以下簡稱為 CXF。CXF 繼承了 Celtix 和 XFire 兩大開源項目的精華,提供了對 JAX-WS 全面的支持,并且提供了多種 Binding 、DataBinding、Transport 以及各種 Format 的支持,并且可以根據(jù)實(shí)際項目的需要,采用代碼優(yōu)先(Code First)或者 WSDL 優(yōu)先(WSDL First)來輕松地實(shí)現(xiàn) Web Services 的發(fā)布和使用。

  • Xfire:

XFire是新一代的Java Web服務(wù)引擎,XFire使得在JavaEE應(yīng)用中發(fā)布Web服務(wù)變得輕而易舉。

  • AEAI ESB

企業(yè)服務(wù)總線(Enterprise Service BUS,ESB)主要作為企業(yè)信息系統(tǒng)的“龍骨”來集成各業(yè)務(wù)系統(tǒng),實(shí)現(xiàn)異構(gòu)系統(tǒng)的互聯(lián)互通。沈陽數(shù)通暢聯(lián)軟件技術(shù)有限公司推出的ESB產(chǎn)品命名為AEAI ESB。
AEAI ESB主要包含三個模塊:服務(wù)器ESBServer、設(shè)計器ESBDesigner、管理控制中心。ESBServer是AEAI ESB的運(yùn)行環(huán)境,基于定制的Tomcat 擴(kuò)展開發(fā),管理控制中心則是部署在ESBServer的Java Web應(yīng)用,基于開發(fā)平臺構(gòu)建的。ESBDesigner是基于Eclipse Plugin開發(fā)的圖形化、拖拽式的設(shè)計Web服務(wù)、消息流程的構(gòu)建工具。

5.2 前置條件

  • 創(chuàng)建web服務(wù)

使用AEAI ESB創(chuàng)建一個簡單的接口(具體方法參見AEAI ESB集成平臺技術(shù)手冊5.2.7):樣例中的web服務(wù)入?yún)槿齻€數(shù)字,出參為三個數(shù)字相加得到的和。

wKiom1ZNMWfgOEWEAABo1qKNSvs304.png

  • soapUI工具配置

在soapUI中進(jìn)行相關(guān)配置,如圖:

wKioL1ZNMdOhEDVfAAHjAv4LDVY877.png

 

wKiom1ZNMYCgi50qAAHqbkf6AWI323.png


在附件中有Apache文件夾,將文件夾放到指定路徑下,在如下圖進(jìn)行配置

wKiom1ZNMabjmEoVAAIx1OxhinY118.png


將四種框架的地址填寫進(jìn)對應(yīng)的位置,還有jdk的位置,注意Xfire需要ANT的支持。

5.3 方法步驟

5.3.1 Axis框架

在soapUI的菜單欄中選擇Tools中的Axis 1.x選項

wKiom1ZNMcHDt9geAAHwKnxSyXw646.png


在(1)處填寫需要調(diào)用的web服務(wù)的URL
在(2)處填寫生成的客戶端代碼的位置
點(diǎn)擊(3)處按鈕生成客戶端代碼

wKioL1ZNMjXQQULdAAEbMIGsY4U358.png


在對應(yīng)的路徑下找到代碼文件

wKiom1ZNMfeAxiUGAAIOSkolvfo825.png


將代碼拷貝到自己新建的 工程目錄下

wKioL1ZNMpKQi6PQAADaJo5Mdlg284.png


注意:出現(xiàn)缺包的錯誤時,將Apache中對應(yīng)框架的文件家中的lib包導(dǎo)入即可,新建一個Test類,其中對應(yīng)的測試調(diào)用代碼如下:

public class Test {
 
    public static void main(String[] args)throws Exception {
        AddAllNum_ServiceLocator locator = new AddAllNum_ServiceLocator();
        AddAllNumSoapBindingStub stub = (AddAllNumSoapBindingStub)locator.getAddAllNumPort();
        System.out.println(stub.addNum("1", "2", "3"));
    }
 

運(yùn)行結(jié)果:

wKiom1ZNMmDjL6lxAAIAkTM-oK4538.png

5.3.2 Axis2框架

在soapUI的菜單欄中選擇Tools中的Axis 2選項,如圖:

wKioL1ZNMsvzLIPsAAIHjS4YH6M700.png


在(1)處填寫調(diào)用的接口的URL
在(2)處填寫生成代碼的位置
在(3)處填寫包名
在(4)處注意通過adb模式進(jìn)行生成
點(diǎn)擊(5)處的按鈕生成客戶端代碼

wKiom1ZNMpHRVHL7AAEHCEnEiWQ421.png


生成出來的代碼以及文件都添加到新建的調(diào)用服務(wù)的工程中

wKioL1ZNMwDhXkLmAAGiruwIPZo598.png


將生成的客戶端代碼放入到新建的工程中,導(dǎo)入對應(yīng)框架的包

wKiom1ZNMsaB3Yl1AADqev6kSfw873.png


新建Test類,對應(yīng)的調(diào)用代碼如下:

public class Test {
    public static void main(String[] args) throws Exception{
        AddAllNumStub stub = null;
        stub = new AddAllNumStub();
        AddAllNumStub.AddNum addNum = new AddAllNumStub.AddNum();
        addNum.setNum1("1");
        addNum.setNum2("2");
        addNum.setNum3("3");
        System.out.println(stub.addNum(addNum).getResult());
    }

運(yùn)行結(jié)果:

wKioL1ZNMzuB4eM6AAITZAMEyAc077.png

5.3.3 Cxf框架

在soapUI的菜單欄中選擇Tools中的CXF選項,如圖:

wKioL1ZNM1bg4GcHAAH-8POuP6s509.png


在(1)處填寫需要調(diào)用的URL
在(2)處填寫生成的代碼文件的位置
在(3)處填寫代碼的包名
點(diǎn)擊(4)處的按鈕生成客戶端代碼

wKiom1ZNMxuyJgNtAAExa4G8nrY098.png


將生成的代碼放到新建的工程中,導(dǎo)入CXF的包后在AddAllNum_Service.java中出現(xiàn)錯誤,將出錯的地方注釋,如圖

wKioL1ZNM4ShZjGkAAMwGRjw_rA898.png

創(chuàng)建Test類,測試調(diào)用接口

wKioL1ZNM6Oym9CxAAKTucouVvU869.png


對應(yīng)的測試調(diào)用代碼如下:

public class Test {
    public static void main(String[] args) throws Exception {
        URL wsdlLocation = new URL("http://localhost:9090/TestWebServices/services/AddAllNum?wsdl");
        AddAllNum_Service addAllNum_Service = new AddAllNum_Service(wsdlLocation);
        AddAllNum addAllNum = addAllNum_Service.getAddAllNumPort();
        String result = addAllNum.addNum("2","3","4");
        System.out.println(result);
    }
}

運(yùn)行結(jié)果:

wKiom1ZNM27zKRQcAAMmiCMMN-0411.png 

5.3.4 Xfire框架

  • 第一種調(diào)用方式:生成客戶端代碼進(jìn)行調(diào)用

在soapUI的菜單欄中選擇Tools中的XFire1.x選項,如圖:

wKioL1ZNM9nx3pB6AAIJa_OeUIc594.png


在(1)處填入需要調(diào)用的web服務(wù)的URL
在(2)處填入生成客戶端代碼的位置
在(3)處填入生成的客戶端代碼的包名
在(4)處注意需要使用jaxb模式生成
點(diǎn)擊(5)處的按鈕生成客戶端代碼

wKiom1ZNM56QmyX8AAEOvl6AaQo610.png


將生成的代碼放到到新建工程下,導(dǎo)入Apache文件夾下的xfire-lib目錄下的包

wKioL1ZNNAvSC1mcAADDcHdtcT4935.png


創(chuàng)建Test類,對應(yīng)的調(diào)用方法:

    public static void main(String[] args) {
        AddAllNumClient addAllNumClient = new AddAllNumClient();
        String result = addAllNumClient.getAddAllNumPort().addNum("1", "2","2");
        System.out.println(result);
    }

運(yùn)行結(jié)果:

wKioL1ZNNG_QWnB6AAHgIKZpmwY547.png

 

  • 第二種調(diào)用方式:通過WSDl創(chuàng)建一個動態(tài)的客戶端

新建工程,引入XFire對應(yīng)的jar包(Apache目錄下的xfire-lib目錄中的包),注意此時需要在接口服務(wù)端的AddNum文件中添加一段代碼

@SOAPBinding(style=Style.RPC)

重新部署工程,如下:

wKioL1ZNNR_hknpaAAGWTPXc4j0013.png


在新建的工程中的Test類中的調(diào)用,如下圖:

wKiom1ZNNN6gpPuRAADMTiNbFLM848.png


對應(yīng)的調(diào)用代碼,如下:

public class Test {
    public static void main(String[] args) throws MalformedURLException, Exception {
        String url = "http://localhost:9090/TestWebServices/services/AddAllNum?wsdl";
        Client client = new Client(new URL(url));
        String num1 = "2";
        String num2 = "3";
        String num3 = "4";
        Object[] result = client.invoke("addNum",new Object[]{num1,num2,num3});
        System.out.println(result[0]);
    }
}

運(yùn)行結(jié)果:

wKioL1ZNNUmAKjYOAAH6QBGoJ0c343.png

5.3.5 Aeai Esb調(diào)用

首先在接口工程上右鍵,設(shè)置ESB應(yīng)用

wKiom1ZNNQzz3i1vAACpK1gP3Do075.png


選擇WS引用,將WSDL的地址添加進(jìn)去,解析名稱、生成代理

wKiom1ZNNRzDh4MSAACxgyCeu4M970.png


在MF服務(wù)目錄下創(chuàng)建http消息流程TestSoupWeb

wKiom1ZNNTHSi2B-AACRVTJKvik134.png


選擇數(shù)據(jù)適配器

wKioL1ZNNZmyPgQrAAGQUv21Eeo959.png


在JavaInvoker1組件中選擇擴(kuò)展代碼,如圖:

public void invoke() throws AdapteException{
        AddNum addNum = (AddNum) this.xgetVariable("addNum").getValue();
        addNum.setNum1("1");
        addNum.setNum2("2");
        addNum.setNum3("3");
    } 

SoapInvoker1組件選擇如圖:

wKioL1ZNNbqh6VBYAAC8hvOppQA079.png


然后HttpResponse節(jié)點(diǎn)選擇響應(yīng)內(nèi)容如圖:

wKiom1ZNNXexFy4gAACuhmVbuZg255.png


在瀏覽器調(diào)用HttpRequest節(jié)點(diǎn)中的URL

wKiom1ZNNYmgFqg8AAHyVPATmpw532.png


運(yùn)行結(jié)果:

wKiom1ZNNZvQ0yj7AADE6CVij7c050.png

6 附件及說明

Apache目錄:四種Web服務(wù)框架以及Ant工具
WebService目錄:Web服務(wù)接口
Test目錄:文檔中涉及的四種框架五種調(diào)用的樣例客戶端工程
Sqls目錄:AEAI ESB需要使用的數(shù)據(jù)庫文件
Jdk目錄:存放了soapUI配置時需要用到的JDK

WebService服務(wù)調(diào)用方法介紹文檔及相關(guān)介質(zhì)                下載


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蒙山县| 东宁县| 古浪县| 湘阴县| 惠州市| 金门县| 兴安盟| 沙田区| 额济纳旗| 连江县| 祁东县| 丹寨县| 子洲县| 五家渠市| 靖江市| 铜梁县| 图木舒克市| 和田市| 益阳市| 华安县| 宜昌市| 绥阳县| 丹寨县| 灌云县| 旌德县| 东莞市| 莱芜市| 新乡市| 郁南县| 岳西县| 天峻县| 巩留县| 尖扎县| 南部县| 鹤壁市| 绵阳市| 玛曲县| 潞城市| 广昌县| 石屏县| 宣汉县|