restfulwebservice構(gòu)建小例子(restlet)_第1頁
restfulwebservice構(gòu)建小例子(restlet)_第2頁
restfulwebservice構(gòu)建小例子(restlet)_第3頁
restfulwebservice構(gòu)建小例子(restlet)_第4頁
restfulwebservice構(gòu)建小例子(restlet)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Restful Webservice 構(gòu)建1) 簡(jiǎn)述主要使用restlet框架來實(shí)現(xiàn)rest風(fēng)格的web服務(wù)構(gòu)建。為什么選用restlet呢?主要從以 下角度考慮:1. 完全的rest實(shí)現(xiàn),完全拋棄 Servlet API2. 輕量級(jí)框架,可作為j2se程序獨(dú)立運(yùn)行,又可運(yùn)行在現(xiàn)有的web容器中雖然struts2.0 spring3.0 jrs很多都可以實(shí)現(xiàn) restful的應(yīng)用,但是restlet可完美集成 在spring等框架中3. 服務(wù)端/客戶端 支持*其他特性請(qǐng)參照restlet的官網(wǎng)翻譯片段2) 具體實(shí)現(xiàn)1. 采用restlet框架來支持rest,封裝dbcp數(shù)據(jù)庫連接池來提供數(shù)據(jù)庫

2、訪問。2. 對(duì)某一類性的資源采用同一application來管理,此類型的資源可能有若干個(gè)資源類來支持。下面以Rss新聞的服務(wù)來詳細(xì)介紹下相關(guān)的實(shí)現(xiàn)以及配置1. 首先建立的一個(gè) web工程,這里采用了Tomcat服務(wù)器作為單機(jī)調(diào)試用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 來注冊(cè) 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 級(jí)別的 restful url 映射¥工l=*x。叫cMl£wg = UTF-f"?>耳匚平二乜時(shí)匸舁毛?i FD if tz S? t rW41 «S/Ccinpcfi C *xirLr.3 :i3L*h±tpr/r釘才-m爭(zhēng)-口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-££;:.弓丄:£,蘭££匸?百弓丘弓卑號(hào)匕丿耳二匸二丄匚匸i I:-Dd燈 > </ de f-a.LL2.tH5

7、01></ccanpcnm&l以圖中所示工程為例,當(dāng)請(qǐng)求http:/主機(jī)ip/UniteRestfulService/RssNewsPlaces的時(shí)候 ,restlet 將會(huì)自 動(dòng)將此請(qǐng)求交 由 unite.client.service.rssNews.RssNewsApplicatio n類來進(jìn)行處理3. 在application這一級(jí)別的類中(比如RssNewsApplication)類,可以對(duì)資源進(jìn)行進(jìn)一步的映射配置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;|)通過如上進(jìn)一步的配置,http:/主機(jī)ip/UniteRestfulService/RssNewsPlaces這個(gè)請(qǐng)求將會(huì) 映射到 RssNewsPlacesResource 類; 而 http:/ 主機(jī) ip

9、/UniteRestfulService/RssNewsPlaces/place這個(gè)請(qǐng)求將會(huì)映射到RssNewsResource類。(上面的這一步驟體現(xiàn)了restlet對(duì)url-資源這一 rest概念的基本闡釋)4. mon.DbcpBean類利用dbcp對(duì)數(shù)據(jù)庫訪問進(jìn)行了單例模式圭寸裝。能夠保證一定的數(shù)據(jù)庫操作性能。perties利用資源文件對(duì)數(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驅(qū)動(dòng)類型,數(shù)據(jù)庫連接池初始鏈接數(shù),最大連數(shù),最大閑置連接數(shù),最大等待響應(yīng)時(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 "導(dǎo)亡丄皀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ū)所對(duì)應(yīng)的新聞鏈接地址讀取出來。5. 回到 RssNewsPlacesResource/RssNewsResource資源類在*Resource資源類中,提供對(duì)資源的GET/PUT/POST/DELET操作。Restlet提供多種方式的實(shí)現(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類似 這樣的注解,來聲明某個(gè)方法的屬性等。而重寫父類方法方式也可以更加靈活。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、某實(shí)體類的實(shí)例轉(zhuǎn)化為符合XML/JSON請(qǐng)求的數(shù)據(jù)類型的數(shù)據(jù)。6. 實(shí)際運(yùn)行結(jié)果URL:http:/localhost:8080/UniteRestfulService/RssNewsPlaces對(duì)應(yīng)的返回結(jié)果 xml 形式呈現(xiàn)(截圖為部分?jǐn)?shù)據(jù))6咁I(lǐng)臚 &nc0rtin9iUTF S- ?>-ctmito .cif ntsafvi .rssNfews bsan rfe'sNiawsP<aces>-cneiw5f>iacs>亠 nlTe.cbanitservice.rssbRrts.bean.Rs5Neff8PlaM>匚*二吃京才p3匸護(hù)衛(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 >電訓(xùn)呂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叩護(hù)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/ 北京對(duì)應(yīng)的返回結(jié)果xml形式呈現(xiàn)(截圖為部分?jǐ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)生申勢(shì)吟啣對(duì)常耳立擊書門口盍鼻*:事無-口無童豪ifilflit云對(duì)主1111方欣為9 特立EErkMJt贈(zèng)»宣誥人=£J|聞囉軾丄“血存泊mw 7D1 |-Ot - 3H 0(HllJ-00>«-7r-*昭>k iiEEp. /測(cè).£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 審爭(zhēng)皐,刊口“ 里市±r|iSM>'

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論