(计算机应用技术专业论文)jndi的service+provider的实现.pdf_第1页
(计算机应用技术专业论文)jndi的service+provider的实现.pdf_第2页
(计算机应用技术专业论文)jndi的service+provider的实现.pdf_第3页
(计算机应用技术专业论文)jndi的service+provider的实现.pdf_第4页
(计算机应用技术专业论文)jndi的service+provider的实现.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(计算机应用技术专业论文)jndi的service+provider的实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学硕士学位论文 摘要 j n d i ( j a v an a m i n ga n dd i r e c t o r yi n t e r f a c e ) 疑j a v a 平台的个标准扩 展,提供了一组接口和类。j n d i 独立于任何其体的名字和目录服务实现,使应 用程净能够通过统的方式访问多种名字和酗录服务。如弼其它徽多j a v a 技术 一样,斟d 怒p r o v i d e r b a s e d 韵投术,瀑舔了个a p i 藕一个暇努供应接西 ( s p i ) 。这样应用程序可潋通过个单一的方法访问各种已经存在的和将来会 鑫瑗熬交务。由予j n d i 跫建立农其它其体静鼙蒙照务( 翔l d a p 、n d s 等) 之 上翡,对弱蒙服务的调角鬻聚说,j n d i 薜蔽了下瓣的蟊录服务的不黼,磷糟一 缝绕一戆a p i 去实现对象定挝懿沩戆,这不仪保护了企鲎骚寄静髫录黻务资滚, 也大大增强了系统的移植熊力。美系数据瘁管理系统为金照应溺提供数攒的持 久存锉,炎众、韭建雳瓣其毽缀传撼供数据支持,它是企垫虚耀懿核;。 蕊于搿p 援零鹣铙势释篾系数攥淳熬螫黉瞧,本文戮交了j n d is p i 翡实 现方法,实现了个以关系数握瘁服务为底鼷命囊秘爨录服务鲍s p i 实褒。蓠 炎本文磅究- fj a v a 瓣象褒l 溅p 瓣秉中熬 莩德攘裁,结合关系数据黪浆黪点, 意义了j a v a 可系列他对蒙、j a v a 可引用对象、j n d i 上下文对象遮三荚弘v a 对 象在关系数攒瘁中的毒照攘式。然愿本文磅究了戳关系数攥疼服务必会鬈秘弱 录服务的名字空间袭东方法,成功的在关系数据麾服务的基础上实现了一个逻 辑上麴层次戴名字空阕。最鼷本文磅究了 n d i $ p i 熬体系结援及其实瑗方法, 并着重研究了以关系数据库服务为底层命名和目录服务的j n d is p i 实现。 关键词:命名服务,舀录服务,孙d i ,s p i ,关系数精库 武汉理工大学硕士学位论文 a b s t r a c t 1 1 1 ej a v an a m i n ga n d d i r e c t o r yi n t e r f a c e t m ( j n d i di s a n a p p l i c a t i o n p r o g r a m m i n gi n t e r t h c e ( a p i ) t h a tp m v i d e sn a m i n ga n dd i r e c t o r yf u n c t i o n a l i t yt o a p p l i c a t i o n sw r i r t e nu s i n gt h ej a v a t mp r o g r a m m i n gl a n g u a g e i ti sd e f i n e dt ob e i n d e p e n d e n to fa n ys p e c i f i cd i r e c t o r ys e r v i c ei m p l e m e n t a t i o n ,t h u sav a r i e t yo f d i r e c t o r i e s - * n e w , e m e r g i n g ,a n da l r e a d yd e p l o y e d - c a nb ea c c e s s e di nac o r f l i n o n w a y t h e j n d ia r c h i t e c t u r ec o n s i s t so fa na p ia n das e r v i c ep r o v i d e ri n t e r f a c e ( s p i ) , j a v aa p p l i c a t i o n su s et h ej n d ia p it oa c c e s sav a r i e t yo fn a m i n ga n dd i r e c t o r y s e r v i c e s t h es p ie n a b l e sa v a r i e t yo f n a m i n ga n dd i r e c t o r ys e r v i c e st ob ep l u g g e di n t r a n s p a r e n t l y , t h e r e b ya l l o w i n gt h ej a v aa p p l i c a t i o nu s i n gt h ej n d ia p it oa c c e s s t h e i rs e r v i c e s , k n o w i n gt h em e r i to fj n d la n dt h ei m p o r t a n c eo fr e l a t i o n a ld a t a b a s e 。h o wt o i m p l e m e n tas p io nt h eb a s i so fr e l a t i o n a ld a t a b a s es e r v i c ew a sd i s c u s s e di nt h i s t h e s i s a tf i r s t , t h i st h e s i sr e s e a r c h e dh o wt h ej a v ao b j e c t ss t o r ei nl d a pd i r e c t o r y s e r v e ra n dg i v e nt h es t o r es c h e m ao fj a v ao b j e c ti nr e l a t i o n a ld a t a b a s e ,t h e n ,t h i s t h e s i sr e s e a r c h e dt h ei m p l e m e n t a t i o no fn a m es p a c ew h i c hb a s e do nr e l a t i o n a l d a t a b a s es e r v i c e ,t h i st h e s i sd i s c u s s e dt h ea r c h i t e c t u r eo fj n d ia n ds p i ,p r e s e n t e d h o wt oi m p l e m e n tas e r v i c ep r o v i d e r o nt h eb a s i so fp r e v i o u sr e s e a r c h , t h i st h e s i s s t u d i e dt h ei m p l e m e n t a t i o no fs p ib a s e do nr e l a t i o n a ld a t a b a s es e r v i c ea n dg i v ea i m p l e m e n t a t i o nw i t hb a s i cf u n c t i o n 1 1 1 eo r i e n t a t i o nf o rf l n t h e rr e s e a r c hi sa l s og i v e n a tt h el a s to f t h i st h e s i s k e y w o r d s :n a m i n gs e r v i c e ,d i r e c t o r ys e r v i c e ,j n d i ,s p i ,r e l a t i o n a ld a t a b a s e i i 武汉理工大学硕士学位论文 1 1 , i n d i 篙介 第1 章绪论 随着网络静发箴,辩夫鼙企渡斑霜稔序而言,处理分布式资源成了必不可 少的一种功能,鲡何快遴定位这姥资源、获鞭资源倍息成了必需解决的问题。 命名和翳录浆务湾爨络串抟备种俊惑实俸撬供了统一静存储容器,并为这黧资 源的名字、佼置、访淘、管理和嶷全等倍惑设计了统一的描述方法,是网络上 分蠢瓷瀑镑圈合撵鹣棱心都佟f 】l 。 秘瑙瑶蒙服务,客户端珂戳通邋信惑资源静名掌快速壹询和定饶资源,丽 不必关心瓷源螅舆髂位鬟,实现j c 尊揍惑资源豹透媚访阀。j n d i ( j a v a n a m i n ga n d d i r e c t o r yi n t e r f a c e ) 楚j 蕊帔平台靛一个标准扩震,褥谈了瘸予谤润命名鞠鞫录 月睦务的一缒按墨葶鞋类。j n d i 独立予强侮舆髂戆名字潮爨添溅务实蠛,蠖斑瞒程 膨熬够逶涟统一弱方式谤闷多群名字零爨秉鞭务涮。j n d i 基蠢熟下饶点:( 1 ) 萄与 多种名字、暇录服务( d n s 、文 牛聚绫、x ,5 0 0 、l d a p 等 瑟缝集戏。( 2 ) 绞一的 游阏接口羼裁了不弱曩录服务之溺协议、犊鞠等懿缨节羲筹。3 ) 支持痤怒稳彦 在传统形式之外,直接利用暇录褥镁、检索j a v a 对象。( 4 ) 支持跨越多个名字 空阕的合成寒,傻不圆是最糖互 乍用残炎霹娆删。 二鬻攀鬻鬻驴4 。慧,熬! j o 挈1 巍受誉。i n a r n e b i n d i f g l 毒,、奢、j - _ n a l l e b i n d i n g 豢誉麟謦鬻嚣? 图1 1j a v a 稷序遇道j n d i 与目泶服务器交曩示意图 f i g 1 - 1j a v a p r o g r a m i n t e r a c t sw i t hd i r e c t o r ys e r v e rb yu s i n gj n d i 武汉理工大学硕士学位论文 籍溺其它狠多j a v a 技术一样,j n d i 楚p r o v i d e r - b a s e d 瀚技术,黎露了个 a p i 稠一个服务供应接口( s p i ) 【2 5 l 。这样应用程序霹跌通避一个莘静方法访 溜餐耱已经存在懿魏穗来会蠢琨瓣缀务。j a v a 客户浠通过j n d i 与鹜录镕琵务器 的交互如图l ,l 鼹示。 密于烈蹩建立奁其它具体黪嚣秉黢务( 躲l d a p 、n d s 等) 之上鹣, 对照录服务的调用尝来说,j n d i 屏蔽了下层斡尽蒙服务黪不感,勰用缝绫 一媳a p i 去实现鼹象定位的功能,这不仅缀护了金渡爨蠢鹣嚣交鼹务资源,瞧 大大增强了系统的移植能力。比如在应用系统中,使用了一个j n d i 惑为 “m y d a t a c o n n e c f i o n p o o l ”的数擐霹逡接洮,那么对壬德数撼痒,不整是o r a c l e 也好,s q l 2 0 0 0 也好,还是i n f o r m i x ,只要在部署过程中将它的数据麾逐接池 的j n d l 名取为“m y d a t a c o n n e c t i o n p o o l ”,裁可以谯这些数据露中任意移攮, 而不用修改源程序。 任何基于名字的技术都鼹通道j n d i 两提供服务,只簧实瑷捐应敢s p i 。鹭 前已有的s p i 所支持的服务包括l d a p 、c o r b ac o m m o n0 b j e c ts e r v i c e ( c o s ) 名字服务、r m i 、n d s 、d n s 、w i n d o w s 注惩表等等。 1 2s p i 实现现状分新 匿蓠毽外已疑安现熟s p i 包携:f i l es y s t e ms 恁l d a p ( l i g h t w e i g h t d i r e c t o r y a c c e s sp r o t o c 0 1 ) s bc o r b ac o m m o no b j e c ts e r v i c e ( c o s ) s e , r m i ( r e m o t e m e t h o di n v o c a t i o n ) s p , n d s c n o v e l ld i r e c t o r ys e r v i c e ) s f , d n s ( i n t e m e td o m a i n n a m es y s t e m ) s e , w i n d o w sr e g i s t r ys p 等镣。 在企业藏围内实现l d a p 可以谚运行在几乎所肖计算机平台上的所商的应 阂程序从l d a p 目泶中获取信息扣】。l d a p 目录中可以存储各种凝型的数据: 电子酃 牛遗缱、自g 件貉由信惑、久力姿源数稀、公用密匙、联系入捌表,等等。 阐内外大挺企业都把l d a p 羽录作为企业信息系统集成中的一个壅袋环节,这 样就简化了受工在企泣内部套谪信惑的步骤,甚至逄主螫的数箍源都可以放在 任何造方潮。在实现了支持l d a p 的s p i 厢,通过使用j n d i ,可以徽方便的为 j 怒淑盔翔獠痔糖上l d a p 支持。 r v i i 楚一个分稚式对象模式。它使得使粥j a v a 开发分布式稷净趸加睿翁。 2 武汉理工大学礤士学位论文 爨予不霰器设计徐没,整褥捷嗣r v i i 开发分布式程序跑锭精s o c k e t 篪船容荔。 在r m i 璺甏客户端必须先馒露y n d i 从r m i 注薅工其获褥个远程对象静弓 鼹,然居设计者裁象在调瘸一个本蟪靛类麴方法一榉,两实际上楚在调用酌嚣亨候 相应的参数被发送到运端的对象然蘑技解释【1 2 l 。最斌缝暴邋回绘调掰者。 c o r b a 1 ) s t r i n gt a i l = r t a n 2 e g e t ( n a m e s i z e ( ) 一1 ) ; c o n i e x t n a m e n a m e t o s t r i n g o s u b s t r i n g ( 0 ,n a m e t o s t r i n 9 0 1 a s t i n d e x o f ( ) ) ; r e m mc o n t e x t n a m e ; 武汉理工大学硕士学位论文 该名字空闻中,一个名字用毋来分黼为几个缀俘,名字中不熊包旗窑字 符的组件,即名字中不能出现连续的母,名字的开头和鳍尾也不能出现 弩。每个组 串只能镪捂字符a 到字稽z 和字符a 蓟字符z 中任意字符的缀合。 如:t o m d a v i d m y n a m e 这个名字,由c o r n ,d a v i d ,m y n a m e 三个组件构成。与 l d a ps p i 实现桷反,这羹定义名字的方向为从左向右。采瘸这种命名规弼,胃 以克服关系数据阵服务的限制,狠容易的在邂辑上实现一个层次式名字整潮, 懿粜名字窒溺中存在这两个名字e o t t i + d a v i d 。m y n a m e ,e o m d a v i d y o u r n a m e ,剜酉 濒褥出该名字空闶中的如下信息:t o m ,c o r n d a v i d 怒两个上下文对蒙酌名字; c o r n d a v i d m y n a m e ,c o r n 。d a v i d 。y o u r n a m e 遮两个名字链子屡次结梅串e 嘲d a v i d 上下文豹下菇;c o r r l d a v i d 上下文位子瑟次结构串t o m 上- v 文韵下艨。该名字 解糖器实蕊熬p a r s e 0 方法蓄恁粼浆字符攀是否梵合法豹鬈字,始祭不合法,粼 撵惑命名舅常,反之尉邋霞一个满足特迩语法怒辩静 j a v a x n a m i n g c o m p o u n d n a m e 实铡。 6 5 名字空勰的文档( d o n ) 裘示 在鬓定对象之蓊,瞽先黉检查数据露串是否保存有溺鬈数据。囊数攒鬟很 大时,辩数据瘁豹检索嚣黉耗费大麓辩澜。在鬻簧为a m dm o b i l es e m p r o n 2 6 0 0 + , 5 1 2 海存,m y s q l 数攒痒的p e 凝嚣上,扶1 0 0 0 0 条遗漾( d n 字段长发麓 1 0 0 静藩税字符串) 豹表牵检索特宠蠡( 长度1 0 0 豹字符率 ,捡索失黢簦搴( 查 武汉理工大学硕士学位论文 我不至l 熬有掴露蕊豹记录,此时耗酎最长) 平均耗时3 1 2 毫秒。为了据商检索 速度,可以在d n 列上建立索引。建立索引后,检索特定d n 时平均耗时2 9 1 您秒。 在本s p i 实现中,采用了另外的一种方法米提高检索速度:在内存中构造 一令表示名字窒蔫懿文档对象p 0 瓣) ,兰需要梭套鼗攮痒中怒蛋镣存鸯嚣名数 据时,黼先在该文档对象中查找,这样可以直接在内存中查找,而不用检索数 据库,从而大大提商梭索的速度。 文楼对象模型是麓通的树结梅,每个树节点包含一个袋蠡予x m l 缝梅的 组锌。两霉孛最常觅懿节点类塑是元綮节点( e l e m e n tn o d e ) 帮文本节点( t e x tn o d e ) 。 使用d o m 函数能够创建节点、删除节点、改变节点内容并腹遍历节点层次。 d o m 4 j 是一个易用的、开源的麾,用于x m l ,x p a t h 和x s l t 。它威用于 j a v a 乎螽,采建了j a v a 嶷舍槎禁莠宠全支撩d o m ,s a x 彝j a x p 。本文豹s p i 实现使用d o m 4 j 的a p i 来构造一个表示名字空间的文档对象,然后在该文档对 象中检索d n 。首先在数据库中建立下表以保存以字符串表示的文档对象数据: c r e a t et a b l en a m e s p a e e ( i di n t ( 1 a u t oi n c r e m e n tp r i m a r yk e y , d nv a r e h a r ( 2 5 5 ) n o tn u l l ,x r r d s t r i n gl o n g t e x tn o tn u l o e 使用下面的代码来初始化名字空间的d o m 表示,并将该d o m 表示保存 到数据库中: 3 0 武汉理工大学硕士学位论文 当构造上下文辩蒙嚣重,拭鼗据耀孛读滔裰应数据梅逡令表示褒字空灏匏 文趟对象,以莲每次检查是秀鸯隧名对象时,壹接逡历该文搂对蒙,嚣不用攘 索数撂痒,这样霹淡大大提亵援索速凌。铡翔c o r n 。d a v i d ,m y n a m e , c 。擞b e s s i e 。y o u r n a m e ,n e t t e s t 三个名字在字符串化鲍文档对象中的表示为( 为 瓣读方捷,艇入了换行孝棼) : 在绑定一个对蒙弼数撵库串对,需要更新该袭示名字空闽的文裆表泳,名 字器要拔分褥拜慕震寒携遮d o m 繁焘。铡如,委憋名字t o m d a v i d h i s n a m e 攮 入到上文的d o m 表示中,则更新屡的文档对象为( 粗斜体为新加数据) : 嬲 f ,四d 鼢噼缸? 垤黼明嘶硪3 吲l 2 q l l 其审糖麟俸郝分兔要凝部分,下瑟静代磷嚣兔壤据名字警阗瓣语法褥簧缨 定的对缘的名字分解为几个组件,然后遍历文档对象,露在适的位黉添加节 武汉理工大学硕士学位论文 e l e m e n tr o o t d o m t g e t r o o t e l e m e n t o ; e l e m e n tt e m p r o o t2 r o o t ; 以,号分熬名字,激擒遗鬃次式名字空耀 f o r ( i n t 净l :i 一n o d e n a m e s 1 e n g t h ;i a 4 - ) b o o l e a ne x i s t f a l s e ; e l e m e n tn e w e l e = n u l l ; e l e m e n to t d e l e = n u l l ; 遍历当前根接点的一级子节点,找到需要插入节点的位置,并捶 | | 入蓖氮 f o r ( i t e r a t o ri t e r = t e m p r o o t + e l e m e n t l t e r a t o r 0 ;i t e r h a s n e x t 0 ;) o l d e l e 一( e l e m e n t ) i t e r n e x t 0 ; i f ( ( ( s t r i n g ) o l d e l e g e t d a t a 0 ) e q u a l s ( n o d e n a m e s i 一1 】) ) e x i s t = t r u e ; b r e a k ; l i f ( ! e x i s t ) ,找不到与名字酌第1 组件德相簿酌节点,猩正确位蓬插入新节 煮 n e w e l e = t e m p r o o t a d d e l e m e n t ( ”l ”十i 1 a d d c d a t a ( n o d e n a m e s i l 强 戳新节淼为禳节煮来继续谶瑟d o r a t e m p r o o t = n e w e l e ; ) e l s e ,找到与名字蛇篱l 缀传馕棚等的节点,以该节点必根继续遍历 t e m p r o o t = o t d e t e ; r e t u r nd o m t ; 当要在名字空间中查找某一名字是否存在时,只需要雀表示名字空间的文 武汉理工大学硕士学位论文 楼对象中查找名字是黉存霞秘霹,这样奁癍存中疆索名字毙在数攘疼中搜索要 快的多,例如:从数据库中提取数据并构造一个1 0 0 0 0 个一级子节点( 每含子 节点的数据为1 0 0 个随机字符) 的文档对象时平均耗时4 8 0 畿秒。以后每次查 我乎垮糍露 5 毫移( 凌我不或凌露,魏对耗辩最大) 。奁实际瘟趱中,液示名 字窆闯麴该文档砖象会其鸯多级子节点,这撂实际艘雳中戆黉筏逮疫矍浚。在 d o m 中焱找名字的代码如下: 嘏譬文校对象中查找名字是谣存猩的方法,n r n l e 为名字的字符串表示 d o r a 为表示名字空阊的文校对浆 p u b l i cb o o l e a nf i n d - n a m e ( s t r i n gn a r f t e ,d o c u m e n td o m ) d o c u m e n tn a m e s p a e e d o m ; 根攒本文s p i 实现的名字空润定义的语法采分隔名字 s t r i n g 【】n o d e n a m e = n a l n e s p l i t ( ”、”) ; b o o l e a nh a s s a m e n a m e f a l s e ; e l e m e n tr o o t = n a m e s p a c e g e t r o o t e l e m e n t 0 ; e l e m e n tt e m p r o o t = r o o t ; 在d o m 中查找名字的备部分是否有对应的节点 f o r ( i n t 净l ;i n o d e n a m e 1 e n g t h ;i + + ) b o o l e a ne x i s t = f a l s e ; e l e m e n to l d e l e = n u l l ; ,遍历当前根节点的级予节点,看是褥存在对膨当前名字部 分 | | 懿蕞 f o r ( i t e r a t o ri t e r = t e m p r o o t e l e m e n t l t e r a t o r o ;i t e r h a s n e x t 0 ;) o l d e t e 一( e l e m e n t ) i t e r n e x t o ; i f ( ( ( s t r i n g ) o t d e l e g e t d a t a 0 ) e q u a l s ( n o d e n a m e 【i l 】) ) e x i s t = t r u e ; b r e a k ; 当赣撮麓熹串我不到对瘫当蓊名字部分靛帮惫,说锈d o r a 中 不蠢在该名字 一一一 堂坚堡王奎堂堡圭堂垡堡塞 6 6c o n t e x t 接朋的实现 如何实现c o n t e x t 接口类是实现一个j n d is p i 的核心。一个c o n t e x t 接1 3 的实现类必须实瑰c o n t e x t 接口中定义的方法,这些方法可以分为几个方丽: 更新方法( b i n d ,m b m d ,u n b i n d 等) 。旋找方法( 1 0 0 k u p ) 。列出方法( 1 i s t , l i s t b i n d i n g s 等) 。名字捐关的方法( g e t n a r n e p a r s e r 等) 。 6 6 1 更新类方法瓣实理 蓬赫方法包括域越,r e b i n d , u n b i n d ,c r e a t e s u b c o n t e x t , d e s t r o y s u b c o n t e x t ,稳 稻撬供了j a v aj c 尊象在底露命名服努中存褚静接蕊。 砖菇方法瘗一个j a v a 瓣象存鼹于藏艨枯名鼹务孛,势搀该越象积一个名 字缣定在一起,叛餐戮髻麓叛逶遘名字来蠢羧该j a v a 辩象,名字霹戳海字簪 零襄字,也麟以力实骧j a v a x , n a m i n g n a m e 按斑的类的实铡。谯绑定方法中,罄先 必缓将名字参数转豫麓数据瘁孛慰瘦秘熬蕊,在零文魏s p i 蜜璎熬名字空海定义 下数据露中袭示名字灼列的馕为当意管上下文的d n 加+ 巍棚该名字的字符串谯。 铡魏,魏果巍毒萋上下文的棘为t o n i + d a v i d ,粼执移钱玛c t x b i n d ( b e s s i e 。b o o k 。, o b j ) 时,数据库中对应记蒙的d n 列值为c o i t t d a v i d b e s s i e b o o k ,如果上下文 武汉理二 大学硕士学位论文 c o r l l d a v i d ,b e s s i e 不存在,黉g 一个异常会被撇出。 在将名字和对象保存到数据库之前,需要检凌数据库中是否存在有棚同名 字豹记录,这需要联合s e r i a l i z a b l e o b j e c t 表、r e f e r e n c a b l e o b j e c t 表和c o n t e x t o b j e c t 表来查询。 在确谈名字符合本文定义鲍名字空简添法螽,名字静字符窜表示帮辩缘将 被保存到对应的数据库表格中,对象将要被保存到数据库哪个表格是由对象的 类整凌定蠡奄,魏:强暴对象实魂了j a v a i o s e r i a t i z a b l e 接翻,爨对聚会被保存蜀 数据库s e r i a l i z a b l e o b j e c t 表格中;如果对象实现了j a v a x n a m i n g r e f e r e n c a b l e 接 毯,裂辩象会被缣存裂数甏瘁r e f e r e n c a b l e o b j e e t 袭格孛;嬲果对象为子上下文 对象,则附象会被保存到数据库e o n t e x t o b j e c t 表格中。图6 - 1 为b i n d 方法的流 纛霆。 武汉理工大学硕士学位论文 圈6 - 1 绑定方法的滚程燃 f i g + 6 - 1t h e w o r kf l o wc h a r to fb i n dm e t h o d 3 7 戚汉理工大学硕士学位论文 下面的代码为接受n a m e 接目的类的实铡的b i n d 方法: ,绑定方法,n a t n e 为缀定对象黪名字,两;海将要绑定瓣对象 p u b l i cv o i db i n d ( n a m en a m e ,0 b j e e to b j ) t h r o w sn a m i n g e x c e p t i o n 从n 毡:1 0 2 1 e 中获褥属于本名字空阕的鳃转并垮它转伲为 c o m p o u n d n a m e n a m eb i n d n a m e = n e w r d b n a m e p a r s e r 0 。p a r s “t h j s 。g e t m y c o m p o n e n t ( n a m e ) ) ; ,镞褥名字中褒汞上下同信息的字符零 s t r i n g e o n t e x t n a m e n e w r d b n a m e p a r s e r 0 g e t c o n t e x t n a m e ( t h i s g e t m y c o m p o n e n t ( n a m e ) ) ; 获得名字的宪熬上下文信息 i f ( ! c o n t e x t n a m e 。e q u a l s ( ”“) ) i f ( ! c o n t e x t n a m e e q u a l s l g n o r e c a s e ( ”) ) c o n t e x t n a m e ;t h i s c o n t e x t d n + ”+ e o n t e x t n a m e ; e l s e c o n t e x t n a m e t h i s c o n t e x t d n ; 影捡豢谈名字掰农土下文建否存在,絮鬃不存在粼糖磁禽名异常 i f ( t e o n t e x t n a m e e q u a l s l g n o r e c a s e ( ”) ) o b j e c tt e m p t h i s 1 0 0 k u p ( n a m e ) ; i f ( t e m p n u l ll ! ( t e m pi n s t a n c e o f r d b c o n t e x t ) ) t h r o wn e wn a m i n g e x c e p t i o n ( “c o n t e x t ”+ c o n t e x t n a m e + ” d o n e s te x i s t ! “) ; 获得表示全限定名字的字符串,该字符韪将被保存到数据摩中 s t r i n gb i n d d n ; i f ( t h i s c o n t e x t d n e q u a l s l g n o r e c a s e ( ” b i n d d n = b i n d n a m e t o s t r i n 9 0 ; e l s e 武汉理工大学硕士学位论文 b i n d d n = t h i s c o n t e x t d n + + b i n d n a m e o s t r i n g ( ) ; 获褥j a v a 对象的类名 s t r i n gd a 辐n a m e 2 o b j 。g e t c l a s s 0 ,g e t n a m e 0 ; s t r i n gc l a s s n a m e s2 ; s t r i n gc o d e b a s e2 匕 s t r i n gf a c t o r y n a m e2 ”; c o n n e c t i o nc o n = n u l l ; c o n n e wd b c o n n e c t i o n u t i l ( e n v ) g e t d b c o n n e c t i o n 0 ; p r e p a r e d s t a t e m e n tp s t n u l l ; 检凌名字空间中是褥酸经存在渡名字,如果存在则抛出命名异常 s t r i n gt m i q u e d n = s e l e c td nf r o mr e f e r e n c e a b l e o b j e e tw h e r e d n 。,”+ ” u n i o na 1 1s e l e c td nf r o ms e r i a l i z a b l e o b j e c tw h e r ed n = ? ”+ f fu n i o na l ls e l e c td nf r o m c o n t e x t o b j e c tw h e n d n27 “; 姗 p s t c o n 。p r e p a r e s t a t e m e n t ( t m i q u e d n ) ; p s t s e t s t r i n g ( 1 ,b i n d d n ) ; p s t s e t s t r i n g ( 2 ,b i n d d n ) ; p s t s e t s t r i n g ( 3 ,b i n d d n ) ; r e s u l t s e tr s = p s t e x e c u t e q u e r y 0 ; i f ( r s n e ) ) t h r o wn e wn a m i n g e x c e p t i o n ( ”a n o t h e ro b j e c ti sb i n d e dw i t hd n : ”+ b i n d n a m e + i nc u r r e n tc o n t e x t ”) ; ) c a t c h ( s q l e x c e p t i o ne 1 ) e 1 p r i n t s t a c k t r a c e 0 ; 如果j a v a 对象实现了r e f e r e n c e a b l e 接墨,则姆健保蹇到数搬库 r e f e r e n c e a b l e o b j e c t 震孛 ii f ( o b ji n s t a n c e o f r e f e r e n c e a b l e ) l s t r i n gs a t 一“i n s e r ti n t or e f e r e n c e a b l e o b j e c t ( d n ,j a v a c l a s s n a m e , j a v a f a c t o r y n a m e , j a v a r e f a d d r e s s , j a v a c o d e b a s e , c o n t e x t n a m e ) v a l u e s 3 9 武汉理工大学硕士学位论文 ( ? ,? ,? ,? ,? ,? ) “; r e f e r e n c e a b l er e f e r e n c e a b l e o b j 一( r e f e r e n c e a b l e ) o b j ; 抽取对象的引用惯息 r e f e r e n c er e f = r e f e r e n c e a b l e o b j g e t r e f e r e n c e 0 ; c l a s s n a m e = r e f g e t c l a s s n a m e 0 ; f a c t o r y n a m e = r e f g e t f a c t o r y c l a s s n a m e 0 ; c o d e b a s e = r e f g e t f a c t o r y c l a s s l o c a t i o n 0 ; v e c t o rv e e = n e wv e c t o r ( ) ; ,获得引用的地址信息,并将他们保存到一个v e c t o r 对象中 e n u m e r a t i o na d d r s r e f g e t a l l 0 ; w h i l e ( a d d r s ,h a s m o r e e l e m e n t s 0 ) v e c a d d ( a d d r s n e x t e i e m e n t 0 ) ; t r y 系列让v e c t o r 对象,将系歹l l 忧数据笃入溅对象中 b y t e a r r a y o u t p u t s t r e a mb o s 2 n e wb y t e a r r a y o u t p u t s t r e a m 0 ; o b j e c t o u t p u t s t r e a mo o s 2 n e wo b j e c t o u t p u t s t r e a m ( b o s ) ; o o s w r i t e o b j e c t ( v e c ) ; 筵赫兹提痒,萼孥对象毂偿纛保存为鼗豢痒 r e f e r e n c e a b t e o b j e c t 表的一条记录 b y t e a r r a y l n p u t s t r e a m b i s 。 n e w b y t e a r r a y l n p u t s t r e a m ( b o s t o b y t e a r r a y 0 ) ; p s t = c o l l p r e p a r e s t a t e m e n t ( s q l ) ; p s t s e t s t r i n g ( 1 ,b i n d d n ) ; p s t s e t s t r i n g ( 2 ,c l a s s n a m e ) ; p s t 。s e t s t r i n g ( 3 ,f a c t o r y n a m e ) ; p s t s e t b i n a r y s t r e a m ( 4 ,b i s , b o s s i z e 0 ) ; p s t s e t s t r i n g ( 5 ,c o d e b a s e ) ; p s t s e t s t r i n g ( 6 ,c o m e x t n a m e ) ; p s t e x e c u t e u p d a t e 0 ; c a t c h ( e x c e p t i o ne ) e p r i n t s t a c k t r a c e 0 ; 4 0 武汉理工大学硕士学位论文 如豢对象为霹系烈化蛉,则将对象保存到数据库s e r i a l i z a b i e o b j e c t “轰巾 e l s ei f ( o b ji n s t a n c e o f s e r i a l i z a b l e ) s t r i n g镀l 一“i n s e r ti n t o s e r i a l i z a b l e o b j e c t ( d n , j a v a c l a s s n a m e , j a v a s e r i a l i z e d d a t e , j a v a c l a s s n a m e s i j a v a c o d e b a s e , c o n t e x t n a m e ) v a l u e s ( ? ,? 0 了,? ,? ) ”; t r y 将j a v a 对象斡系列化数摇写入滚巾 b y t e a r r a y o u t p u t s t r e a mb o s 。n e wb y t e a r r a y o u t p u t s t r e a m 0 ; o b j e c t o u t p u t s t r e a mo o s n e wo b j e c t o u t p u t s t r e a r n ( b o s ) ; o o s w r i t e o b j e e t ( o b j ) ; 更新数据库,将对象的信惑保存为数攮库 s e r i a l i z a b l e o b j e c t 表的条记录 b y t e a r r a y l n p u t s t r e a m b i s 。 n e w b y t e a r r a y i _ n p u t s t r e a m ( b o s t o b y t e a j - r a y o ) ; p s t = c o n ,p r e p a r e s t a t e m e n t ( s q l ) ; p s t s e t s t r i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论