版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄總綱3Web Service 概述3Web Service接口定義41int upLoadRawData42int upLoadMediaFile63int delPTable64int insertPTable75int ChkPTable76RetString GetNextVVehID77RetCollection getInputorUser88RetCollection getAction89RetCollection getSpot910RetCollection getSource1011RetCollection getDist1012RetCollection getHp
2、zl1013RetCollection getConMode1114RetCollection getCodePlace1115RetCollection getDiverDir1216RetCollection getCameraDir1217RetCollection getCamera1318RetCollection getLane13客戶端調(diào)用Web Service示例14接口調(diào)用流程191、準(zhǔn)備工作192、違法上傳過程203、數(shù)據(jù)重復(fù)性檢查21附錄221、BASESPOTDB設(shè)備組表222、系統(tǒng)提供的WebService列表223、違法代碼234、車道類型列表265、返回值類型定義
3、26Web Service 接口說(shuō)明總綱本文描述如何調(diào)用項(xiàng)目Web Service:1、 Web Service 概述 2、 Web Service接口定義3、 客戶端調(diào)用 Web ServiceWeb Service 概述Web Service是為實(shí)現(xiàn)“基于web無(wú)縫集成”的目標(biāo)而提出的全新概念,希望通過Web Service能夠?qū)崿F(xiàn)不同的系統(tǒng)之間能夠用“軟件-軟件對(duì)話”的方式相互調(diào)用,打破軟件應(yīng)用、網(wǎng)站和各種設(shè)備之間格格不入的狀態(tài)。Web Service是一個(gè)應(yīng)用程序,它向外界暴露一個(gè)能夠通過Web進(jìn)行調(diào)用的API,這就是說(shuō),能夠用編程的方法通過web調(diào)用來(lái)實(shí)現(xiàn)某個(gè)功能的應(yīng)用程序。Web
4、Service是一種新的Web應(yīng)用程序分支,它們是自包含、自描述,模塊化的應(yīng)用,可以在網(wǎng)絡(luò)中被描述、發(fā)布、查找以及通過Web調(diào)用。Web Service平臺(tái)需要一套協(xié)議來(lái)實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。任何平臺(tái)都有它的數(shù)據(jù)表示方法和類型系統(tǒng)。要實(shí)現(xiàn)互操作性,Web Service平臺(tái)必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同的平臺(tái)、編程語(yǔ)言和組建模型中的不同類型系統(tǒng)。1. XML和XSD可擴(kuò)展性標(biāo)記語(yǔ)言XML是Web Service平臺(tái)中表示數(shù)據(jù)的基本格式。除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它基于平臺(tái)無(wú)關(guān),由于廠商無(wú)關(guān)。XML是由萬(wàn)維網(wǎng)協(xié)會(huì)(W3C)創(chuàng)建,W3C制定的XML SchemaX
5、SD定義了一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,并給出了一種語(yǔ)言來(lái)拓展這套數(shù)據(jù)類型。Web Service平臺(tái)是用XSD來(lái)作為數(shù)據(jù)類型系統(tǒng)的。當(dāng)用某種語(yǔ)言如VB.NET 或C#來(lái)構(gòu)造一個(gè)Web Service是,為了符合Web Service標(biāo)準(zhǔn),所有使用的數(shù)據(jù)類型都必須被轉(zhuǎn)換為XSD類型。如想讓他使用在不同的平臺(tái)和不同的軟件的不同組織間傳遞,還需要用某種東西將它包裝起來(lái)。這種東西就是一種協(xié)議,如SOAP。2. SOAPSOAP即簡(jiǎn)單對(duì)象訪問協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級(jí)協(xié)議。SOAP可以運(yùn)行在任何其他傳輸協(xié)議上。例如,可以使用SMTP,即
6、因特網(wǎng)電子郵件協(xié)議來(lái)傳遞SOAP消息。SOAP包含3個(gè)主要方面的內(nèi)容:XML-envelope為描述信息內(nèi)容和如何處理內(nèi)容定義了框架。將程序?qū)ο缶幋a為XML對(duì)象的規(guī)則。執(zhí)行遠(yuǎn)程過程調(diào)用(RPC)的約定。3. WSDLWeb Service描述語(yǔ)言(WSDL)是用計(jì)算機(jī)能閱讀的方式提供的一個(gè)正式描述文檔而基于XML的語(yǔ)言,用于描述Web Service及其函數(shù)、參數(shù)和返回值。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的。4. UDDIUDDI即統(tǒng)一描述、發(fā)現(xiàn)和集成(Universal Description , Discovery , and Integration),其目的
7、是為電子商務(wù)建立標(biāo)準(zhǔn),UDDI是一套基于Web的、分布式、為Web Service提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組是企業(yè)能將自身提供的Web Service注冊(cè),可以使別的奇特能夠發(fā)現(xiàn)訪問間協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)。5. 遠(yuǎn)程過程調(diào)用RPC與消息傳遞Web Service本身其實(shí)是在實(shí)現(xiàn)應(yīng)用程序的通信?,F(xiàn)在有兩種應(yīng)用程序通信的方法:RPC遠(yuǎn)程過程調(diào)用和信息傳遞。使用RPC的時(shí)候,客戶端的概念是調(diào)用服務(wù)器上的遠(yuǎn)程過程,通常的方式為實(shí)例化一個(gè)遠(yuǎn)程對(duì)象并調(diào)用其方法和屬性。RPC系統(tǒng)試圖達(dá)到一種位置上的透明性:服務(wù)器暴露出遠(yuǎn)程對(duì)象的端口,而客戶端就好像在本地使用這些對(duì)象的接口一樣,這樣就隱藏的
8、底層的信息,客戶端也就根本不需要知道對(duì)象是在哪臺(tái)機(jī)器上。調(diào)用 Web Service 是指客戶端應(yīng)用程序所執(zhí)行的用于使用 Web Service 的操作。調(diào)用 Web Service 的客戶端應(yīng)用程序可使用任何技術(shù)(如 Java、Microsoft .NET 等)進(jìn)行編寫。 注意:在此上下文中,客戶端應(yīng)用程序可以是兩種類型的客戶端:一個(gè)是獨(dú)立客戶端,它使用客戶端類調(diào)用在 Web Server應(yīng)用服務(wù)器上承載的 Web Service。在本文檔中,獨(dú)立客戶端是指其運(yùn)行時(shí)環(huán)境獨(dú)立于具體服務(wù)器的客戶端。調(diào)用Web Service 的另一種類型的客戶端應(yīng)用程序在部署到 Web Server 的 J2E
9、E 組件(例如 EJB 或其他 Web Service)內(nèi)運(yùn)行。本項(xiàng)目中,可以通過homepage /fxczfWebService.ws查看wsdl描述。Web Service接口定義接口所在地址(WebService調(diào)用地址):homepage /接口描述文件(WSDL地址):homepage /fxczfWebService.ws接口函數(shù)定義1 int upLoadRawDataint upLoadRawData(sn, dir, time, locationSn, roadsegItem ,placeMemo, Source, districtSn, type, redLast, ta
10、keTime, laneType, maxSpeed, speed, carNumber, carType, owner, ownerAddress , ownerZip , phone, SpotSn , loadQuality , maxLoadQuality , carQuality username ,password)函數(shù)說(shuō)明:用于上傳自動(dòng)收集違法數(shù)據(jù)信息參數(shù)說(shuō)明:參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明備注SnString違法數(shù)據(jù)編號(hào)自定義序列號(hào)。此編號(hào)和upLoadMediaFil中的參數(shù)violationSn對(duì)應(yīng),表示一條原始違法數(shù)據(jù)和他所對(duì)應(yīng)的媒體文件dirString違法車輛行駛方向0:代
11、表東口;1:代表南口;2:代表西口;3:代表北口;可通過getDiverDir();得到參數(shù)列表timeDate違法時(shí)間格式為:yyyy-mm-dd hh24:mi:sslocationSnString違法地點(diǎn)編號(hào)可通過getCodePlace(String username);得到參數(shù)列表,其中包含了杭州市所有地點(diǎn)。roadsegItemString違法路段編號(hào)通過getRoadSegItems(String userName,String password)得到參數(shù)列表,其中包含了所有路段。placeMemoString違法地點(diǎn)備注SourcesnString違法數(shù)據(jù)來(lái)源D:數(shù)碼照相;E:
12、移動(dòng)測(cè)速;F:固定卡口;H:闖紅燈監(jiān)控;I:指揮室監(jiān)控抓拍;Z:其他;可通過getSource();得到參數(shù)列表DistrictSnString違法地區(qū)編號(hào)330100:杭州可通過getDist();得到參數(shù)列表typeString違法代碼可通過getAction();得到參數(shù)列表。詳見【附3】違法代碼列表redLastString紅燈持續(xù)時(shí)間單位為:秒takeTimeString取證時(shí)間(相對(duì)于紅燈開始時(shí)間)單位為:秒laneTypeString違法車道類型可通過getLane();得到參數(shù)列表。詳見【附4】車道類型列表maxSpeedString違法地點(diǎn)限速單位為:KM/HspeedStr
13、ing違法車輛速度單位為:KM/HcarNumberString號(hào)牌號(hào)碼carTypeString號(hào)牌種類ownerString車主名ownerAddressString車主地址ownerZipString郵編phoneString電話號(hào)碼SpotSnString上傳設(shè)備組編號(hào)可通過getSpot(String DistCode);得到參數(shù)列表,包含了杭州地區(qū)的所有路口設(shè)備組。loadQualityString“0”maxLoadQualityString“0”carQualityString“0”usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密
14、碼安全驗(yàn)證考慮返回值說(shuō)明返回值返回值類型說(shuō)明備注錯(cuò)誤類型。Int詳見【附5】返回值類型定義2 int upLoadMediaFileint upLoadMediaFile(violationSn, fileType, fileName,file, username, password);函數(shù)說(shuō)明:用于上傳自動(dòng)收集違法媒體信息參數(shù)說(shuō)明:參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明備注ViolationSnString違法數(shù)據(jù)編號(hào)自定義序列號(hào)。此編號(hào)和upLoadRawData中的參數(shù)sn對(duì)應(yīng),表示一條原始違法數(shù)據(jù)和他所對(duì)應(yīng)的媒體文件fileTypeString違法媒體文件類型0:表示圖片;1:表示視頻fileNam
15、eString 違法媒體文件文件名包含后綴名filebyte 違法媒體文件usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明返回值返回值類型說(shuō)明備注錯(cuò)誤類型。Int詳見【附5】返回值類型定義3 int delPTableint delPTable (SpotId, Date, username, password);函數(shù)說(shuō)明:用于刪除服務(wù)器上的收集記錄以便重新收集參數(shù)說(shuō)明:參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明備注SpotIdString設(shè)備組編號(hào)DateDate收集日期usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwor
16、dString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明返回值返回值類型說(shuō)明備注錯(cuò)誤類型。Int詳見【附5】返回值類型定義4 int insertPTableint insertPTable (SpotId, Date, username, password);函數(shù)說(shuō)明:用于往服務(wù)器寫入新的收集記錄參數(shù)說(shuō)明:參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明備注SpotIdString設(shè)備組編號(hào)DateDate收集日期usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明返回值返回值類型說(shuō)明備注錯(cuò)誤類型。Int詳見【附5】返回值類型定義5 int ChkPT
17、ableint ChkPTable (SpotId, Date, username, password);函數(shù)說(shuō)明:用于從服務(wù)器檢查是否已收集,防止重復(fù)收集參數(shù)說(shuō)明:參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明備注SpotIdString設(shè)備組編號(hào)DateDate收集日期usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明返回值返回值類型說(shuō)明備注錯(cuò)誤類型。Int詳見【附5】返回值類型定義6 RetString GetNextVVehIDRetString GetNextVVehID (DistSn, time, username, passwor
18、d);函數(shù)說(shuō)明:用于從服務(wù)器獲取下一個(gè)違法編號(hào)參數(shù)說(shuō)明:參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明備注DistSnString地區(qū)編號(hào)timeDate違法日期usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明返回值返回值類型說(shuō)明備注結(jié)構(gòu)RetString int retCode;String content; RetString RetCode:見【附5】返回值類型定義content:返回的下一個(gè)違法編號(hào)7 RetCollection getInputorUserRetCollection getInputorUser (username,
19、password);函數(shù)說(shuō)明:用于獲取一個(gè)用戶的注冊(cè)信息參數(shù)說(shuō)明:參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明備注usernameString系統(tǒng)用戶名passwordString 系統(tǒng)用戶密碼返回值說(shuō)明返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollection RetCode:見【附5】返回值類型定義Content:類型UserInputor的集合。UserInputor 的結(jié)構(gòu)username:系統(tǒng)用戶名password:系統(tǒng)用戶密碼powerinput:是否有錄入權(quán)限powerinputsetup:備用userid:用戶
20、編號(hào)dptid:用戶部門編號(hào)isFormalUser:錄入數(shù)據(jù)是否需要審核8 RetCollection getActionRetCollection getAction (username, password)函數(shù)說(shuō)明:獲取違法行為代碼列表參數(shù)說(shuō)明:參數(shù)參數(shù)類型參數(shù)說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:
21、集合的類型BaseActionBaseaction結(jié)構(gòu)ActionCode:違法編號(hào)ActionName:違法名稱9 RetCollection getSpotRetCollection getSpot (String distSn, username, password);函數(shù)說(shuō)明:獲取路口列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注distSnString地區(qū)代碼usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection conten
22、t;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型BaseSpotBaseSpot結(jié)構(gòu)SPOT_ID:路口編號(hào)CROSSING_NAMECON_MODE:連接模式DIST_CODE:地區(qū)代碼IP_ADDRESS:ip地址PHONE:電話號(hào)碼DIAL_USER:連接的用戶DIAL_PASSWORD:連接的密碼Mode_NameSPOT_TYPE:路口的類型FTP_PATH:ftp路徑ROAD_CODE:TABLE_HEAD;DRIVE_WAY:方向10 RetCollection getSourceRetCollection getSource (u
23、sername, password);函數(shù)說(shuō)明:獲取數(shù)據(jù)來(lái)源列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型BaseSourceBaseSource結(jié)構(gòu)Code:數(shù)據(jù)來(lái)源代碼Value:數(shù)據(jù)來(lái)源名11 RetCollection getDistRetCollection get
24、Dist (username, password);函數(shù)說(shuō)明:獲取地區(qū)列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型BaseDistBaseDist結(jié)構(gòu)Code:地區(qū)代碼Value:地區(qū)名12 RetCollection getHpzl RetCollection getHp
25、zl (username, password);函數(shù)說(shuō)明:獲取號(hào)牌種類列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型BaseHpzlBaseHpzl結(jié)構(gòu)HPZL:號(hào)牌種類HPMC:號(hào)牌名稱13 RetCollection getConMode RetCollection ge
26、tConMode (username, password);函數(shù)說(shuō)明:獲取連接模式參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型ConModeConMode結(jié)構(gòu)MODE:模式代碼NAME:模式名14 RetCollection getCodePlaceRetCollection
27、getCodePlace (userid, username, password);函數(shù)說(shuō)明:獲取用戶管理地點(diǎn)代碼列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注useridString獲取用戶可用地點(diǎn)usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型CodePlaceCodePlace結(jié)構(gòu)code:代碼名place:地點(diǎn)15
28、 RetCollection getDiverDir RetCollection getDiverDir (username, password);函數(shù)說(shuō)明:獲取行駛方向代碼列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型DriverDirDriverDir結(jié)構(gòu)Dir:行駛方向
29、代碼DirName:行駛方向名16 RetCollection getCameraDir RetCollection getCameraDir (username, password);函數(shù)說(shuō)明:獲取相機(jī)方位代碼列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型CameraDir
30、CameraDir結(jié)構(gòu)CameraDir:相機(jī)方位代碼CameraDirName:相機(jī)方位名17 RetCollection getCamera RetCollection getCamera (username, password);函數(shù)說(shuō)明:獲取相機(jī)列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCode;Collection content;RetCollectionRetCode:見【附5】返回值類型定義C
31、ontent:集合的類型BaseCameraBaseCamera結(jié)構(gòu)SPOT_ID:路口的idCAMERA_DIR:相機(jī)方位代碼DRIVE_DIR:行駛方向V_PLACE_CODE;LANE_TYPE;18 RetCollection getLane RetCollection getLane (username, password);函數(shù)說(shuō)明:獲取車道類型代碼列表參數(shù)說(shuō)明:參數(shù)名參數(shù)類型說(shuō)明備注usernameString接口調(diào)用用戶名安全驗(yàn)證考慮passwordString接口調(diào)用用戶密碼安全驗(yàn)證考慮返回值說(shuō)明:返回值返回值類型說(shuō)明備注結(jié)構(gòu) RetCollection int retCod
32、e;Collection content;RetCollectionRetCode:見【附5】返回值類型定義Content:集合的類型LaneLane結(jié)構(gòu)LaneCode:車道類型代碼LaneType:車道類型客戶端調(diào)用Web Service示例Web Service的調(diào)用是可以跨平臺(tái)跨程序語(yǔ)言的。本項(xiàng)目中我們采用的是java語(yǔ)言編寫的Web Service服務(wù)端,生成規(guī)范的wsdl。無(wú)論是客戶端是由delphi、C+、C#或者java等任何語(yǔ)言編寫,均可以調(diào)用我們的Web Service服務(wù)。下面是以java為例描述客戶端的實(shí)現(xiàn)過程,其他語(yǔ)言編寫需要開發(fā)人員查詢相關(guān)資料,不一一列舉。Java
33、 Web Service的客戶端實(shí)現(xiàn)有三種:1. 生成的stub其中生成stub是最常用的。stub是用JAX-RPC編譯器根據(jù)WSDL文檔生成的,其主要功能是將對(duì)endpoint接口的方法調(diào)用轉(zhuǎn)化為SOAP 消息,并且負(fù)責(zé)將返回的SOAP響應(yīng)轉(zhuǎn)換為方法的返回值,把SOAP fault轉(zhuǎn)化為方法的異常。JAX-RPC編譯器產(chǎn)生的stub除了要實(shí)現(xiàn)endpoint接口外,還需要實(shí)現(xiàn)或繼承 javax.xml.rpc.Stub接口或其實(shí)現(xiàn)的子類(Axis中是org.apache.axis.client.Stub)。 javax.xml.rpc.Stub接口主要定義了和網(wǎng)絡(luò)通訊和認(rèn)證相關(guān)的屬性的設(shè)置
34、和獲取的機(jī)制。其代碼如下:package javax.xml.rpc;import java.util.Iterator;public interface Stub / Standard property: The Web services Internet address. public static String ENDPOINT_ADDRESS_PROPERTY;/ Standard property: Password for authentication. public static String PASSWORD_PROPERTY; / Standard property: Use
35、r name for authentication. public static String USERNAME_PROPERTY; / Standard property: Boolean flag for maintaining an HTTP session. public static String SESSION_MAINTAIN_PROPERTY;/ Given a property name, get its value. public Object _getProperty(java.lang.String name); / Get the names of all the p
36、roperties the stub supports. public Iterator _getPropertyNames(); / Configure a property on the stub. public void _setProperty(java.lang.String name, java.lang.Object value);JAX-RPC編譯器產(chǎn)生還可以產(chǎn)生一個(gè)和WSDL中service元素對(duì)應(yīng)的Service接口,該接口組合了多個(gè)port,也就是多個(gè)Stub。該接口繼承了javax.xml.rpc.Service。在J2EE環(huán)境中Service接口通常通過JNDI lo
37、okup得到。在J2EE中使用生成的stub的典型用例如下:package com.jwsbook.jaxrpc;import javax.servlet.http.*;import javax.servlet.*;import javax.naming.InitialContext;public class BookQuoteServlet_1 extends javax.servlet.http.HttpServlet protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletE
38、xception,java.io.IOException try String isbn = req.getParameter(isbn); InitialContext jndiContext = new InitialContext(); BookQuoteService service = (BookQuoteService) jndiContext.lookup(java:comp/env/service/BookQuoteService); BookQuote bookQuote = service.getBookQuotePort(); float price = bookQuot
39、e.getBookPrice( isbn ); java.io.Writer outStream = resp.getWriter(); outStream.write(The wholesale price for ISBN:+isbn+ = +price+); catch(javax.naming.NamingException ne) throw new ServletException(ne); catch(javax.xml.rpc.ServiceException se) throw new ServletException(se); 部署說(shuō)明文件: service/BookQuo
40、teService com.jwsbook.jaxrpc.BookQuoteService BookQuote.wsdl mh:BookQuoteService一般都是通過JNDI查詢到相應(yīng)的Service接口,然后從Service接口中得到stub,最后調(diào)用web service的方法。部署文件中申明了名為 service/BookQuoteService 的Service接口,在代碼里獲取該接口的代碼是 jndiContext.lookup(java:comp/env/service/BookQuoteService),前綴java: comp/env/是所有J2EE資源在JNDI樹種的p
41、arent Context。在非J2EE環(huán)境中實(shí)現(xiàn)web service客戶端在非J2EE環(huán)境中也可以實(shí)現(xiàn)web service客戶端,這時(shí)需要用到j(luò)avax.xml.rpc.ServiceFactory(或其子類,在axis中是 org.apache.axis.client.ServiceFactory)的靜態(tài)方法loadService得到service接口。接下來(lái)的調(diào)用代碼和J2EE中的類似。2. 動(dòng)態(tài)代理調(diào)用動(dòng)態(tài)代理調(diào)用是Java web service的另一種方式。對(duì)于使用該方式的客戶端代碼,和生成stub的方式相比較,其變化不是很大。它和生成stub的方式主要區(qū)別在于前者在編譯時(shí)刻產(chǎn)
42、生service接口和stub,后者則將這部分工作延遲到運(yùn)行時(shí)刻。動(dòng)態(tài)代理調(diào)用的典型代碼和部署說(shuō)明文件:package com.jwsbook.jaxrpc;import javax.naming.InitialContext;public class JaxRpcExample_2 public static void main(String args) throws Exception String isbn = args0; InitialContext jndiContext = new InitialContext(); javax.xml.rpc.Service service =
43、 (javax.xml.rpc.Service) jndiContext.lookup(java:comp/env/service/Service); BookQuote BookQuote_proxy = (BookQuote) service.getPort(BookQuote.class); float price = BookQuote_proxy.getBookPrice( isbn ); System.out.println(The price is = +price); 部署說(shuō)明文件: service/Service javax.xml.rpc.Service BookQuote
44、.wsdl mh:BookQuoteService由于不需要在編譯時(shí)刻產(chǎn)生service接口和stub,用JNDI lookup和部署說(shuō)明時(shí)只使用了javax.xml.rpc.Service。得到service接口后通過getPort方法可以取得動(dòng)態(tài)代理的 stub。getPort有兩種版本,getPort(java.lang.Class endpointInterface)和getPort(space.QName portName,java.lang.Class endpointInterface),通常當(dāng)WSDL中一個(gè)PortType有一種以上的綁定時(shí),如果需要
45、得到某個(gè)綁定的port接口就使用后者,否者使用前者。QName是該綁定的完全限定名稱,有命名空間加上局部名構(gòu)成。對(duì)應(yīng)的QName對(duì)象的構(gòu)造方法有構(gòu)造函數(shù)法和靜態(tài)valueOf法,實(shí)例如下:/ Use constructor methodQName portName = new QName(http:/www.Monson-Haefel/jwsbook/BookQuote, BookQuoteLiteralPort); / Use static valueOf() methodString s = http:/www.Monson-Haefel/jwsbook/BookQuoteBookQuot
46、eLiteralPort;QName qname2 = QName.valueOf(s);valueOf方法接受的String參數(shù)以namespacelocalName的模式構(gòu)成。PortType有一種以上的綁定時(shí)還需要在JAX-RPC Mapping 文件中說(shuō)明不指定QName版本的getPort方法對(duì)應(yīng)的port綁定。示例:java-wsdl-mapping xmlns= xmlns:mh=http:/www.Monson-H . com.jwsbook.jaxrpc.BookQuote mh:BookQuote mh:BookQuote_LiteralBinding . 使用QName的
47、動(dòng)態(tài)代理調(diào)用實(shí)例:package com.jwsbook.jaxrpc;import javax.naming.InitialContext;import space.QName;public class JaxRpcExample_3 public static void main(String args) throws Exception String isbn = args0; InitialContext jndiContext = new InitialContext(); javax.xml.rpc.Service service = (javax.xm
48、l.rpc.Service) jndiContext.lookup(java:comp/env/service/Service); QName portName = new QName(http:/www.Monson-Haefel/jwsbook/BookQuote, BookQuoteLiteralPort); BookQuote BookQuote_proxy = (BookQuote) service.getPort(portName, BookQuote.class); float price = BookQuote_proxy.getBookPrice( isbn ); Syste
49、m.out.println(The price is = +price); 動(dòng)態(tài)代理的底層實(shí)現(xiàn)是用java的反射機(jī)制和java.lang.reflect.Proxy完成的。3. 動(dòng)態(tài)調(diào)用接口(DII)動(dòng)態(tài)調(diào)用接口的通常使用順序:1. 獲得一個(gè)通用的service接口,比如通過JNDI lookup2. 構(gòu)造代表WSDL中port和operation的QName對(duì)象,作為service接口的createCall方法的參數(shù),得到Call對(duì)象。3. 準(zhǔn)備operation所需的參數(shù),如果是原子類型則需要將其包裝成相應(yīng)的對(duì)象類型。視operation是否有返回值調(diào)用invoke或invokeOneWa
50、y方法。4. 如果operation定義了INOUT,OUT參數(shù),則在invoke后調(diào)用getOutputValues,比如:java.util.List outputParams = call.getOutputValues();完整的代碼示例:package com.jwsbook.jaxrpc;import javax.naming.InitialContext;import javax.xml.rpc.Service;import javax.xml.rpc.Call;import space.QName;public class JaxRpcExample_4 public s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度藥品推廣與醫(yī)藥行業(yè)協(xié)會(huì)合作推廣協(xié)議
- 二零二五年度智能制造產(chǎn)業(yè)股權(quán)轉(zhuǎn)移合同終止書
- 2025年度工業(yè)機(jī)器人維護(hù)保養(yǎng)與故障排除維修合同
- 二零二五年度房地產(chǎn)項(xiàng)目終止及賠償協(xié)議書
- 2025年度股權(quán)分配協(xié)議書范本:XX創(chuàng)業(yè)團(tuán)隊(duì)股權(quán)分配及退出補(bǔ)償實(shí)施協(xié)議
- 二零二五年度文化產(chǎn)業(yè)創(chuàng)新融資項(xiàng)目顧問協(xié)議
- 2025年度遺產(chǎn)繼承財(cái)產(chǎn)分配與遺產(chǎn)稅務(wù)籌劃協(xié)議
- 施工單位關(guān)于施工質(zhì)量的聯(lián)絡(luò)函
- 小學(xué)數(shù)學(xué)教學(xué)與科技素養(yǎng)的提升
- 《掌聲》第2課時(shí)教學(xué)設(shè)計(jì)
- 2024年廣東省事業(yè)單位考試真題及答案5
- 禪密功筑基功法
- SHT+3413-2019+石油化工石油氣管道阻火器選用檢驗(yàn)及驗(yàn)收標(biāo)準(zhǔn)
- 2024年云南省中考數(shù)學(xué)真題試卷及答案解析
- 新疆烏魯木齊市2024年中考英語(yǔ)模擬試題(含答案)
- (正式版)JBT 14932-2024 機(jī)械式停車設(shè)備 停放客車通-用技術(shù)規(guī)范
- 2024年度-脛腓骨骨折
- 應(yīng)用密碼學(xué)課件
- 礦井通風(fēng)安全培訓(xùn)課件
- 2024年中國(guó)國(guó)際投資促進(jìn)中心限責(zé)任公司招聘高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 苯胺合成靛紅工藝
評(píng)論
0/150
提交評(píng)論