版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Restful Webservice 构建1) 简述主要使用restlet框架来实现rest风格的web服务构建。为什么选用restlet呢?主要从以 下角度考虑:1. 完全的rest实现,完全抛弃 Servlet API2. 轻量级框架,可作为j2se程序独立运行,又可运行在现有的web容器中虽然struts2.0 spring3.0 jrs很多都可以实现 restful的应用,但是restlet可完美集成 在spring等框架中3. 服务端/客户端 支持*其他特性请参照restlet的官网翻译片段2) 具体实现1. 采用restlet框架来支持rest,封装dbcp数据库连接池来提供数据库
2、访问。2. 对某一类性的资源采用同一application来管理,此类型的资源可能有若干个资源类来支持。下面以Rss新闻的服务来详细介绍下相关的实现以及配置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 的监听<!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类。(上面的这一步骤体现了restlet对url-资源这一 rest概念的基本阐释)4. mon.DbcpBean类利用dbcp对数据库访问进行了单例模式圭寸装。能够保证一定的数据库操作性能。perties利用资源文件对数据库以及连接池做参数配置。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|定义数据库地址,用户名密码,jdbc驱动类型,数据库连接池初始链接数,最大连数,最大闲置连接数,最大等待响应时间毫秒数等。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 表,将表中存在的地区名,以 及该地区所对应的新闻链接地址读取出来。5. 回到 RssNewsPlacesResource/RssNewsResource资源类在*Resource资源类中,提供对资源的GET/PUT/POST/DELET操作。Restlet提供多种方式的实现方式。比如注解方式,或者重写父类方法的方式等。注解方式中,采用舸忧【吒鼻中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请求的数据类型的数据。6. 实际运行结果URL:http:/localhost:8080/UniteRestfulService/RssNewsPlaces对应的返回结果 xml 形式呈现(截图为部分数据)6咁I胪 &nc0rtin9iUTF S- ?>-ctmito .cif ntsafvi .rssNfews bsan rfe'sNiawsP<aces>-cneiw5f>iacs>亠 nlTe.cbanitservice.rssbRrts.bean.Rs5Neff8PlaM>匚*二吃京才p3匸护卫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形式呈现(截图为部分数据)血rslirsdwVTF-IP-<uni&r d»?nt Mnrace.rsaNCTra bean 4riM-NEH-ix'reHiaNc irgT * 桶囂的i
22、KWftrnftil'lr币古却壽优茧市一踊产生申势吟啣对常耳立击書门口盍鼻*:事无-口无童豪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書卫主HiKKiftk手卓空>离-堺邑忌二 5灯巾2rla-,ip 审爭皐,刊口“ 里市±r|iSM>'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北恩施学院《cinema4d》2022-2023学年第一学期期末试卷
- 湖北第二师范学院《物理课程与教学论》2023-2024学年第一学期期末试卷
- 湖北第二师范学院《电子商务安全》2023-2024学年第一学期期末试卷
- 湖北恩施学院《大学体育2》2021-2022学年第一学期期末试卷
- 湖北大学知行学院《信息经济学》2021-2022学年第一学期期末试卷
- 2024柜台加工合同(合同版本)
- 湖北大学知行学院《会计信息系统》2022-2023学年第一学期期末试卷
- 湖北大学知行学院《工程经济学》2022-2023学年第一学期期末试卷
- 2024机器设备维护保养合同书
- 2024如何确定合同成立的时间买卖合同纠纷的管辖
- 《软件培训讲义》课件
- 14《答谢中书书》对比阅读-2024-2025中考语文文言文阅读专项训练(含答案)
- 2024年郑州文化旅游和体育集团招聘笔试冲刺题(带答案解析)
- 物业管理未来发展规划方案
- 滑膜炎的微环境调控
- GB/T 16659-2024煤中汞的测定方法
- 代持股份免责协议书
- 救援无人机应用
- (正式版)HGT 4148-2024 工业用三正丙胺
- 2024年中化集团中国对外经济贸易信托有限公司招聘笔试参考题库含答案解析
- 2024-2030年中国腐乳行业市场全景评估及发展趋势预测报告
评论
0/150
提交评论