




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Restful Webservice 構建1) 簡述主要使用restlet框架來實現(xiàn)rest風格的web服務構建。為什么選用restlet呢?主要從以 下角度考慮:1. 完全的rest實現(xiàn),完全拋棄 Servlet API2. 輕量級框架,可作為j2se程序獨立運行,又可運行在現(xiàn)有的web容器中雖然struts2.0 spring3.0 jrs很多都可以實現(xiàn) restful的應用,但是restlet可完美集成 在spring等框架中3. 服務端/客戶端 支持*其他特性請參照restlet的官網(wǎng)翻譯片段2) 具體實現(xiàn)1. 采用restlet框架來支持rest,封裝dbcp數(shù)據(jù)庫連接池來提供數(shù)據(jù)庫
2、訪問。2. 對某一類性的資源采用同一application來管理,此類型的資源可能有若干個資源類來支持。下面以Rss新聞的服務來詳細介紹下相關的實現(xiàn)以及配置1. 首先建立的一個 web工程,這里采用了Tomcat服務器作為單機調試用t y UniteRe5ttuServioe3 JAX-WS Web Services立 Deployment Descriptor: UniteRetfulService# :R&as src出 firitStepsServletJ 田 unrteJ 汨 cEent曲 client丄| ClientTest.java> 廂 service.rssNe
3、wsJ CO mmon:> ,£ DbcpBean jdva建 da+g base.pcrpertiesi> Libraries球 JavaScript(i3 build扌占 W&bCrtnl二 & META-INF鼻 WEB-INF卜 & libre st let xml土 web .xmlWeb-inf/web.xml 來注冊 restlet 的監(jiān)聽<!adapter->oervlet>-<s*rirlet-nair.e>Re3tletServleu</servlet-nan.e> s&rirl
4、er-clasa-arfj. ceatlst ext - rvlet - Server Servlet</3ervleD-cla33></srvlL><!- Catch all reques七日一-> <servLet'irftppinqf><B&rirleE-nair.&>Rest;let;Servle匸<,皀己工叮1己匸一nmrr.E <url-pattern>/口ul-pa匸匸urnA<3ervlet-mapping>2. Web-inf/restlet.xml 來定義 ap
5、plication 級別的 restful url 映射¥工l=*x。叫cMl£wg = UTF-f"?>耳匚平二乜時匸舁毛?i FD if tz S? t rW41 «S/Ccinpcfi C *xirLr.3 :i3L*h±tpr/r釘才-m爭-口rj/2DC 1/XML-Scn-=LM-ins±ac:Er-xj l: act era Lica _ le ft- *?itTpr/FV3r,± ff / S rA cm X: /£ . CJ/COrqn-Mar: t "*><defai
6、cdcHc?3i:>s,p tgr'i:r;la* *rissrvJ白書.FfrsPStflpspp i«CicnH,/ ><atzicii百二丄F逗耳勺工匚=/5915加存 g pe匸品g口旳呂s迄d專匚i 1n /><=L1 - iCL 匚二丄Ed C C: ZJL- /RssJFSk i Pla C±£ t已二匚=G匚丄4 日二円二丄亡壬.二1-££;:.弓丄:£,蘭££匸?百弓丘弓卑號匕丿耳二匸二丄匚匸i I:-Dd燈 > </ de f-a.LL2.tH5
7、01></ccanpcnm&l以圖中所示工程為例,當請求http:/主機ip/UniteRestfulService/RssNewsPlaces的時候 ,restlet 將會自 動將此請求交 由 unite.client.service.rssNews.RssNewsApplicatio n類來進行處理3. 在application這一級別的類中(比如RssNewsApplication)類,可以對資源進行進一步的映射配置publi a class RsaNewsApplication extends Application puijli synchronieed Resc
8、lec crealLelnbaLindRoot (R&later romter = new Router (gee匚entmx匸( roster. actach (MTrf RasMewsPlacesResoLiree . class): roucer attach (M/place>Tr, RssNewsResource classy ;rattarn router;|)通過如上進一步的配置,http:/主機ip/UniteRestfulService/RssNewsPlaces這個請求將會 映射到 RssNewsPlacesResource 類; 而 http:/ 主機 ip
9、/UniteRestfulService/RssNewsPlaces/place這個請求將會映射到RssNewsResource類。(上面的這一步驟體現(xiàn)了restlet對url-資源這一 rest概念的基本闡釋)4. mon.DbcpBean類利用dbcp對數(shù)據(jù)庫訪問進行了單例模式圭寸裝。能夠保證一定的數(shù)據(jù)庫操作性能。perties利用資源文件對數(shù)據(jù)庫以及連接池做參數(shù)配置。dbUrl-jdtoc1:/locfilose : 1433; DalaB-a3cNair.e D3User us*rNajr*=JNE JpassHQrd=JNFJL23£driverCl
10、asscom.microsoTt sqlserver.j dbc SQLServerDriver initalSize»5rraxAccivelOOrLaxIzll&=30n-.axWait=2 0C3|定義數(shù)據(jù)庫地址,用戶名密碼,jdbc驅動類型,數(shù)據(jù)庫連接池初始鏈接數(shù),最大連數(shù),最大閑置連接數(shù),最大等待響應時間毫秒數(shù)等。RssNevrsPlaces rssNewaPlces = new RasNewsPLaces );Dt:cp3ean dbcpBean = DtcpBean .i ;Connect ion conn = dbcpBean getCcnnec t;ionf
11、;ErspirtdStat&ir.trLt preriieSaterLt = null;Res口_七5己工 resulrSe匸=null;RssNewsPlace newsFlace - null;try prepares匸目匸亡mun匸 = conn preparesta七亡皿皀nt t "導亡丄皀u匕 aheng, uxl from RsstJr 1F); resulnSai = prepar eSEarercent _ eitecu 匸良 Qn 色工 V(): while (r&sultSetn亡兀匸()newsplace h巳則;String place =
12、result Sex. getS tring (" sheng17);St*j_rig url = reultSe- .getStirLa(rrtirln);newsPlace setFlce(place>newsPlace .3巴tdrJ. (url);rsstJswsPlaces getNevsPlaces ( add (newFlace; catch (5QLEK.cept ion. & I)finally try Ii f (pxepareStatement != rroll prepareStatemenE »close();if (resultS&
13、#174;t 匸 null resultSe亡-close(/)1f (conn ! null) corm. close (; 口2七匚11est) 上面是一段使用 DbcpBean 的程序,檢索了 RssUrl 表,將表中存在的地區(qū)名,以 及該地區(qū)所對應的新聞鏈接地址讀取出來。5. 回到 RssNewsPlacesResource/RssNewsResource資源類在*Resource資源類中,提供對資源的GET/PUT/POST/DELET操作。Restlet提供多種方式的實現(xiàn)方式。比如注解方式,或者重寫父類方法的方式等。注解方式中,采用舸憂【吒鼻中public String test(
14、) DtcpBean dbcp弓已旦n = Dbp弓已良n.cew工nMtmuum( i : Connection conn = dbcpBen» getConnec匸ion“7 rettirn "hello, wqjId.*1;J類似 這樣的注解,來聲明某個方法的屬性等。而重寫父類方法方式也可以更加靈活。protected Repr皀s皀Titacian gee(Variant variant) throws ResourceException Representac丄an resul-r = null;部分省略if- APPLICATION XML-iiCfin.Fat
15、Lble (var丄呂ct.口亡上社亡垃口e ) ) lesiilt = new XstrearrRsp resent at ioTKRssNewsPla 匚匚 (rsN 亡 wnF 丄己 ues); else if (MediaType.getMediaType(»result = nev JacksorReFresentation<R33NevsP13ces>(rssNewsPlaee3):ire turn result;通過 XstreamReprese ntati on 或者 Jacks on Represe ntati on 等 restlet 功能拓展類, 將
16、某實體類的實例轉化為符合XML/JSON請求的數(shù)據(jù)類型的數(shù)據(jù)。6. 實際運行結果URL:http:/localhost:8080/UniteRestfulService/RssNewsPlaces對應的返回結果 xml 形式呈現(xiàn)(截圖為部分數(shù)據(jù))6咁I臚 &nc0rtin9iUTF S- ?>-ctmito .cif ntsafvi .rssNfews bsan rfe'sNiawsP<aces>-cneiw5f>iacs>亠 nlTe.cbanitservice.rssbRrts.bean.Rs5Neff8PlaM>匚*二吃京才p3匸護衛(wèi)f
17、Iifl'-httpt/news.bAMu.ciim/n?cmd = 7Alo<-13Aname= blR 1WPI嶺IBE"l|.tn =imi</umts.cliQnLsiar,brHZGi-.rE£lhjQWE-bi=:an .RseN«vu-=PIj£ >-ojnite .ch0ftt.SEwus .rssNews .bMn,fc.sNew5Plac ?a 上劈 c/place>:uri: Mtp:/news, boMuxorvi / n?cmd 蕓 Fix - aaMorrie'cvwcF'DJf
18、liAJfttn-rss 打 uEx</umtexlient. serw ice. rssNews.bean .RssNeMj-sPlac: e >-<umlte .cbertL.serM'ice . rssNevi s .bean. RsNe aFiace >電訓呂U電A去宰彳甬亡9 ?<i id l http e/firw s hnidii.enm / nTrmri = 7Altb< I ?Sfhnnm 嶺匸霊卄丘暫 UMfe r 7Atn r耳峙 irl > ppriiQe工li昕t.rssews.陽勺me叩護law b >-<
19、;mnite.cbertt .service. rssHe別!s .bean_R£&N&rt sPlace,<pld 匚巴 i±UL plljces岐1賈打皿1戸/粧口、上曲曲仏“也|/市九件血 /iMckc撞“卸w06%ligRrtiC l: Cftln rs-Vup! j-&FuntelcliflnFriry'rRir55NH'flL5tbean1Nawitf,lia£_ r一 <unite.cl 右nt .service, rssblewf .bean. RssNeiflrsPlace aupl =iu
20、171; _=rflkd芒urlh>lIp訂/«mwb .bdldiuL«n ( n?nniEl 7Morl S4S&jidrnt> 毗。越3嘶In f </uM >c/ur>t0i clisnt Erwcs1 hgeNqwe. bean .Rsshow-dlj-c a ><unita .ckiRnt .se rvice rpshtPws ,baan Re 弓Ne nrsfiace ?<p4ace >3?北 </pllace>-:ijri:hrtp;/niewss buldiu.Ccni / nfcm
21、d-/aloe-22>DlhJiame = BAD _>% liBlAtn =rss< url s </ufttjXlienti.Mritf»& rss*Jaws.bea*i 用吃刊a >URL:http:/localhost:8080/UniteRestfulService/RssNewsPlaces/ 北京對應的返回結果xml形式呈現(xiàn)(截圖為部分數(shù)據(jù))血rslirsdwVTF-IP-<uni&r d»?nt Mnrace.rsaNCTra bean 4riM-NEH-ix'reHiaNc irgT * 桶囂的i
22、KWftrnftil'lr幣古卻壽優(yōu)繭市一踴產(chǎn)生申勢吟啣對常耳立擊書門口盍鼻*:事無-口無童豪ifilflit云對主1111方欣為9 特立EErkMJt贈»宣誥人=£J|聞囉軾丄“血存泊mw 7D1 |-Ot - 3H 0(HllJ-00>«-7r-*昭>k iiEEp. /測.£n>/rOflhi#mi/ J411/Q k/JF I Jl>0Qih4ml -/OS mLh 出”'unrie.diBnL5Qrwiipg:.r33l4ew3eani.R5sN?w?- 4jnte d匕snne日ms科ms twahe*gm 縊英34 昭<ntftsT ita; Itfil書衛(wèi)主HiKKiftk手卓空>離-堺邑忌二 5燈巾2rla-,ip 審爭皐,刊口“ 里市±r|iSM>'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡登高施工方案
- 佛山2025年廣東佛山市禪城區(qū)兜底安置類公益性崗位招聘60人筆試歷年參考題庫附帶答案詳解
- 《第三單元 我是電腦小畫家 9 玩轉線條》教學設計-2023-2024學年南方版(湖南)(2019)信息技術五年級上冊
- 云南2025年云南瀘西縣急需緊缺人才招聘筆試歷年參考題庫附帶答案詳解
- 樂山四川樂山峨眉山市中醫(yī)醫(yī)院招聘編外專業(yè)技術人員15人筆試歷年參考題庫附帶答案詳解
- ups電池施工方案
- 人教版初中化學九年級下冊 第八單元課題3 金屬資源的利用和保護(第2課時) 教學設計
- 魚塘租賃合同范文
- 二零二五版土地轉讓書合同范例
- 礦山轉讓合同新二零二五年
- 四川宜賓環(huán)球集團有限公司招聘筆試真題2024
- 自動駕駛開發(fā)到落地流程
- 收貨員的崗位試題及答案
- 國際工程招標招投標實務操作講義
- 數(shù)據(jù)治理管理制度
- 矩陣運算的新視角
- 【吉利汽車控股集團成本控制問題及對策11000字(論文)】
- 服裝工藝(各工序)單價表
- 水電站防地震災害應急預案范本
- 佛山市禪城區(qū)機動車維修項目工時費收費標準
- 八卦象數(shù)療法配方大全
評論
0/150
提交評論