锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲性69影院在线观看,亚洲AV无码乱码在线观看富二代,亚洲日韩欧洲乱码AV夜夜摸http://www.tkk7.com/rosen/archive/2010/01/04/308178.htmlRosenRosenMon, 04 Jan 2010 07:13:00 GMThttp://www.tkk7.com/rosen/archive/2010/01/04/308178.htmlhttp://www.tkk7.com/rosen/comments/308178.htmlhttp://www.tkk7.com/rosen/archive/2010/01/04/308178.html#Feedback0http://www.tkk7.com/rosen/comments/commentRss/308178.htmlhttp://www.tkk7.com/rosen/services/trackbacks/308178.html 涓嶄竴瀹氳繖鏍峰仛灝辮兘閫傚悎姣忎釜鍏徃鍖呮嫭鎴戜滑閮ㄩ棬錛屽笇鏈涜兘浠ユ鎻愮偧鍑烘渶閫傚悎鐨勬柟寮忋?strong>鐐瑰嚮榪欓噷涓嬭澆銆?br />

璇鋒敞鎰忥紒寮曠敤銆佽漿璐存湰鏂囧簲娉ㄦ槑鍘熶綔鑰咃細Rosen Jiang 浠ュ強鍑哄錛?/font> http://www.tkk7.com/rosen


Rosen 2010-01-04 15:13 鍙戣〃璇勮
]]>
Ajax杞浠ュ強Comet妯″紡鈥斿啓鍦⊿ervlet 3.0鍙戝竷涔嬪墠http://www.tkk7.com/rosen/archive/2009/02/11/254309.htmlRosenRosenWed, 11 Feb 2009 13:34:00 GMThttp://www.tkk7.com/rosen/archive/2009/02/11/254309.htmlhttp://www.tkk7.com/rosen/comments/254309.htmlhttp://www.tkk7.com/rosen/archive/2009/02/11/254309.html#Feedback4http://www.tkk7.com/rosen/comments/commentRss/254309.htmlhttp://www.tkk7.com/rosen/services/trackbacks/254309.html闃呰鍏ㄦ枃

Rosen 2009-02-11 21:34 鍙戣〃璇勮
]]>
Spring 鏁版嵁璁塊棶瀵硅薄(Data Access Object,DAO)妗嗘灦鍏ラ棬錛堢炕璇戯級http://www.tkk7.com/rosen/archive/2007/02/28/101226.htmlRosenRosenWed, 28 Feb 2007 13:47:00 GMThttp://www.tkk7.com/rosen/archive/2007/02/28/101226.htmlhttp://www.tkk7.com/rosen/comments/101226.htmlhttp://www.tkk7.com/rosen/archive/2007/02/28/101226.html#Feedback3http://www.tkk7.com/rosen/comments/commentRss/101226.htmlhttp://www.tkk7.com/rosen/services/trackbacks/101226.html闃呰鍏ㄦ枃

Rosen 2007-02-28 21:47 鍙戣〃璇勮
]]>
鍗曠偣鐧婚檰(Single Sign-On,SSO)鏍囧噯鐨勮寖鍥達紙緲昏瘧錛?/title><link>http://www.tkk7.com/rosen/archive/2005/11/02/17873.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Wed, 02 Nov 2005 11:28:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2005/11/02/17873.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/17873.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2005/11/02/17873.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/17873.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/17873.html</trackback:ping><description><![CDATA[<P>鍗曠偣鐧婚檰錛圫ingle Sign-On錛夋爣鍑嗙殑鑼冨洿錛堝湪榪欓噷縐板仛 XSSO錛夛紝瀹氫箟濡備笅鏀寔鐨勬湇鍔★細<BR>    <BR>    涓轟紒涓氱殑搴旂敤寮鍙戞彁渚涢氱敤鐨勩佸崟涓鐨勭粓绔敤鎴風櫥闄嗘帴鍙o紝騫朵笖騫惰綆$悊澶氱敤鎴峰笎鍙峰熀紜淇℃伅鐨勫簲鐢ㄥ紑鍙戞槸鐢變紒涓氭潵緇存姢鐨勩?BR>    <BR><FONT size=5><STRONG>鍔熻兘鐩爣<BR></STRONG></FONT>    <BR>    <FONT size=4><STRONG>鐢ㄦ埛鐧婚檰鎺ュ彛<BR></STRONG></FONT>    <BR>    涓哄疄鐜扮敤鎴風櫥闄嗘帴鍙o紝XSSO 搴旇鏀寔涓嬪垪鍔熻兘鐩爣錛?BR>    <BR>    鎺ュ彛搴旇涓庨獙璇佷俊鎭殑澶勭悊綾誨瀷鏃犲叧銆?BR>    鎻愪緵鏇存敼鍙楁帶鐢ㄦ埛楠岃瘉淇℃伅鐨勫姛鑳姐傝繖鎰忓懗鐫鍦ㄦ渶鍒濇洿鏀圭敤鎴峰瘑鐮佷細鍙楀埌闄愬埗錛屽綋鐒朵笉鎺掗櫎灝嗘潵瀵瑰叾鎻愪緵榪欑鍔熻兘銆?BR>    鎻愪緵涓鴻皟鐢ㄨ呭緩绔嬮粯璁ょ敤鎴峰睘鎬х殑鏀寔銆傜洰鍓嶈繕涓嶇敤浠庝竴緇勫彲鐢ㄧ殑鐢ㄦ埛灞炴ч夐」鏉ラ夋嫨榪欎簺鐢ㄦ埛灞炴э紝褰撶劧涓嶆帓闄や粖鍚庢彁渚涜繖縐嶅姛鑳姐?BR>    褰撲細璇濈粓姝€佹敞閿鏃舵彁渚涢粯璁ょ殑娓呴櫎鏈嶅姟銆?BR>    鎻愪緵涓縐嶈兘璁╄皟鐢ㄨ呴氳繃浠庨櫎璇?XSSO 瀹炵幇浠ュ鐨勫簲鐢ㄩ氱煡 XSSO 瀹炵幇鏀瑰彉鍙楁帶鐢ㄦ埛楠岃瘉淇℃伅鐨勬湇鍔°?BR>    XSSO 涓嶈兘棰勫厛紜畾絎簩嬈$櫥闄嗘搷浣滅殑鏃墮棿銆?BR>    娉ㄦ剰錛氬仛涓轟富鐧婚檰鎿嶄綔錛屾剰鍛崇潃 XSSO 灝嗕笉闇瑕佹墍鏈夌櫥闄嗘搷浣滃悓鏃舵墽琛屻傝繖灝嗗鑷寸敤鎴蜂細璇濆湪鎵鏈夊彲鑳界殑鏈嶅姟涓鍒涘緩錛屽嵆渚挎煇浜涙湇鍔$敤鎴峰茍娌℃湁瀹為檯鐨勪嬌鐢ㄣ?BR>    <BR>    <FONT size=4><STRONG>鐢ㄦ埛甯愬彿綆$悊鎺ュ彛</STRONG></FONT></P> <P>涓轟簡瀹炵幇鐢ㄦ埛甯愬彿綆$悊鎺ュ彛錛孹SSO 搴旇鏀寔涓嬪垪鍔熻兘鐩爣錛?BR>    <BR>    鎻愪緵鍒涘緩銆佸垹闄ゃ佷慨鏀圭敤鎴峰笎鍙風殑鍔熻兘銆?BR>    鎻愪緵涓哄崟涓敤鎴峰笎鍙瘋緗睘鎬х殑鍔熻兘銆?BR>    <BR><STRONG><FONT size=5>闈炲姛鑳芥х洰鏍?/FONT></STRONG></P> <P>XSSO 鐨勯潪鍔熻兘鎬х洰鏍囧寘鎷細<BR>    <BR>    XSSO 搴旇涓庨獙璇佹妧鏈棤鍏熾傛帴鍙d笉鑳芥寚瀹氫嬌鐢ㄧ壒瀹氱殑楠岃瘉鎶鏈紝涓嶆帓闄や嬌鐢ㄤ換浣曞彲鑳界殑楠岃瘉鎶鏈?nbsp;   <BR>    娉ㄦ剰錛氭湁浜涢獙璇佹妧鏈紝姣斿鎸夌収鎸戞垬鍝嶅簲鏈哄埗錛岀敤鎴鋒寔鏈夌殑璁懼鏋勬垚灝嗕笉浼氬湪絎簩嬈$櫥闄嗗姩浣滄椂閫傜敤銆?BR>    XSSO 搴旇涓庡鉤鍙版垨鎿嶄綔緋葷粺鏃犲叧銆備笉鎺掗櫎 XSSO 浼氶泦鎴愯繘甯歌妗岄潰鎴栧父鐢ㄦ湇鍔″櫒緋葷粺錛岀敋鑷沖ぇ鍨嬫満銆傚綋鐒訛紝涔熷彲浠ヤ慨鏀逛竴涓?XSSO 鍐嶆妸瀹冮泦鎴愯繘閭d簺妗岄潰鎴栨湇鍔″櫒緋葷粺銆?BR>    <BR><STRONG><FONT size=5>瀹夊叏鐩爣</FONT></STRONG></P> <P>XSSO 瀹炵幇鐨勫畨鍏ㄧ洰鏍囧涓嬶細<BR>    <BR>    琚儴緗蹭箣鍚庯紝XSSO 涓嶅簲鍙嶈繃鏉ュ獎鍝嶆墍渚濊禆鐨勭郴緇熴?BR>    XSSO 涓嶅簲鏈夊弽榪囨潵鍐插嚮浠諱綍鐙珛緋葷粺鏈嶅姟鐨勫彲鐢ㄦс?BR>    XSSO 涓嶅簲涓哄綋浜嬩漢鎻愪緵璁塊棶鐢ㄦ埛甯愬彿淇℃伅鐨勯斿緞錛屽洜涓轟粬浠笉鍏佽璁塊棶澶勪簬鍙楁帶瀹夊叏鍩熶箣鍐呯殑閭d簺淇℃伅銆?BR>    涓涓?XSSO 瀹炵幇瑕佸鏍稿彂鐢熷湪 XSSO 涓婁笅鏂囦箣鍐呯殑鎵鏈夊畨鍏ㄧ浉鍏蟲椿鍔ㄣ?BR>    涓涓?XSSO 瀹炵幇瑕佷繚鎶ょ敱 XSSO 瀹炵幇鎻愪緵鎴栦駭鐢熺殑鎵鏈夊畨鍏ㄧ浉鍏充俊鎭紝浠ヤ究鍏朵粬鏈嶅姟鍏呭垎淇′換榪欎簺瀹夊叏淇℃伅鐨勫畬鏁存у拰鍘熷鎬э紝浠ヤ究絎簩嬈$櫥闄嗘搷浣溿?BR>    褰撳湪鍚勪釜緇勪歡鍐呴儴浠ュ強緇勪歡涓庡叾浠栨湇鍔′氦浜掓椂錛孹SSO 搴旀彁渚涘畨鍏ㄧ浉鍏充俊鎭繚鎶ゃ?BR>    <BR><FONT size=5><STRONG>鑼冨洿涔嬪</STRONG></FONT></P> <P>鍦ㄥ綋鍓嶇殑 XSSO 鑼冨洿涓紝浠ヤ笅榪欎簺鏂歸潰涓嶈鑰冭檻錛?BR>    <BR>    鎻愪緵璺ㄨ秺浼佷笟綰х郴緇熻竟鐣岀殑鍗曠偣鐧婚檰銆?BR>    闈炵敤鎴烽厤緗獙璇佷俊鎭殑鏀瑰彉錛屼緥濡傜鎬у窘绔犮佹櫤鑳藉崱絳夌瓑銆?BR>    褰撶櫥闄嗘椂鐢ㄦ埛灞炴х殑鍙夋嫨鎬с?BR>    閰嶇疆鍜岀鐞嗙敤鎴峰睘鎬х殑鍙夐泦鍚堬紙緇勶級銆?BR>    褰撲笅闈㈢殑鐢ㄦ埛甯愬彿鍩虹淇℃伅鐢卞叾浠?XSSO 鎻愪緵鐨勫姛鑳芥墍淇敼鏃訛紝灝遍渶瑕佺淮鎶ゅ崟鐐圭櫥闄嗙敤鎴峰笎鍙峰熀紜淇℃伅浠ュ強涓嬮潰鐙珛緇存姢鐨勭敤鎴峰笎鍙峰熀紜淇℃伅鐨勫畬鏁存с?BR>    鍥懼艦鍖栧拰鍛戒護琛岀敤鎴風晫闈?XSSO 鐨勫熀紜鏈嶅姟銆傝繖涓伐鍏峰彲浠ユ槸 XSSO 鐨勪竴閮ㄥ垎銆?BR>    <BR>    <BR><FONT size=2><STRONG>璇戣呮敞</STRONG></FONT></P> <P><FONT size=2>鍏稿瀷鐨勬寫鎴樺搷搴旀満鍒跺簲鐢ㄥ湪 HMAC(Keyed-Hashing for Message Authentication) 楠岃瘉涓傞獙璇佹祦紼嬪涓嬶細<BR></FONT><FONT size=2><BR>    (1) 鍏堢敱瀹㈡埛绔悜鏈嶅姟鍣ㄥ彂鍑轟竴涓獙璇佽姹傘?<BR>    (2) 鏈嶅姟鍣ㄦ帴鍒版璇鋒眰鍚庣敓鎴愪竴涓殢鏈烘暟騫墮氳繃緗戠粶浼犺緭緇欏鎴風錛堟涓烘寫鎴橈級銆?<BR>    (3) 瀹㈡埛绔皢鏀跺埌鐨勯殢鏈烘暟鎻愪緵緇?ePass錛岀敱 ePass 浣跨敤璇ラ殢鏈烘暟涓庡瓨鍌ㄥ湪 ePass 涓殑瀵嗛挜榪涜 HMAC-MD5 榪愮畻騫跺緱鍒頒竴涓粨鏋滀綔涓鴻璇佽瘉鎹紶緇欐湇鍔″櫒錛堟涓哄搷搴旓級銆?<BR>    (4) 涓庢鍚屾椂錛屾湇鍔″櫒涔熶嬌鐢ㄨ闅忔満鏁頒笌瀛樺偍鍦ㄦ湇鍔″櫒鏁版嵁搴撲腑鐨勮瀹㈡埛瀵嗛挜榪涜 HMAC-MD5 榪愮畻錛屽鏋滄湇鍔″櫒鐨勮繍綆楃粨鏋滀笌瀹㈡埛绔紶鍥炵殑鍝嶅簲緇撴灉鐩稿悓錛屽垯璁や負瀹㈡埛绔槸涓涓悎娉曠敤鎴楓?/FONT><BR><BR><BR><STRONG><FONT face=瀹嬩綋 color=#ff0000 size=2>璇鋒敞鎰忥紒寮曠敤銆佽漿璐存湰鏂囧簲娉ㄦ槑鍘熻瘧鑰咃細Rosen Jiang 浠ュ強鍑哄錛?/FONT></STRONG><A href="/rosen/rosen/rosen/rosen"><FONT face=瀹嬩綋 color=#ff0000 size=2><STRONG>http://www.tkk7.com/rosen</STRONG></FONT></A></P><img src ="http://www.tkk7.com/rosen/aggbug/17873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2005-11-02 19:28 <a href="http://www.tkk7.com/rosen/archive/2005/11/02/17873.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍗曠偣鐧婚檰(Single Sign-On,SSO)浠嬬粛錛堢炕璇戯級http://www.tkk7.com/rosen/archive/2005/08/12/9876.htmlRosenRosenFri, 12 Aug 2005 01:50:00 GMThttp://www.tkk7.com/rosen/archive/2005/08/12/9876.htmlhttp://www.tkk7.com/rosen/comments/9876.htmlhttp://www.tkk7.com/rosen/archive/2005/08/12/9876.html#Feedback0http://www.tkk7.com/rosen/comments/commentRss/9876.htmlhttp://www.tkk7.com/rosen/services/trackbacks/9876.html    闅忕潃 IT 緋葷粺鎵鏀拺鐨勪笟鍔$▼搴忕殑嬋澧烇紝鐢ㄦ埛鍜岀郴緇熺鐞嗚呴兘闈㈠鍚屼竴涓棩鐩婂鏉傜殑錛岃繘琛屼綔涓氬姛鑳芥搷浣滅殑鐣岄潰銆傚吀鍨嬫儏鍐典笅錛岀敤鎴蜂笉寰椾笉鍦ㄥ涓郴緇熶笂榪涜鐧婚檰錛岃繖灝嗚揩浣垮悓涓涓櫥闄嗗璇濇澶氭鍑虹幇錛屾瘡涓郴緇熼兘璋冪敤涓嶅悓鐨勭敤鎴峰悕鍜岄獙璇佷俊鎭傝岀郴緇熺鐞嗚呭垯闈復鍦ㄦ瘡涓郴緇熺鐞嗙敤鎴峰笎鍙鳳紝騫朵負浜嗕互涓縐嶅崗鍚岀殑鏂瑰紡璁塊棶鑰岀淮鎸佸畬鏁寸殑寮哄埗瀹夊叏絳栫暐銆傚浜庣敤鎴瘋繖縐嶉噰鐢ㄩ仐浼犳柟寮忕櫥闄嗗埌澶氱郴緇熺殑璇存槑濡備笅錛?/P>


    
                                    閲囩敤閬椾紶鏂瑰紡鐨勭敤鎴風櫥闄嗗緋葷粺

    鍦ㄥ巻鍙蹭笂錛屼竴涓垎甯冨紡璁$畻鏈虹郴緇熺敱鍚勪釜緇勪歡浣滀負鐙珛瀹夊叏鍩熻閰嶈屾垚銆傝繖浜涚粍浠剁敱鍖呭惈鍏寵仈鎿嶄綔緋葷粺鍜屽簲鐢ㄧ▼搴忕殑鐙珛騫沖彴緇勬垚銆?BR>   
    榪欎簺緇勪歡浣滀負瀹樿兘涓婄殑鐙珛鍩燂紝緇堢鐢ㄦ埛蹇呴』鑷繁鐙珛杈ㄥ埆鍜岄獙璇佷粬鎯寵浜や簰鐨勯偅浜涘煙銆傝鍦烘櫙鍦ㄤ笂鍥懼凡鏈夎鏄庛傜粓绔敤鎴鋒渶鍒濋氳繃鍜屼富鍩燂紙Primary Domain錛変氦浜掓潵寤虹珛浼氳瘽銆傚湪涓婂浘涓縐板仛涓誨煙鐧婚檰錛圥rimary Domain Sign-On錛夛紝騫朵笖闇瑕佺粓绔敤鎴鋒彁渚涗竴緇勫彲鐢ㄧ殑鐢ㄦ埛淇℃伅錛屼緥濡傜敤鎴峰悕鍜屽瘑鐮併備富鍩熶細璇濆吀鍨嬬殑鐢辨搷浣滅郴緇熶細璇濆澹沖湪浠h〃緇堢鐢ㄦ埛鐜鐨勭粓绔敤鎴鋒満鍣ㄤ笂榪愯鑾峰緱鐨勶紙姣斿錛氱▼搴忓睘鎬э紝鐜鍙橀噺鍜屾牴鐩綍錛夈傞氳繃涓誨煙浼氳瘽澶栧3錛岀敤鎴峰彲浠ヨ皟鐢ㄥ叾浠栫殑鍩熸湇鍔★紝姣斿騫沖彴鎴栧簲鐢ㄧ▼搴忋?BR>   
    瑕佽皟鐢ㄤ簩綰у煙錛圫econdary Domain錛夋湇鍔★紝緇堢鐢ㄦ埛闇瑕佽繘琛屼簩綰у煙鐧婚檰錛圫econdary Domain Sign-on錛夈傚茍瑕佹眰緇堢鐢ㄦ埛鍐嶆鎻愪緵鐢ㄦ埛淇℃伅錛岀粓绔敤鎴蜂笉寰椾笉寮曞涓涓嫭绔嬬殑鐧婚檰瀵硅瘽妗嗚繘琛岄獙璇併備簩綰у煙浼氳瘽鏄吀鍨嬬殑鎿嶄綔緋葷粺澶栧3鎴栫▼搴忓澹籌紝鍐嶄竴嬈′唬琛ㄧ粓绔敤鎴風幆澧冦備粠綆$悊鐨勮搴︿笂鐪嬶紝閲囩敤閬椾紶鏂瑰紡闇瑕佺嫭绔嬬殑綆$悊姣忎釜鍩燂紝鑰屼笖鏄鐢ㄦ埛甯愭埛綆$悊鐣岄潰銆傛潈琛″彲鐢ㄦу拰瀹夊叏涓婄殑鑰冮噺錛岄渶瑕佸湪浼佷笟涓負澶氫釜涓嶅悓鍩熼儴緗蹭竴縐嶅崗鍚屾満鍒朵互鍙婂彲闆嗘垚鐨勭敤鎴風櫥闄嗗姛鑳戒互鍙婄敤鎴峰笎鍙風鐞嗗姛鑳姐傛彁渚涜繖縐嶅崗鍚屽拰闆嗘垚鐨勬湇鍔℃湁鐩婁簬涓轟紒涓氭彁渚涚湡瀹炵殑寮閿錛岄氳繃錛?BR>   
    鍑忓皯鐢ㄦ埛鐧婚檰鍒扮嫭绔嬪煙鑺辮垂鐨勬搷浣滄椂闂達紝鍚屾椂涔熼檷浣庝簡榪涜鐧婚檰鎿嶄綔鏃跺け璐ョ殑鏈虹巼銆?BR>    閫氳繃鍑忓皯蹇呰鐨勭敤鎴峰彞鏌勫拰璁頒綇澶氱粍璁よ瘉娑堟伅錛屽寮轟簡瀹夊叏鎬с?BR>    鍑忓皯浜嗘椂闂寸殑鑺辮垂錛屾敼鍠勪簡鍝嶅簲錛岄氳繃緋葷粺綆$悊鍛樹負緋葷粺澧炲姞銆佸垹闄ゃ佷慨鏀圭敤鎴瘋闂潈銆?BR>    閫氳繃澧炲己緋葷粺綆$悊鍛樼淮鎶ょ敤鎴峰笎鍙烽厤緗殑瀹屾暣鎬э紝鏉ユ敼鍠勫畨鍏ㄣ傞噰鐢ㄥ崗鍚屼竴鑷寸殑鏂瑰紡紱佹鎴栧彇娑堢嫭绔嬬敤鎴瘋闂墍鏈夌郴緇熻祫婧愩?/P>


                                           鍗曠敤鎴風櫥闄嗗埌澶氱敤鎴?/STRONG>


    榪欑鏈嶅姟琚О鍋氬崟鐐圭櫥闄嗭紙Single Sign-On錛夈備笉綆℃庢牱錛岃鏈嶅姟瀵逛簬緇堢鐢ㄦ埛鍜岀鐞嗘柟闈㈤兘鍚屾牱閲嶈銆傝繖縐嶆柟寮忓湪涓婂浘涓湁鎵浣撶幇銆傚湪鍗曠偣鐧婚檰鏂瑰紡錛岀郴緇熷繀欏諱粠鐢ㄦ埛鏀墮泦鏁版嵁錛屼綔涓轟富鐧婚檰鐨勪竴閮ㄥ垎錛屾墍鏈夌殑韜喚鍜岀敤鎴蜂俊鎭繀欏繪彁渚涚粰鐢ㄦ埛楠岃瘉緋葷粺錛屼互渚挎瘡涓簩綰у煙榪涜娼滃湪鐨勪氦浜掋?BR>   
    榪欎簺淇℃伅鐢辯粓绔敤鎴蜂綔涓轟富鍩熺櫥闄嗚繃紼嬬殑涓閮ㄥ垎鎻愪緵錛屽彲鍦ㄤ笅闈㈠嚑涓柟闈負浜岀駭鍩熸彁渚涚櫥闄嗭細
   
    鐩存帴鏂瑰紡錛岀敤鎴鋒彁渚涚殑淇℃伅鐩存帴浣滀負浜岀駭鍩熺殑絎簩嬈$櫥闄嗙殑涓閮ㄥ垎銆?BR>    闂存帴鏂瑰紡錛岀敤鎴鋒彁渚涚殑淇℃伅琚敤浜庢壘鍥炲瓨鍌ㄥ湪鍗曠偣鐧婚檰綆$悊鏁版嵁搴撲笂鐨勫叾浠栫敤鎴風殑鏍囪瘑鍜岀敤鎴蜂俊鎭傚彇鍥炵殑淇℃伅鎺ョ潃琚敤浜庡熀鏈殑浜岀駭鍩熺櫥闄嗘搷浣溿?BR>    绔嬪嵆鏂瑰紡錛屼笌浜岀駭鍩熷緩绔嬩細璇濅綔涓哄垵濮嬩細璇濈殑紜珛銆傛剰鍛崇潃紼嬪簭鐨勫鎴峰皢鍦ㄧ涓嬈$櫥闄嗘搷浣滄椂鍚屾椂鑷姩璋冪敤騫跺緩绔嬮氫俊銆?BR>    涓存椂瀛樺偍鎴栫紦瀛橈紝搴旂敤浜庣粓绔敤鎴峰伓灝旇姹備簩綰у煙鏈嶅姟鐨勬儏鍐點?BR>   
    浠庣鐞嗙殑瑙掑害鏉ョ湅錛屽崟鐐圭櫥闄嗘ā寮忔彁渚涗竴縐嶅崟涓鐢ㄦ埛綆$悊鐣岄潰錛屾墍鏈夌殑緇勪歡鍩熷皢浠ュ崗鍚屽拰鍚屾鐨勬柟寮忕鐞嗐?BR>   
    鍗曠偣鐧婚檰妯″紡鍦ㄥ畨鍏ㄦ柟闈㈢殑閲嶈鎰忎箟鍦ㄤ簬錛?BR>   
    浜岀駭鍩熶笌涓誨煙鐨勪俊浠誨叧緋伙細
   
        姝g‘鍦版柇璦緇堢鐢ㄦ埛鐨勮韓浠藉拰楠岃瘉淇℃伅銆?BR>        淇濇姢涓轟嬌鐢ㄦ湭緇忚鍙殑浜岀駭鍩熻岄獙璇佺粓绔敤鎴瘋韓浠界殑楠岃瘉淇℃伅銆?BR>       
    褰撲富銆佷粠鍩熶箣闂撮氳鍙楀埌濞佽儊錛屾瘮濡備腑閫旀嫤鎴垨涓㈠け錛坋avsdropping錛夊紩璧峰彲鑳界殑浼鏀誨嚮錛岄獙璇佷俊鎭簲琚繚鎶よ搗鏉ャ?BR>

璇鋒敞鎰忥紒寮曠敤銆佽漿璐存湰鏂囧簲娉ㄦ槑鍘熻瘧鑰咃細Rosen Jiang 浠ュ強鍑哄錛?/FONT>http://www.tkk7.com/rosen



Rosen 2005-08-12 09:50 鍙戣〃璇勮
]]>
鍒╃敤 Spring 鍜?EHCache 緙撳瓨緇撴灉錛堢炕璇戯級http://www.tkk7.com/rosen/archive/2005/08/12/9873.htmlRosenRosenFri, 12 Aug 2005 01:41:00 GMThttp://www.tkk7.com/rosen/archive/2005/08/12/9873.htmlhttp://www.tkk7.com/rosen/comments/9873.htmlhttp://www.tkk7.com/rosen/archive/2005/08/12/9873.html#Feedback6http://www.tkk7.com/rosen/comments/commentRss/9873.htmlhttp://www.tkk7.com/rosen/services/trackbacks/9873.html 瀵艱█

浠?/span> Spring 1.1.1 寮濮嬶紝 EHCache 灝變綔涓轟竴縐嶉氱敤緙撳瓨瑙e喅鏂規闆嗘垚榪?/span> Spring 銆?/span>

鎴戝皢紺鴻寖鎷︽埅鍣ㄧ殑渚嬪瓙錛屽畠鑳芥妸鏂規硶榪斿洖鐨勭粨鏋滅紦瀛樿搗鏉ャ?/span>


鍒╃敤
Spring IoC 閰嶇疆 EHCache

鍦?/span> Spring 閲岄厤緗?/span> EHCache 寰堢畝鍗曘備綘鍙渶涓涓?/span> ehcache.xml 鏂囦歡錛岃鏂囦歡鐢ㄤ簬閰嶇疆 EHCache 錛?/span>

<ehcache>

聽聽聽 <!鈥旇緗紦瀛樻枃浠?.data 鐨勫垱寤鴻礬寰勩?/font>

聽聽聽聽聽聽聽聽 濡傛灉璇ヨ礬寰勬槸 Java 緋葷粺鍙傛暟錛屽綋鍓嶈櫄鎷熸満浼氶噸鏂拌祴鍊箋?/font>

聽聽聽聽聽聽聽聽 涓嬮潰鐨勫弬鏁拌繖鏍瘋В閲婏細
聽聽聽聽聽聽聽聽 user.home 鈥?鐢ㄦ埛涓葷洰褰?br />聽聽聽聽聽聽聽聽 user.dir聽聽聽聽聽 鈥?鐢ㄦ埛褰撳墠宸ヤ綔鐩綍
聽聽聽聽聽聽聽聽 java.io.tmpdir 鈥?榛樿涓存椂鏂囦歡璺緞 -->
聽聽聽 <diskStore path="java.io.tmpdir"/>


聽聽聽 <!鈥旂己鐪佺紦瀛橀厤緗侰acheManager 浼氭妸榪欎簺閰嶇疆搴旂敤鍒扮▼搴忎腑銆?/font>

聽聽聽聽聽聽聽 涓嬪垪灞炴ф槸 defaultCache 蹇呴』鐨勶細

聽聽聽聽聽聽聽 maxInMemory聽聽聽聽聽聽聽聽聽聽 - 璁懼畾鍐呭瓨涓垱寤哄璞$殑鏈澶у箋?br />聽聽聽聽聽聽聽 eternal聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 - 璁劇疆鍏冪礌錛堣瘧娉細鍐呭瓨涓璞★級鏄惁姘鎬箙椹葷暀銆傚鏋滄槸錛屽皢蹇界暐瓚?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽鏃墮檺鍒朵笖鍏冪礌姘鎬笉娑堜骸銆?br />聽聽聽聽聽聽聽 timeToIdleSeconds聽 - 璁劇疆鏌愪釜鍏冪礌娑堜骸鍓嶇殑鍋滈】鏃墮棿銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 涔熷氨鏄湪涓涓厓绱犳秷浜′箣鍓嶏紝涓ゆ璁塊棶鏃墮棿鐨勬渶澶ф椂闂撮棿闅斿箋?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 榪欏彧鑳藉湪鍏冪礌涓嶆槸姘鎬箙椹葷暀鏃舵湁鏁堬紙璇戞敞錛氬鏋滃璞℃案鎭掍笉鐏紝鍒?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 璁劇疆璇ュ睘鎬т篃鏃犵敤錛夈?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 濡傛灉璇ュ兼槸 0 灝辨剰鍛崇潃鍏冪礌鍙互鍋滈】鏃犵┓闀跨殑鏃墮棿銆?br />聽聽聽聽聽聽聽 timeToLiveSeconds聽- 涓哄厓绱犺緗秷浜″墠鐨勭敓瀛樻椂闂淬?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 涔熷氨鏄竴涓厓绱犱粠鏋勫緩鍒版秷浜$殑鏈澶ф椂闂撮棿闅斿箋?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 榪欏彧鑳藉湪鍏冪礌涓嶆槸姘鎬箙椹葷暀鏃舵湁鏁堛?br />聽聽聽聽聽聽聽 overflowToDisk聽聽聽聽聽聽聽 - 璁劇疆褰撳唴瀛樹腑緙撳瓨杈懼埌 maxInMemory 闄愬埗鏃跺厓绱犳槸鍚﹀彲鍐欏埌紓佺洏
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽涓娿?br />聽聽聽聽聽聽聽 -->

聽聽聽 <cache name="org.taha.cache.METHOD_CACHE"
聽聽聽聽聽聽聽 maxElementsInMemory="300"
聽聽聽聽聽聽聽 eternal="false"
聽聽聽聽聽聽聽 timeToIdleSeconds="500"
聽聽聽聽聽聽聽 timeToLiveSeconds="500"
聽聽聽聽聽聽聽 overflowToDisk="true"
聽聽聽聽聽聽聽 />
</ehcache>

鎷︽埅鍣ㄥ皢浣跨敤 鈥?b>org.taha.cache.METHOD_CACHE鈥? 鍖哄煙緙撳瓨鏂規硶榪斿洖緇撴灉銆備笅闈㈠埄鐢?/span> Spring IoC 璁?/span> bean 鏉ヨ闂繖涓鍖哄煙銆?/span>

<!-- ======================聽聽 緙撳瓨聽聽 ======================= -->

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
聽 <property name="configLocation">
聽聽聽 <value>classpath:ehcache.xml</value>
聽 </property>
</bean>

<bean id="methodCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
聽 <property name="cacheManager">
聽聽聽 <ref local="cacheManager"/>
聽 </property>
聽 <property name="cacheName">
聽聽聽 <value>org.taha.cache.METHOD_CACHE</value>
聽 </property>
</bean>

聽聽聽

鏋勫緩鎴戜滑鐨?/span> MethodCacheInterceptor

璇ユ嫤鎴櫒瀹炵幇 org.aopalliance.intercept.MethodInterceptor 鎺ュ彛銆備竴鏃?/span> 榪愯璧鋒潵 (kicks-in) 錛屽畠棣栧厛媯鏌ヨ鎷︽埅鏂規硶鏄惁琚厤緗負鍙紦瀛樼殑銆傝繖灝嗗彲閫夋嫨鎬х殑閰嶇疆鎯寵緙撳瓨鐨?/span> bean 鏂規硶銆傚彧瑕佽皟鐢ㄧ殑鏂規硶閰嶇疆涓哄彲緙撳瓨錛屾嫤鎴櫒灝嗕負璇ユ柟娉曠敓鎴?/span> cache key 騫舵鏌ヨ鏂規硶榪斿洖鐨勭粨鏋滄槸鍚﹀凡緙撳瓨銆傚鏋滃凡緙撳瓨錛屽氨榪斿洖緙撳瓨鐨勭粨鏋滐紝鍚﹀垯鍐嶆璋冪敤琚嫤鎴柟娉曪紝騫剁紦瀛樼粨鏋滀緵涓嬫璋冪敤銆?/span>

org.taha.interceptor.MethodCacheInterceptor

/*
聽* Copyright 2002-2004 the original author or authors.
聽*
聽* Licensed under the Apache License, Version 2.0 (the "License");
聽* you may not use this file except in compliance with the License.
聽* You may obtain a copy of the License at
聽*
聽*聽聽聽聽聽
http://www.apache.org/licenses/LICENSE-2.0
聽*
聽* Unless required by applicable law or agreed to in writing, software
聽* distributed under the License is distributed on an "AS IS" BASIS,
聽* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
聽* See the License for the specific language governing permissions and
聽* limitations under the License.
聽*/

package org.taha.interceptor;

import java.io.Serializable;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;

import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;

/**
聽* @author <a href="
mailto:irbouh@gmail.com">Omar Irbouh</a>
聽* @since 2004.10.07
聽*/
public class MethodCacheInterceptor implements MethodInterceptor, InitializingBean {
聽 private static final Log logger = LogFactory.getLog(MethodCacheInterceptor.class);

聽 private Cache cache;

聽 /**
聽聽 * 璁劇疆緙撳瓨鍚?br />聽聽 */
聽 public void setCache(Cache cache) {
聽聽聽 this.cache = cache;
聽 }

聽 /**
聽聽 * 媯鏌ユ槸鍚︽彁渚涘繀瑕佸弬鏁般?br />聽聽 */
聽 public void afterPropertiesSet() throws Exception {
聽聽聽 Assert.notNull(cache, "A cache is required. Use setCache(Cache) to provide one.");
聽 }

聽 /**
聽聽 * 涓繪柟娉?br />聽聽 * 濡傛灉鏌愭柟娉曞彲琚紦瀛樺氨緙撳瓨鍏剁粨鏋?br />聽聽 * 鏂規硶緇撴灉蹇呴』鏄彲搴忓垪鍖栫殑(serializable)
聽聽 */
聽 public Object invoke(MethodInvocation invocation) throws Throwable {
聽聽聽 String targetName聽 = invocation.getThis().getClass().getName();
聽聽聽 String methodName聽 = invocation.getMethod().getName();
聽聽聽 Object[] arguments = invocation.getArguments();
聽聽聽 Object result;

聽聽聽 logger.debug("looking for method result in cache");
聽聽聽 String cacheKey = getCacheKey(targetName, methodName, arguments);
聽聽聽 Element element = cache.get(cacheKey);
聽聽聽 if (element == null) {
聽聽聽聽聽 //call target/sub-interceptor
聽聽聽聽聽 logger.debug("calling intercepted method");
聽聽聽聽聽 result = invocation.proceed();

聽聽聽聽聽 //cache method result
聽聽聽聽聽 logger.debug("caching result");
聽聽聽聽聽 element = new Element(cacheKey, (Serializable) result);
聽聽聽聽聽 cache.put(element);
聽聽聽 }
聽聽聽 return element.getValue();
聽 }

聽 /**
聽聽 * creates cache key: targetName.methodName.argument0.argument1...
聽聽 */
聽 private String getCacheKey(String targetName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String methodName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Object[] arguments) {
聽聽聽 StringBuffer sb = new StringBuffer();
聽聽聽 sb.append(targetName)
聽聽聽聽聽 .append(".").append(methodName);
聽聽聽 if ((arguments != null) && (arguments.length != 0)) {
聽聽聽聽聽 for (int i=0; i<arguments.length; i++) {
聽聽聽聽聽聽聽 sb.append(".")
聽聽聽聽聽聽聽聽聽 .append(arguments[i]);
聽聽聽聽聽 }
聽聽聽 }

聽聽聽 return sb.toString();
聽 }
}

MethodCacheInterceptor 浠g爜璇存槑浜嗭細

  • 榛樿鏉′歡涓嬶紝鎵鏈夋柟娉曡繑鍥炵粨鏋滈兘琚紦瀛樹簡錛?/span> methodNames 鏄?/span> null 錛?/span>

  • 緙撳瓨鍖哄埄鐢?/span> IoC 褰㈡垚

  • cacheKey 鐨勭敓鎴愯繕鍖呮嫭鏂規硶鍙傛暟鐨勫洜绱狅紙璇戞敞錛氬弬鏁扮殑鏀瑰彉浼氬獎鍝?/span> cacheKey 錛?/span>

浣跨敤 MethodCacheInterceptor

涓嬮潰鎽樺綍浜嗘庢牱閰嶇疆 MethodCacheInterceptor 錛?/span>

<bean id="methodCacheInterceptor" class="org.taha.interceptor.MethodCacheInterceptor">
聽 <property name="cache">
聽聽聽 <ref local="methodCache" />
聽 </property>
</bean>

<bean id="methodCachePointCut" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
聽 <property name="advice">
聽聽聽 <ref local="methodCacheInterceptor"/>
聽 </property>
聽 <property name="patterns">
聽聽聽 <list>
聽聽聽聽聽 <value>.*methodOne</value>
聽聽聽聽聽 <value>.*methodTwo</value>
聽聽聽 </list>
聽 </property>
</bean>

<bean id="myBean" class="org.springframework.aop.framework.ProxyFactoryBean">
聽 <property name="target">
聽聽 <bean class="org.taha.beans.MyBean"/>
聽 </property>
聽 <property name="interceptorNames">
聽聽聽 <list>
聽聽聽聽聽 <value>methodCachePointCut</value>
聽聽聽 </list>
聽 </property>
</bean>

璇戞敞

濡傛灉浣犺緙撳瓨鐨勬柟娉曟槸 findXXX錛岄偅涔堟鍒欒〃杈懼紡搴旇榪欐牱鍐欙細鈥?*find.*鈥濄?br />
澶忔槙鎵钁椼?/span> Hibernate 寮鍙戞寚鍗椼嬶紝鍏朵腑浠栬繖鏍鋒弿榪?/span> EHCache 閰嶇疆鏂囦歡鐨勶細

<ehcache>
聽聽聽 <diskStore path="java.io.tmpdir"/>
聽聽聽 <defaultCache
聽聽聽聽聽聽聽 maxElementsInMemory="10000" //Cache涓渶澶у厑璁鎬繚瀛樼殑鏁版嵁鏁伴噺
聽聽聽聽聽聽聽 eternal="false"聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽//Cache涓暟鎹槸鍚︿負甯擱噺
聽聽聽聽聽聽聽 timeToIdleSeconds="120"聽聽聽聽 //緙撳瓨鏁版嵁閽濆寲鏃墮棿
聽聽聽聽聽聽聽 timeToLiveSeconds="120"聽聽聽聽 //緙撳瓨鏁版嵁鐨勭敓瀛樻椂闂?br />聽聽聽聽聽聽聽 overflowToDisk="true"聽聽聽聽聽聽 //鍐呭瓨涓嶈凍鏃訛紝鏄惁鍚敤紓佺洏緙撳瓨
聽聽聽 />
</ehcache>


璇鋒敞鎰忥紒寮曠敤銆佽漿璐存湰鏂囧簲娉ㄦ槑鍘熻瘧鑰咃細Rosen Jiang 浠ュ強鍑哄錛?/font>http://www.tkk7.com/rosen


聽聽聽聽 <!-- 聽EHCache聽 -->
聽聽聽聽
< bean聽 id ="cacheManager" 聽class ="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" >
聽聽聽聽聽聽聽聽
< property聽 name ="configLocation" >
聽聽聽聽聽聽聽聽聽聽聽聽
< value > classpath:ehcache.xml </ value >
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽
</ bean >
聽聽聽聽
聽聽聽聽
< bean聽 id ="methodCache" 聽class ="org.springframework.cache.ehcache.EhCacheFactoryBean" >
聽聽聽聽聽聽聽聽
< property聽 name ="cacheManager" >
聽聽聽聽聽聽聽聽聽聽聽聽
< ref聽 local ="cacheManager" />
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽聽聽聽聽
< property聽 name ="cacheName" >
聽聽聽聽聽聽聽聽聽聽聽聽
< value > org.taha.cache.METHOD_CACHE </ value >
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽
</ bean >
聽聽聽聽
聽聽聽聽
< bean聽 id ="methodCacheInterceptor" 聽class ="com.cdmcs.util.MethodCacheInterceptor" >
聽聽聽聽聽聽聽聽
< property聽 name ="cache" >
聽聽聽聽聽聽聽聽聽聽聽聽
< ref聽 local ="methodCache" />
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽
</ bean >
聽聽聽聽
聽聽聽聽
< bean聽 id ="cleanCacheAdvice" 聽class ="com.cdmcs.util.CleanCacheAdvice" >
聽聽聽聽聽聽聽聽
< property聽 name ="cache" >
聽聽聽聽聽聽聽聽聽聽聽聽
< ref聽 local ="methodCache" />
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽
</ bean >
聽聽聽聽
聽聽聽聽
< bean聽 id ="advicePointCut" 聽class ="org.springframework.aop.support.RegexpMethodPointcutAdvisor" >
聽聽聽聽聽聽聽聽
< property聽 name ="advice" >
聽聽聽聽聽聽聽聽聽聽聽聽
< ref聽 local ="cleanCacheAdvice" />
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽聽聽聽聽
< property聽 name ="patterns" >
聽聽聽聽聽聽聽聽聽聽聽聽
< list >
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
< value > .*save.* </ value >
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
< value > .*update.* </ value >
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
< value > .*delete.* </ value >
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
< value > .*valid.* </ value >
聽聽聽聽聽聽聽聽聽聽聽聽
</ list >
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽
</ bean >

聽聽聽聽
< bean聽 id ="methodCachePointCut" 聽class ="org.springframework.aop.support.RegexpMethodPointcutAdvisor" >
聽聽聽聽聽聽聽聽
< property聽 name ="advice" >
聽聽聽聽聽聽聽聽聽聽聽聽
< ref聽 local ="methodCacheInterceptor" />
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽聽聽聽聽
< property聽 name ="patterns" >
聽聽聽聽聽聽聽聽聽聽聽聽
< list >
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
< value > .*find.* </ value >
聽聽聽聽聽聽聽聽聽聽聽聽
</ list >
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽
</ bean >

聽聽聽
<!-- 聽EHCache聽End -->

聽聽聽聽
< bean聽 id ="supplyDemandService" 聽parent ="baseTransactionProxy" >
聽聽聽聽聽聽聽聽
< property聽 name ="target" >
聽聽聽聽聽聽聽聽聽聽聽聽
< bean聽 class ="com.cdmcs.webbuilder.service.impl.SupplyDemandServiceImpl" 聽autowire ="byName" />
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽聽聽聽聽
< property聽 name ="preInterceptors" >
聽聽聽聽聽聽聽聽
< list >
聽聽聽聽聽聽聽聽聽聽聽聽
< ref聽 bean ="methodCachePointCut" />
聽聽聽聽聽聽聽聽聽聽聽聽
< ref聽 bean ="advicePointCut" />
聽聽聽聽聽聽聽聽
</ list >
聽聽聽聽聽聽聽聽
</ property >
聽聽聽聽
</ bean >


Rosen 2005-08-12 09:41 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 精品亚洲国产成AV人片传媒| 亚洲av中文无码乱人伦在线咪咕| 亚洲av无码国产综合专区| 一区二区在线免费观看| 亚洲AV无码久久精品成人| 成人免费区一区二区三区| 亚洲色中文字幕无码AV| 中文字幕a∨在线乱码免费看 | 国产综合免费精品久久久| 国产亚洲老熟女视频| 中文在线免费不卡视频| 亚洲αv久久久噜噜噜噜噜| 久操免费在线观看| 亚洲午夜在线一区| 四虎成人免费观看在线网址| 另类图片亚洲校园小说区| 亚洲一区二区三区无码影院| 成人性生交大片免费看中文| 亚洲综合国产精品| 在线jyzzjyzz免费视频| 色吊丝性永久免费看码| 亚洲AV无码久久| 青青草免费在线视频| 在线播放国产不卡免费视频| 亚洲精品中文字幕无码蜜桃| 99精品视频免费在线观看| 自拍偷区亚洲国内自拍| 亚洲精品天堂成人片?V在线播放| 国产免费拔擦拔擦8X高清在线人| 亚洲成a人片在线观看播放| 国产男女猛烈无遮挡免费视频网站 | 在线A级毛片无码免费真人 | 精品久久亚洲中文无码| 国产大片线上免费看| 国产猛男猛女超爽免费视频| 亚洲综合成人婷婷五月网址| 亚洲综合色成在线播放| 嫖丰满老熟妇AAAA片免费看| 成年网站免费入口在线观看 | AV大片在线无码永久免费| 男性gay黄免费网站|