锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成熟丰满熟妇高潮XXXXX,亚洲视频在线一区二区,亚洲精品无AMM毛片http://m.tkk7.com/steady/category/23663.htmlzh-cnSun, 27 Feb 2011 18:40:13 GMTSun, 27 Feb 2011 18:40:13 GMT60IntelliJ IDEA 10.0 娉ㄥ唽鏈?娉ㄥ唽鐮?keygen/鐮磋В鐗?/title><link>http://m.tkk7.com/steady/archive/2010/12/18/341047.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Sat, 18 Dec 2010 01:56:00 GMT</pubDate><guid>http://m.tkk7.com/steady/archive/2010/12/18/341047.html</guid><wfw:comment>http://m.tkk7.com/steady/comments/341047.html</wfw:comment><comments>http://m.tkk7.com/steady/archive/2010/12/18/341047.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/steady/comments/commentRss/341047.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/steady/services/trackbacks/341047.html</trackback:ping><description><![CDATA[IntelliJ IDEA 10.0 鍙戝竷浜嗭紝鏀懼嚭 IntelliJ IDEA 10.0 鐨勬敞鍐屾満涓嬭澆銆?a target="_blank">鐐瑰嚮</a><font color="#002c99"><a ><font color="#002c99">涓嬭澆</font></a></font> <img src ="http://m.tkk7.com/steady/aggbug/341047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/steady/" target="_blank">steady</a> 2010-12-18 09:56 <a href="http://m.tkk7.com/steady/archive/2010/12/18/341047.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>jsp-api.jar 寮曞彂鐨勯〉闈㈢紪璇戦敊璇?/title><link>http://m.tkk7.com/steady/archive/2009/08/17/291523.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 17 Aug 2009 09:22:00 GMT</pubDate><guid>http://m.tkk7.com/steady/archive/2009/08/17/291523.html</guid><wfw:comment>http://m.tkk7.com/steady/comments/291523.html</wfw:comment><comments>http://m.tkk7.com/steady/archive/2009/08/17/291523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/steady/comments/commentRss/291523.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/steady/services/trackbacks/291523.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">銆銆涓轟簡緙栬瘧鏂逛究鎴戞妸 servlet-api.jar 鍜?jsp-api.jar 鍜屽叾浠?jar 鍖呴兘鏀懼湪涓璧鳳紝鍦?ant build 鐨勬椂鍊欏氨浼?xì)涓騫惰鎷峰埌 Web 欏圭洰鐨?WEB-INF/lib 涓嬶紝涓嶈繃榪欐鍥犳鍑虹幇浜嗕竴涓?jsp 欏甸潰鐨勭紪璇戦敊璇紝鎵鏈夌殑 jsp 欏甸潰鎵撳紑閮戒細(xì)鍦ㄩ〉闈笂鎶ョ紪璇戦敊璇紝鍚庡彴鏃犱換浣曚俊鎭傝冭檻鍒?jsp 欏甸潰鐨勭紪璇戝彲鑳藉拰 jsp-api.jar 鏈夊叧錛屼簬鏄皢 WEB-INF/lib 涓嬬殑 servlet-api.jar 鍜?jsp-api.jar 縐昏蛋錛岄棶棰樿В鍐熾?/span></p> <p><span style="font-size: 10pt">銆銆鍚庢潵鍙戠幇鏀懼湪閲岄潰鐨勮繖涓や釜鍖呮槸 tomcat5.5 鐨勶紝鏄?JSP 2.0 瑙勮寖鐨勶紝鑰岄儴緗茬殑鏈嶅姟鍣ㄦ槸 tomcat 6.0 鏄?JSP 2.1 瑙勮寖鐨勶紝涓よ呭彲鑳芥湁涓瀹氱殑鍐茬獊錛屾墠瀵艱嚧榪欐牱鐨勯敊璇?/span></p> <img src ="http://m.tkk7.com/steady/aggbug/291523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/steady/" target="_blank">steady</a> 2009-08-17 17:22 <a href="http://m.tkk7.com/steady/archive/2009/08/17/291523.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綆鍗曠殑鐜╀簡涓婤eanShellhttp://m.tkk7.com/steady/archive/2009/02/26/256741.htmlsteadysteadyThu, 26 Feb 2009 01:56:00 GMThttp://m.tkk7.com/steady/archive/2009/02/26/256741.htmlhttp://m.tkk7.com/steady/comments/256741.htmlhttp://m.tkk7.com/steady/archive/2009/02/26/256741.html#Feedback1http://m.tkk7.com/steady/comments/commentRss/256741.htmlhttp://m.tkk7.com/steady/services/trackbacks/256741.html銆銆涓轟簡瀹炵幇宸ヤ綔嫻佷腑瀵硅剼鏈殑鏀寔錛岀畝鍗曠殑鐜╀簡涓涓?BeanShell錛岃繖涓皬灝忕殑宓屽叆寮?Java 浠g爜瑙i噴鍣ㄥ彲浠ュ皢  Java 璇█鍍忓姩鎬佽剼鏈竴鏍鋒墽琛岋紝鍑犺鍛戒護(hù)錛屽畠?yōu)p兘鎶婁竴孌?Java 浠g爜緇欑帺杞?/span>

銆銆宸ヤ綔嫻佷腑鏈変釜榪欐牱鐨勭畝鍗曟渚嬶紝褰撲竴絎斿崟瀛愰噾棰濆ぇ浜?50涓囨椂錛屽簲璇ュ皢浠誨姟鍒嗛厤緇?Senior Agent 澶勭悊錛屽惁鍒欎氦緇?Junior Agent 澶勭悊錛屾垜浠敤 BeanShell 綆鍗曟ā鎷熻繖孌佃剼鏈?/span>

    public static void main(String[] args) throws Exception {
        Interpreter i = new Interpreter();
        i.set(”price”, 1000000);
        i.set(”user”, “”);
        i.eval(”if(price > 500000)\n” +
                “user = \”SeniorAgent\”;\n” +
                “else \n” +
                “user = \”JuniorAgent\”;”);
        System.out.println(i.get(”user”));
    } 

銆銆榪愯緇撴灉鏄墦鍗板嚭浜嗭細(xì)SeniorAgent

銆銆鍙互鐪嬪嚭錛孊eanShell 鐢ㄩ潪甯稿姩鎬佸寲鐨勬柟寮忥紝瀹屾垚浜嗘垜浠竴涓畝鍗曠殑妗堜緥鐨勫鐞嗭紝榪欓噷錛屾垜浠彧闇瑕佸皢闇瑕佽В鏋愮殑 Java 璇█鐨勮剼鏈氦緇?BeanShell 鐨?Interceptor錛屽茍鎶婅剼鏈腑鐢ㄥ埌鐨勫弬鏁板間紶鍏ワ紝灝卞彲浠ヤ簡錛屾渶鍚庯紝鎴戜滑鎶婅繍綆楃粨鏋滆祴緇欎竴涓彉閲忥紝鐒跺悗鑾峰彇鍙橀噺緇撴灉錛屽氨鍙互浜嗐?/span>

銆銆鐪嬪埌 Developer Works 緗戠珯涓婃湁涓綃?BeanShell 瀹炵幇鍏紡綆$悊鐨勬枃绔狅細(xì)http://www.ibm.com/developerworks/cn/java/l-formula/index.html錛屽彲浠ュ弬鑰冧竴涓嬨?br />
From:
http://www.steadyxp.com/archives/851.html



steady 2009-02-26 09:56 鍙戣〃璇勮
]]>
HttpClient榪炴帴鐨勫己鍒墮噴鏀?/title><link>http://m.tkk7.com/steady/archive/2009/02/23/256206.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 23 Feb 2009 05:49:00 GMT</pubDate><guid>http://m.tkk7.com/steady/archive/2009/02/23/256206.html</guid><wfw:comment>http://m.tkk7.com/steady/comments/256206.html</wfw:comment><comments>http://m.tkk7.com/steady/archive/2009/02/23/256206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/steady/comments/commentRss/256206.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/steady/services/trackbacks/256206.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>銆銆鏈嶅姟鍣ㄤ笂鐢?HttpClient 榪滅▼璋冪敤鍙︿竴鍙版湇鍔″櫒鐨勪竴浜涜祫婧愶紝浣嗘槸鐢?netstat 鏌ョ湅緇忓父鍑虹幇浜嗗緢澶氱殑 CLOSE_WAIT 鐨勮繛鎺ワ紝鏈鍚庤拷鏌ュ師鍥狅紝鏄洜涓?HttpClient 鐨?method.releaseConnection() 騫朵笉鏄己鍒墮噴鏀捐繛鎺ワ紝涓轟簡鍑忓皬榪炴帴鏁幫紝浣跨敤浜嗗涓嬭В鍐蟲柟妗堛傚湪 HttpClient 瀹屾垚璇鋒眰鍚庣殑 finally 鍧楅噷闈㈣繖涔堝啓銆?/span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>    } </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>finally</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'> {</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>           </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>if</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'> (method != </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>null</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>) {</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>              </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>try</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'> {</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>                  method.releaseConnection();</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>              } </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>catch</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'> (Exception e) {</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>                  </span><em><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #0000c0; font-family: "Courier New";'>logger</span></em><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>.error(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #2a00ff; font-family: "Courier New";'>"-------> Release HTTP connection exception:"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>, e);</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>              }</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>           }</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>           </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>if</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'> (client != </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>null</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>) {</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>              </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>try</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'> {</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>                  ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>              } </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>catch</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'> (Exception e) {</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>                  </span><em><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #0000c0; font-family: "Courier New";'>logger</span></em><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>.error(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #2a00ff; font-family: "Courier New";'>"-------> Close HTTP connection exception:"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>, e);</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>              }</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>              client = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'" mce_style='font-size: 10pt; color: #7f0055; font-family: "Courier New";'>null</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>;</span></p> <p style="margin: 0cm 0cm 0pt; text-align: left" align="left" mce_style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>           }</span></p> <p style="margin: 0cm 0cm 0pt" mce_style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 'Courier New'" mce_style='font-size: 10pt; color: black; font-family: "Courier New";'>       }</span></p> <br /> 鍘熸枃錛?a >http://www.steadyxp.com/archives/832.html</a> <img src ="http://m.tkk7.com/steady/aggbug/256206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/steady/" target="_blank">steady</a> 2009-02-23 13:49 <a href="http://m.tkk7.com/steady/archive/2009/02/23/256206.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>jBPM 鏁村悎 Drools(JBoss Rule) - 鏁村悎瑙掕壊鍒嗛厤http://m.tkk7.com/steady/archive/2008/09/05/227236.htmlsteadysteadyFri, 05 Sep 2008 07:29:00 GMThttp://m.tkk7.com/steady/archive/2008/09/05/227236.htmlhttp://m.tkk7.com/steady/comments/227236.htmlhttp://m.tkk7.com/steady/archive/2008/09/05/227236.html#Feedback0http://m.tkk7.com/steady/comments/commentRss/227236.htmlhttp://m.tkk7.com/steady/services/trackbacks/227236.html銆銆jBPM 鏄竴涓潪甯鎬紭縐鐨勫紑婧愬伐浣滄祦寮曟搸錛岃櫧鐒朵粬涓嶆槸涓涓竴绔欏紡鐨勫伐浣滄祦騫沖彴錛屼笉榪囧畠宸茬粡涓烘垜浠彁渚涗簡姣旇緝涓板瘜鐨勫簳灞傛搷浣滐紝涓轟簡婊¤凍鐗瑰畾鐨勯」鐩渶姹傦紝鎴戜滑涓鑸渶瑕佸鍏惰繘琛屼簩嬈″紑鍙戯紝鎵嶈兘閫傜敤浜庡叿浣撶殑涓氬姟闇姹傘?/span>

銆銆鍏朵腑涓涓富瑕佺殑鎵╁睍鐐規(guī)槸閽堝 TaskNode 榪涜鐨勭敤鎴風(fēng)殑鍒嗛厤銆俆askNode 鏄?jBPM 涓竴涓潪甯擱噸瑕佺殑姒傚康錛屼竴涓換鍔¤妭鐐瑰彲浠ュ寘鍚嫢騫蹭釜浠誨姟錛屼笉鍚岀殑浠誨姟鍙互鐢變笉鍚岀殑浜烘潵瀹屾垚錛屼換鍔″疄渚嬭鍒嗛厤緇?actorId 鏉ュ畬鎴愶紝鍏朵腑鎸囧畾鍒頒漢鐨勫垎閰嶅伐浣滃氨鏄?Assignment 瑕佸鐞嗙殑錛岃繖涔熸槸鎴戜滑闇瑕佸畾鍒剁殑鍔熻兘錛屼負(fù)浜嗗疄鐜扮敤鎴風(fēng)殑鍒嗛厤錛屾垜浠渶瑕佸疄鐜?AssignmentHandler 鎺ュ彛錛屾帴鍙e師鍨嬪涓嬨?/span>

public interface AssignmentHandler extends Serializable {    
    void assign(Assignable assignable, ExecutionContext executionContext) throws Exception;
}

銆銆閫氬父鐢ㄤ唬鐮佸疄鐜扮殑璇濓紝鎴戜滑鍙互璁╀竴涓被瀹炵幇榪欎釜鎺ュ彛錛屽茍鍦?swimlane 鎴栬?tasknode 涓殑 assignment 鎸囧畾璇ョ被銆備絾鏄紝榪欐牱鐨勭伒媧繪ф槸鏄劇劧涓嶅鐨勶紝鍦ㄧ郴緇熺殑浣跨敤榪囩▼涓紝鍒嗛厤絳栫暐浼?xì)涓嶆柇鐨剺q涜璋冩暣錛屽洜姝ゆ垜浠渶瑕佹洿涓虹伒媧葷殑瑙e喅鏂規(guī)錛宩BPM 鏈韓鍙互浣跨敤鍩轟簬 Bean Shell 鐨勮剼鏈潵鍐欏垎閰嶇瓥鐣ワ紝浣嗘槸 Bean Shell 涓嶆槸閭d箞寮哄ぇ錛屾垜浠渶瑕佹洿涓哄己澶х殑瑙e喅鏂規(guī)錛屽洜姝わ紝鎴戜滑閫夌敤浜嗗凡緇忚 JBoss 鏀朵負(fù)鏃椾笅鐨?JBoss Drools 4.0 瑙勫垯寮曟搸 (鍦?3.0 鐨勬椂鍊欐浘緇忔敼鍚嶄負(fù) JBoss Rules錛?.0 鍙堟敼鍥炴潵浜?

銆銆瀹屾暣鐗堟湰璇鋒煡鐪嬶細(xì)http://www.steadyxp.com/archives/120.html



steady 2008-09-05 15:29 鍙戣〃璇勮
]]>
紱佺敤JavaWeb搴旂敤涓璘RL涓婂寘鍚殑jsessionidhttp://m.tkk7.com/steady/archive/2007/09/08/143664.htmlsteadysteadySat, 08 Sep 2007 12:13:00 GMThttp://m.tkk7.com/steady/archive/2007/09/08/143664.htmlhttp://m.tkk7.com/steady/comments/143664.htmlhttp://m.tkk7.com/steady/archive/2007/09/08/143664.html#Feedback4http://m.tkk7.com/steady/comments/commentRss/143664.htmlhttp://m.tkk7.com/steady/services/trackbacks/143664.htmlJava Web 搴旂敤浼間箮鎬繪湁榪欐牱鐨勬儏鍐碉紝鏈変簨娌′簨鎬繪槸瑕佸湪 URL 鍚庨潰鍔犱笂涓?jsessionid錛岃屼笖浼間箮涓嶈兘浣跨敤閰嶇疆鐨勬柟寮忕洿鎺ョ鐢?URL 浼犻?sessionid錛岃繖鏍鳳紝灝辨瘮杈冨鏄撻犳垚瀹夊叏鎬х殑闂錛屾垨鑰呭湪嫻忚鍣ㄥ湴鍧鏍忛噷鐣欎笅涓鍫嗗緢涓嶅ソ鐪嬬殑鍦板潃錛屽湪 Struts2 涓紝浣跨敤浜?url 鏍囩鐨勬墍鏈?a style="color: #8ab037" target="_blank">閾炬帴錛岀敋鑷?CSS, JS 榪欐牱鐨勪笢瑗匡紝閮戒細(xì)鍔犱笂 jsessionid錛屽浣曞幓紱佺敤鍛紝鎼滅儲(chǔ)鍥藉唴鐨勭浉鍏蟲枃绔狅紝鏃犲姛鑰岃繑錛岃闂垜浠繃鍘葷殑鏋舵瀯甯堬紝涔熸病鏈夊仛榪囷紝鍙ソ鎯沖姙娉曞幓鎵懼浗澶栫殑緗戠珯錛屾壘鍒頒簡榪欐牱鐨勪竴綃囨枃绔犮?br />
http://randomcoder.com/articles/jsessionid-considered-harmful

閫氳繃鍔犲叆 Filter 鐨勬柟寮忚繃婊ゆ帀 URL 涓寘鍚殑 jsessionid錛屽啀閲嶆柊鍖呰 Response 榪斿洖緇欐祻瑙堝櫒銆?br />
鍥犱負(fù)娌℃湁澶涓滆タ錛屽氨涓嶅瑙i噴浜嗭紝澶у鎷夸簡鐢ㄥ氨鍙互浜嗐?br />
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * Servlet filter which disables URL-encoded session identifiers.
 * <p/>
 * <pre>
 * Copyright (c) 2006, Craig Condit. All rights reserved.
 * <p/>
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * <p/>
 *   * Redistributions of source code must retain the above copyright notice,
 *     this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above copyright notice,
 *     this list of conditions and the following disclaimer in the documentation
 *     and/or other materials provided with the distribution.
 * <p/>
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * </pre>
 
*/
@SuppressWarnings(
"deprecation")
public class DisableUrlSessionFilter implements Filter {

    
/**
     * Filters requests to disable URL-based session identifiers.
     
*/
    
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        
// skip non-http requests
        if (!(request instanceof HttpServletRequest)) {
            chain.doFilter(request, response);
            
return;
        }

        HttpServletRequest httpRequest 
= (HttpServletRequest) request;
        HttpServletResponse httpResponse 
= (HttpServletResponse) response;

        
// clear session if session id in URL
        if (httpRequest.isRequestedSessionIdFromURL()) {
            HttpSession session 
= httpRequest.getSession();
            
if (session != null) session.invalidate();
        }

        
// wrap response to remove URL encoding
        HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(httpResponse) {
            @Override
            
public String encodeRedirectUrl(String url) {
                
return url;
            }

            @Override
            
public String encodeRedirectURL(String url) {
                
return url;
            }

            @Override
            
public String encodeUrl(String url) {
                
return url;
            }

            @Override
            
public String encodeURL(String url) {
                
return url;
            }
        };

        
// process next request in chain
        chain.doFilter(request, wrappedResponse);
    }

    
/**
     * Unused.
     
*/
    
public void init(FilterConfig config) throws ServletException {
    }

    
/**
     * Unused.
     
*/
    
public void destroy() {
    }

-------------------------------------------------------------------------------------------------
欏轟究鍋氫釜灝?a style="color: #8ab037" target="_blank">騫垮憡 閾懼涓浗 www.linkedcast.cn 涓婄嚎榪愯錛屾榪庡箍澶?Blogger 浣跨敤
閾懼涓浗錛屽啓鏂囩珷涔熷彲浠ヨ禋閽卞摝

steady 2007-09-08 20:13 鍙戣〃璇勮
]]>
Struts2 鏁村悎 Discuz 璁哄潧 (1)http://m.tkk7.com/steady/archive/2007/08/11/136046.htmlsteadysteadySat, 11 Aug 2007 09:30:00 GMThttp://m.tkk7.com/steady/archive/2007/08/11/136046.htmlhttp://m.tkk7.com/steady/comments/136046.htmlhttp://m.tkk7.com/steady/archive/2007/08/11/136046.html#Feedback2http://m.tkk7.com/steady/comments/commentRss/136046.htmlhttp://m.tkk7.com/steady/services/trackbacks/136046.html鍥犱負(fù)鏈変竴涓?Struts2 緗戠珯鍙戝竷錛岄渶瑕佹暣鍚堜竴涓鍧涙潵浣跨敤錛屽叕鍙哥殑涓涓」鐩繃鍘繪浘緇忔暣鍚堣繃涓涓嫳鏂囪鍧涳紝浣嗕技涔庝笉鑳芥弧瓚蟲垜浠殑闇姹傦紝闇瑕佹壘涓涓垚鐔熺ǔ瀹氱殑涓枃璁哄潧錛屼笌鎴戜滑鐨勭郴緇熺粨鍚堛?br>
鏈緇堥夋嫨浜?Discuz 浣滀負(fù)鎴戜滑鐨勮鍧涚郴緇燂紝涓昏鏄洜涓哄畠鎻愪緵浜嗕竴濂楀彲鐢ㄧ殑 Passport API錛屾潵鐩存帴涓庢垜浠幇鏈夌郴緇熻繘琛屾暣鍚堛?br>
涓嬮潰鎽樺綍 Discuz 鏂囨。涓殑鍐呭鏉ヨ鏄庢暣鍚堝師鐞嗭紝闅忓悗鐨勫嚑綃囦腑錛屽皢璇︾粏鎻忚堪鍏蜂綋鐨勬暣鍚堣繃紼嬨?br>

鍋囪宸茶緗涓嬪彉閲忔垨鍙傛暟

  • 鎸傛帴 Discuz! Passport 鐨勫簲鐢ㄧ▼搴忓亣璁句負(fù)涓濂?PHP 璇█緙栧啓鐨?CMS 緋葷粺
  • Discuz! 鐨?URL 涓?http://www.myforums.com
  • 搴旂敤紼嬪簭鐨?URL 涓?http://www.mywebsite.com
  • 搴旂敤紼嬪簭鐨勬敞鍐岄〉闈負(fù) http://www.mywebsite.com/register.php
  • 搴旂敤紼嬪簭鐨勭櫥褰曢〉闈負(fù) http://www.mywebsite.com/login.php?action=login
  • 搴旂敤紼嬪簭鐨勯鍑洪〉闈負(fù) http://www.mywebsite.com/login.php?action=logout

寮鍚氳璇佸悗鐨勭敤鎴風(fēng)櫥褰曟祦紼?

  • 濡傛灉鐢ㄦ埛鍦ㄨ鍧涚偣鍑?#8220;鐧誨綍”錛屽垯杞悜鍒頒簨鍏堣緗ソ鐨勫簲鐢ㄧ▼搴忕櫥褰曢〉闈紙http://www.mywebsite.com/login.php?action=login錛夛紝騫跺湪鐧誨綍欏甸潰鐨?URL 涓姞鍏ュ弬鏁?forward錛堝姞鍏?forward 鍚庣殑閾炬帴渚嬪 http://www.mywebsite.com/login.php?action=login&forward=http://www.myforums.com/index.php錛夛紝鐢ㄤ簬鍦ㄧ櫥褰曞悗灝嗙敤鎴峰鍚戝埌鎸囧畾鐨?URL銆?br>
  • 搴旂敤紼嬪簭鏀跺埌姝よ姹傚悗錛屾寜鐓ф儻渚嬬敓鎴愯〃鍗曪紝騫?u>澧炲姞涓涓〃鍗曞彉閲忥紝灝?GET 鏂瑰紡浼犻掕繃鏉ョ殑 forward 鍙傛暟閫氳繃琛ㄥ崟榪涜浼犻掋?/u>

  • 鐢ㄦ埛鍦ㄥ簲鐢ㄧ▼搴忕殑琛ㄥ崟涓~鍐欑櫥褰曚俊鎭紝騫舵彁浜ゅ埌搴旂敤紼嬪簭鐨勭櫥褰曢獙璇佺▼搴忋傚簲鐢ㄧ▼搴忛獙璇佺敤鎴鋒彁浜ょ殑鐢ㄦ埛鍚嶅拰瀵嗙爜鐨勫悎娉曟э細(xì)

    • 濡傛灉涓嶉氳繃錛氭彁紺虹敤鎴峰悕瀵嗙爜閿欒錛岃姹傚叾榪斿洖涓婁竴欏甸噸鏂板~鍐欍?br>
    • 濡傛灉閫氳繃錛岄渶瑕佽繘琛屽涓嬫搷浣滐細(xì)

      • 璁劇疆鑷韓 Cookie 鎴?Session錛屼嬌寰楀簲鐢ㄧ▼搴忚嚜韜浜庣櫥褰曠姸鎬併?br>
      • 媯(gè)鏌ヨ〃鍗曚腑鏄惁鎻愪氦浜?forward 鍙橀噺錛屽鏈夛紝鍒欐剰鍛崇潃鐧誨綍璇鋒眰鍙兘鏄敱璁哄潧鑰屾潵錛屽皢姝ゅ彉閲忎紶閫掑埌鍚庨潰鐨勮姹備腑銆傚娌℃湁錛岃嚜琛岀敓鎴?forward 鍙橀噺錛屼嬌寰楄鍧涚櫥褰曞悗鑳藉璺寵漿鍥炲埌搴旂敤紼嬪簭涓?/u>

      • 閫氳繃 header('Location: http://www.myforums.com/api/passport.php?action=login&auth=xxx&forward=http://yyy&verify=zzz') 鐨勬柟寮忥紝灝嗙櫥褰曡姹備紶閫掑埌璁哄潧榪涜澶勭悊銆傚叾涓?auth 鐢ㄦ潵灝嗙敤鎴蜂俊鎭笌璧勬枡浠ョ壒瀹氱殑鏍煎紡錛屽姞瀵嗕紶閫掔粰璁哄潧錛宖orward 鐢ㄤ簬鍛婄煡璁哄潧 Passport API 瀹屾垚鑷韓鎿嶄綔鍚庤漿鍚戝埌鐨?URL 鍦板潃錛寁erify 鐢ㄤ簬楠岃瘉鍓嶉潰涓や釜鍙橀噺鐨勬湁鏁堟с俛uth銆乫orward銆乿erify 鏍煎紡涓庣粨鏋勫皢鍦ㄥ悗闈㈣繘琛岃鏄庛?/u>


  • Discuz! Passport API 鍦ㄦ帴鏀跺埌鐢卞簲鐢ㄧ▼搴忛氳繃 header() 鎻愪氦榪囨潵鐨勮姹傚悗錛岃繘琛屽涓嬫搷浣滐細(xì)

    • 鏍規(guī)嵁 verify 鍒ゆ柇 auth 鍜?forward 鍙橀噺鏄惁鍚堟硶錛屽鍚堟硶鍒欑戶緇紝鍚﹀垯緇堟銆?br>
    • 灝?auth 鏍規(guī)嵁鏃㈠畾綆楁硶瑙e瘑錛屽茍榪樺師鎴愭暟緇勶紝鏁扮粍鐨勫唴瀹逛笌鏍煎紡灝嗗湪鍚庨潰榪涜璇存槑銆傛牴鎹暟緇勪腑鐨勫唴瀹癸紝媯(gè)鏌ユ鐢ㄦ埛鏄惁瀛樺湪銆傚瀛樺湪錛屽垯鏍規(guī)嵁涓婅堪鏁扮粍涓殑鍐呭 UPDATE 璁哄潧涓浉搴旂殑鐢ㄦ埛璧勬枡銆傚涓嶅瓨鍦紝鍒欎嬌鐢ㄦ暟緇勪腑鐨勪俊鎭?INSERT 鍒拌鍧涚敤鎴瘋祫鏂欒〃涓?br>
    • 璁哄潧璁劇疆 Cookie 鎴?Session錛屼嬌寰楄鍧涜嚜韜浜庣櫥褰曠姸鎬併?br>
    • 鏍規(guī)嵁搴旂敤紼嬪簭鍙嶉鐨?forward 鍊鹼紝閫氳繃 header('Location: http://xxx') 鐨勫艦寮忓皢欏甸潰璺寵漿鍒?forward 鍙橀噺鎸囧畾鐨?URL銆?/li>


  • 鑷蟲錛岀櫥褰曟祦紼嬬粨鏉?/li>

寮鍚氳璇佸悗鐨勭敤鎴烽鍑烘祦紼?

  • 濡傛灉鐢ㄦ埛鍦ㄨ鍧涚偣鍑?#8220;閫鍑?#8221;錛屽垯杞悜鍒頒簨鍏堣緗ソ鐨勫簲鐢ㄧ▼搴忛鍑洪〉闈紙http://www.mywebsite.com/login.php?action=logout錛夛紝騫跺湪鐧誨綍欏甸潰鐨?URL 涓姞鍏ュ弬鏁?forward錛堜緥濡?http://www.mywebsite.com/login.php?action=login&forward=http://www.myforums.com/index.php錛夛紝鐢ㄤ簬鍦ㄩ鍑哄悗灝嗙敤鎴峰鍚戝埌鎸囧畾鐨?URL銆?br>
  • 搴旂敤紼嬪簭鏀跺埌姝よ姹傚悗錛屾竻闄よ嚜韜?Cookie 鎴?Session錛屼嬌寰楀簲鐢ㄧ▼搴忚嚜韜浜庨潪鐧誨綍鐘舵併?br>
  • 媯(gè)鏌ユ槸鍚︽彁浜や簡 forward 鍙橀噺錛屽鏈夛紝鍒欐剰鍛崇潃鐧誨綍璇鋒眰鍙兘鏄敱璁哄潧鑰屾潵錛屽皢姝ゅ彉閲忎紶閫掑埌鍚庨潰鐨勮姹備腑銆傚娌℃湁錛岃嚜琛岀敓鎴?forward 鍙橀噺錛屼嬌寰楄鍧涚櫥褰曞悗鑳藉璺寵漿鍥炲埌搴旂敤紼嬪簭涓?/u>銆?br>
  • 閫氳繃 header('Location: http://www.myforums.com/api/passport.php?action=logout&forward=http://yyy&verify=zzz') 鐨勬柟寮忥紝灝嗛鍑鴻姹備紶閫掑埌璁哄潧榪涜澶勭悊銆傚叾涓?forward 鐢ㄤ簬鍛婄煡璁哄潧 Passport API 瀹屾垚鑷韓鎿嶄綔鍚庤漿鍚戝埌鐨?URL 鍦板潃錛寁erify 鐢ㄤ簬楠岃瘉 forward 鍙橀噺鐨勬湁鏁堟с俧orward銆乿erify 鏍煎紡涓庣粨鏋勫皢鍦ㄥ悗闈㈣繘琛岃鏄?/u>銆?br>
  • Discuz! Passport API 鍦ㄦ帴鏀跺埌鐢卞簲鐢ㄧ▼搴忛氳繃 header() 鎻愪氦榪囨潵鐨勮姹傚悗錛岃繘琛屽涓嬫搷浣滐細(xì)

    • 鏍規(guī)嵁 verify 鍒ゆ柇 forward 鍙橀噺鏄惁鍚堟硶錛屽鍚堟硶鍒欑戶緇紝鍚﹀垯緇堟銆?br>
    • 娓呮璁哄潧鐨?Cookie 鎴?Session錛屼嬌寰楄鍧涜嚜韜浜庨潪鐧誨綍鐘舵併?br>
    • 鏍規(guī)嵁搴旂敤紼嬪簭鍙嶉鐨?forward 鍊鹼紝閫氳繃 header('Location: http://xxx') 鐨勫艦寮忓皢欏甸潰璺寵漿鍒?forward 鍙橀噺鎸囧畾鐨?URL銆?/li>


  • 鑷蟲錛岄鍑烘祦紼嬬粨鏉熴?/li>

寮鍚氳璇佸悗鐨勭敤鎴鋒敞鍐屾祦紼?

  • 濡傛灉鐢ㄦ埛鍦ㄨ鍧涚偣鍑?#8220;娉ㄥ唽”錛屽垯杞悜鍒頒簨鍏堣緗ソ鐨勫簲鐢ㄧ▼搴忔敞鍐岄〉闈紙http://www.mywebsite.com/register.php錛夛紝騫跺湪娉ㄥ唽欏甸潰鐨?URL 涓姞鍏ュ弬鏁?forward錛堜緥濡?http://www.mywebsite.com/register.php?forward=http://www.myforums.com/index.php錛夛紝鐢ㄤ簬鍦ㄦ敞鍐屽悗灝嗙敤鎴峰鍚戝埌鎸囧畾鐨?URL

  • 搴旂敤紼嬪簭鏀跺埌姝よ姹傚悗錛屾寜鐓ф儻渚嬬敓鎴愯〃鍗曪紝騫?u>澧炲姞涓涓〃鍗曞彉閲忥紝灝?GET 鏂瑰紡浼犻掕繃鏉ョ殑 forward 鍙傛暟閫氳繃琛ㄥ崟榪涜浼犻?/u>

  • 鐢ㄦ埛鍦ㄥ簲鐢ㄧ▼搴忕殑琛ㄥ崟涓~鍐欐敞鍐屼俊鎭紝騫舵彁浜ゅ埌搴旂敤紼嬪簭鐨勬敞鍐岄獙璇佺▼搴忋傚簲鐢ㄧ▼搴忛獙璇佺敤鎴鋒彁浜や俊鎭殑瀹屾暣鎬у拰鍚堟硶鎬э細(xì)

    • 濡傛灉涓嶉氳繃錛氭彁紺哄叾闂鎵鍦紝瑕佹眰鍏惰繑鍥炰笂涓欏甸噸鏂板~鍐?br>
    • 濡傛灉閫氳繃錛岄渶瑕佽繘琛屽涓嬫搷浣滐細(xì)

      • 灝嗙敤鎴瘋祫鏂欐彃鍏ュ埌搴旂敤紼嬪簭鑷韓鐢ㄦ埛鏁版嵁搴撲腑

      • 璁劇疆鑷韓 Cookie 鎴?Session錛屼嬌寰楀簲鐢ㄧ▼搴忚嚜韜浜庣櫥褰曠姸鎬?br>
      • 媯(gè)鏌ヨ〃鍗曚腑鏄惁鎻愪氦浜?forward 鍙橀噺錛屽鏈夛紝鍒欐剰鍛崇潃娉ㄥ唽璇鋒眰鍙兘鏄敱璁哄潧鑰屾潵錛屽皢姝ゅ彉閲忎紶閫掑埌鍚庨潰鐨勮姹備腑銆傚娌℃湁錛岃嚜琛岀敓鎴?forward 鍙橀噺錛屼嬌寰楄鍧涙敞鍐屽悗鑳藉璺寵漿鍥炲埌搴旂敤紼嬪簭涓?/u>

      • 閫氳繃 header('Location: http://www.myforums.com/api/passport.php?action=login&auth=xxx&forward=http://yyy&verify=zzz') 鐨勬柟寮忥紝灝嗘敞鍐岃姹備紶閫掑埌璁哄潧榪涜澶勭悊銆傚叾涓?auth 鐢ㄦ潵灝嗙敤鎴蜂俊鎭笌璧勬枡浠ョ壒瀹氱殑鏍煎紡錛屽姞瀵嗕紶閫掔粰璁哄潧錛宖orward 鐢ㄤ簬鍛婄煡璁哄潧 Passport API 瀹屾垚鑷韓鎿嶄綔鍚庤漿鍚戝埌鐨?URL 鍦板潃錛寁erify 鐢ㄤ簬楠岃瘉鍓嶉潰涓や釜鍙橀噺鐨勬湁鏁堟с俛uth銆乫orward銆乿erify 鏍煎紡涓庣粨鏋勫皢鍦ㄥ悗闈㈣繘琛岃鏄?/u>


  • Discuz! Passport API 鍦ㄦ帴鏀跺埌鐢卞簲鐢ㄧ▼搴忛氳繃 header() 鎻愪氦榪囨潵鐨勮姹傚悗錛岃繘琛屽涓嬫搷浣滐細(xì)

    • 鏍規(guī)嵁 verify 鍒ゆ柇 auth 鍜?forward 鍙橀噺鏄惁鍚堟硶錛屽鍚堟硶鍒欑戶緇紝鍚﹀垯緇堟

    • 灝?auth 鏍規(guī)嵁鏃㈠畾綆楁硶瑙e瘑錛屽茍榪樺師鎴愭暟緇勶紝鏁扮粍鐨勫唴瀹逛笌鏍煎紡灝嗗湪鍚庨潰榪涜璇存槑銆傛牴鎹暟緇勪腑鐨勫唴瀹癸紝媯(gè)鏌ユ鐢ㄦ埛鏄惁瀛樺湪銆傚瀛樺湪錛屽垯鏍規(guī)嵁涓婅堪鏁扮粍涓殑鍐呭 UPDATE 璁哄潧涓浉搴旂殑鐢ㄦ埛璧勬枡銆傚涓嶅瓨鍦紝鍒欎嬌鐢ㄦ暟緇勪腑鐨勪俊鎭?INSERT 鍒拌鍧涚敤鎴瘋祫鏂欒〃涓?br>
    • 璁哄潧璁劇疆 Cookie 鎴?Session錛屼嬌寰楄鍧涜嚜韜浜庣櫥褰曠姸鎬?br>
    • 鏍規(guī)嵁搴旂敤紼嬪簭鍙嶉鐨?forward 鍊鹼紝閫氳繃 header('Location: http://xxx') 鐨勫艦寮忓皢欏甸潰璺寵漿鍒?forward 鍙橀噺鎸囧畾鐨?URL


  • 鑷蟲錛屾敞鍐屾祦紼嬬粨鏉?

    鏈儴鍒嗕腑錛屽姞涓嬪垝綰挎樉紺虹殑閮ㄥ垎錛屾槸闇瑕佸鎮(zhèn)ㄧ殑搴旂敤紼嬪簭榪涜鏇存敼鐨勯儴鍒嗭紝浜嬪疄涓婏紝榪欓儴鍒嗘洿鏀逛細(xì)闈炲父瀹規(guī)槗鍜屾柟渚褲?/strong>



steady 2007-08-11 17:30 鍙戣〃璇勮
]]>
Quartz 欏圭洰搴旂敤絎旇-琛ュ厖http://m.tkk7.com/steady/archive/2007/08/03/134149.htmlsteadysteadyFri, 03 Aug 2007 01:00:00 GMThttp://m.tkk7.com/steady/archive/2007/08/03/134149.htmlhttp://m.tkk7.com/steady/comments/134149.htmlhttp://m.tkk7.com/steady/archive/2007/08/03/134149.html#Feedback4http://m.tkk7.com/steady/comments/commentRss/134149.htmlhttp://m.tkk7.com/steady/services/trackbacks/134149.htmlReschedule
rescheduleJob(String triggerName, String groupName, Trigger newTrigger)

鍦ㄨ繘琛?reschedule 鎿嶄綔鐨勬椂鍊欙紝鎴戜滑閫氬父鍙渶瑕佷慨鏀?Trigger 鐨勬椂闂達(dá)紝榪欐椂鍊欐垜浠彧闇瑕侀噸鏂?new 涓涓惈鏈夋柊鐨?Schedule 鏃墮棿鐨?Trigger 瀵硅薄錛宺eschedule 涓涓嬪氨鍙互浜嗐?/p>

Unschedule
unscheduleJob(String triggerName, String groupName)

榪涜 unschedule 鐨勬椂鍊欙紝鎴戜滑鍙渶瑕佺煡閬撳悕瀛楀拰 group 灝卞彲浠ヤ簡銆?/p>

榪涜 Schedule 鎿嶄綔鍓嶅悗錛孌atabase 涓殑鐩稿叧鏁版嵁閮戒細(xì)琚洿鏀癸紝鍦ㄦ墽琛?unschedule 鎴栬呰 schedule 宸茬粡鎵ц榪囷紝鏁版嵁搴撲腑鐨?trigger 淇℃伅閮戒細(xì)琚垹闄ゃ?/p>

steady 2007-08-03 09:00 鍙戣〃璇勮
]]>
Quartz 欏圭洰搴旂敤絎旇http://m.tkk7.com/steady/archive/2007/08/02/134017.htmlsteadysteadyThu, 02 Aug 2007 08:28:00 GMThttp://m.tkk7.com/steady/archive/2007/08/02/134017.htmlhttp://m.tkk7.com/steady/comments/134017.htmlhttp://m.tkk7.com/steady/archive/2007/08/02/134017.html#Feedback4http://m.tkk7.com/steady/comments/commentRss/134017.htmlhttp://m.tkk7.com/steady/services/trackbacks/134017.htmlQuartz 鏄竴涓己澶х殑浼佷笟綰?Schedule 宸ュ叿錛屼篃鏄洰鍓嶆渶濂界殑寮婧?/font> Schedule 宸ュ叿錛屾渶榪戝洜涓洪」鐩殑闇瑕侊紝綆鍗曠殑鐢ㄥ埌浜?Quartz 鐨勪竴浜涘姛鑳斤紝瀵歸」鐩腑浣跨敤 Quartz 鐨勪竴浜涢棶棰樺仛綆鍗曠殑璁板綍銆?/p>

鍦?Quartz 鐨勫簲鐢ㄤ腑錛屾垜浠敤鍒頒簡浠ヤ笅鐨勪竴浜涗笢瑗匡紝ScheduleFactory, Scheduler, Job, JobDetail, Trigger錛岀畝鍗曡鏄庝竴涓嬩粬浠殑鐢ㄩ斻?/p>

SchedulerFactory 鏄?Scheduler 鐨勫伐鍘傦紝鎴戜滑鍙互浠庝腑鑾峰緱鍙楀伐鍘傜鐞嗙殑 Scheduler 瀵硅薄銆?br>
SchedulerFactory scheduleFactory = new StdSchedulerFactory();
Scheduler scheduler = scheduleFactory.getScheduler();

Scheduler 鏄竴涓鍒掗泦錛屽叾涓彲浠ュ寘鍚涓?JobDetail 鍜?Trigger 緇勬垚鐨勮鍒掍換鍔°?br>鎴戜滑鍙互浠?SchedulerFactory 涓彇寰?Scheduler銆?/p>

鎺ュ彛Job鏄瘡涓笟鍔′笂闇瑕佹墽琛岀殑浠誨姟闇瑕佸疄鐜扮殑鎺ュ彛錛岃鎺ュ彛鍙湁涓涓柟娉曪細(xì)

public interface Job {
    public void execute(JobExecutionContext context)
        throws JobExecutionException;
}

鎴戜滑鍙互鍦ㄩ噷闈㈠畾涔夋垜浠殑 Job 鎵ц閫昏緫錛屾瘮濡傛竻闄よ繃鏈熸暟鎹紝鏇存柊緙撳瓨絳夈?/p>

JobDetail鎻忚堪浜嗕竴涓換鍔″叿浣撶殑淇℃伅錛屾瘮濡傚悕縐幫紝緇勫悕絳夌瓑銆?br>JobDetail jobDetail = new JobDetail("SayHelloWorldJob", Scheduler.DEFAULT_GROUP, SayHelloWorldJob.class);
鍦ㄤ笂闈㈢殑鏋勯犳柟娉曚腑錛岀涓涓槸浠誨姟鐨勫悕縐幫紝絎簩涓槸緇勫悕錛岀涓変釜灝辨槸瀹為檯褰撲換鍔¢渶瑕佹墽琛岀殑鍥炶皟綾匯?/p>

Trigger欏懼悕鎬濅箟灝辨槸瑙﹀彂鍣紝Quartz鏈変釜寰堝ソ鐨勬兂娉曞氨鏄垎紱諱簡浠誨姟鍜屼換鍔℃墽琛岀殑鏉′歡銆俆rigger灝辨槸鎺у埗浠誨姟鎵ц鏉′歡鐨勭被錛屽綋Trigger璁や負(fù)鎵ц鏉′歡婊¤凍鐨勬椂鍒伙紝Trigger浼?xì)閫氱煡鐩稿叧鐨凧ob鍘繪墽琛屻傚垎紱葷殑濂藉鏄細(xì)
1.浣犲彲浠ヤ負(fù)鏌愪釜Job鍏寵仈澶氫釜Trigger錛屽叾涓換浣曚竴涓潯浠舵弧瓚抽兘鍙互瑙﹀彂job鎵ц錛岃繖鏍峰彲浠ュ畬鎴愪竴浜涚粍鍚堢殑楂樼駭瑙﹀彂鏉′歡
2.褰揟rigger澶辨晥鍚庯紙姣斿錛氫竴涓案榪滈兘涓嶈兘婊¤凍鐨勬潯浠訛級錛屼綘涓嶅繀鍘誨0鏄庝竴涓柊鐨刯ob錛屼唬鏇跨殑鏄綘鍙互涓簀ob鍏寵仈涓涓柊鐨凾rigger璁﹋ob鍙互緇х畫鎵ц銆?/p>

鐩墠鐨凲uartz瀹炵幇涓紝瀛樺湪涓ょTrigger,SimpleTrigger鍜孋ronTrigger,SimpleTrigger鐢ㄦ潵瀹屾垚涓浜涙瘮濡傚浐瀹氭椂闂存墽琛岀殑浠誨姟錛屾瘮濡傦細(xì)浠庣幇鍦ㄥ紑濮?鍒嗛挓鍚庣瓑絳夛紱鑰孋ronTrigger(娌¢敊錛屽拰unix鐨刢ron榪涚▼鐨勫惈鎰忎竴鏍?鐢ㄦ潵鎵цcalendar-like鐨勪換鍔★紝姣斿錛氭瘡鍛ㄤ簲涓嬪崍3錛?0錛屾瘡鏈堟渶鍚庝竴澶╃瓑絳夈?/p>

鍦ㄦ垜浠」鐩腑錛岄兘鏄竴浜涘浐瀹氭椂闂寸殑 Job錛屾墍浠ュ彧鐢ㄥ埌浜?SimpleTrigger銆?br>Trigger trigger = new SimpleTrigger("SayHelloWorldJobTrigger",Scheduler.DEFAULT_GROUP,new Date(),null,0,0L);
榪欎釜鏋勯犳柟娉曚腑錛岀涓涓槸Trigger鐨勫悕縐幫紝絎簩涓槸Trigger鐨勭粍鍚嶏紝絎笁涓槸浠誨姟寮濮嬫椂闂達(dá)紝絎洓涓槸緇撴潫鏃墮棿錛岀浜斾釜鏄噸澶嶆鏁幫紙浣跨敤SimpleTrigger.REPEAT_INDEFINITELY甯擱噺琛ㄧず鏃犻檺嬈★級錛屾渶鍚庝竴涓槸閲嶅鍛ㄦ湡錛堝崟浣嶆槸姣錛夛紝閭d箞榪欐牱灝卞垱寤轟簡涓涓珛鍒誨茍鍙墽琛屼竴嬈$殑浠誨姟銆?/p>

浣嗘垜浠畾涔夊ソ浜?JobDetail錛孞ob錛屽拰 Trigger 鍚庯紝灝卞彲浠ュ紑濮?Schedule 涓涓?Job 浜嗐?/p>

scheduler.scheduleJob(jobDetail, trigger);

榪欐潯璇彞灝辨槸鎶妀ob鍜孴rigger鍏寵仈錛岃繖鏍峰綋Trigger璁や負(fù)搴旇瑙﹀彂鐨勬椂鍊欏氨浼?xì)璋冪敤锛堝疄闄呬笂鏄疭cheduler璋冪敤錛塲ob.execute鏂規(guī)硶浜嗐?/p>

scheduler.start();
鍗冧竾鍒繕浜嗗姞涓婁笂闈㈢殑璇彞錛岃繖鏉¤鍙ラ氱煡Quartz浣垮畨鎺掔殑璁″垝鐢熸晥銆?/p>

鍏充簬execute鏂規(guī)硶鐨勫弬鏁癑obExecutionContext
JobExecutionContext灝卞拰寰堝Context緇撳熬鐨勭被鍔熻兘涓鏍鳳紝鎻愪緵鐨勮繍琛屾椂鍒葷殑涓婁笅鏂囩幆澧冿紝JobExecutionContext涓湁Scheduler,JobDetail,Trigger絳夊緢澶氬璞$殑寮曠敤錛屼粠鑰屽綋浣犲湪execute鏂規(guī)硶鍐呴儴欏婚渶瑕佽繖浜涘璞$殑鏃跺埢鎻愪緵鐨勪究鍒┿?/p>

鍦ㄩ」鐩腑錛屾垜浠妸闇瑕佹墽琛岀殑 Job 鐩稿搴旂殑涓浜涗俊鎭斁鍦?JobExecutionContext 涓紝鍦?Job 鎵ц鐨勬椂鍊欏彲浠ヨ皟鐢ㄣ?br>
jobDetail.getJobDataMap().put(userid, id);

鍦?Job 涓紝鎴戜滑鍙互鎷垮埌鐩稿叧鐨?Context 淇℃伅錛?br>
jobExecutionContext.getJobDetail().getJobDataMap().getInt(userid);

JobDetail鍜孴rigger鐨刵ame鍜実roup
Scheduler瀹炰緥瀵瑰簲浜嗗緢澶歫ob鍜宼rigger鐨勫疄渚嬶紝涓轟簡鏂逛究鐨勫尯鍒嗭紝Quartz浣跨敤name鍜実roup榪欎袱涓壒鎬э紝姝e浣犳兂鍚戠殑涓鏍鳳紝鍚屼竴涓猤roup涓嬩笉鑳芥湁涓や釜鐩稿悓name鐨凧obDetail錛孴rigger鍚岀悊錛屽悓涓涓猄cheduler涓嬩笉鑳芥湁涓や釜鐩稿悓group鐨凧obDetail,Trigger鍚岀悊錛孞obDetail鍜孴rigger鐨勫畬鍏ㄩ檺瀹氬悕涓猴細(xì)group + name

涓轟簡璁╂湇鍔″櫒閲嶅惎浠ュ悗錛屾垜浠殑 Scheduler 淇℃伅浠嶇劧涓嶄涪澶憋紝鎴戜滑閫氬父閲囩敤鏁版嵁搴撴寔涔呭寲 Scheduler 鐨勪俊鎭?br>DBScript 鍦?Quartz 鐨勪笅杞藉寘涓殑錛歲uartz-1.6.0\docs\dbTables 涓嬶紝閫夋嫨鑷繁浣跨敤鐨?DB 鐩稿簲鐨?Script 瀵煎叆鏁版嵁搴撳氨鍙互浜嗐?br>鍦ㄥ簲鐢ㄤ腑錛屾垜浠渶瑕侀厤緗竴涓?quartz.properties 鎵嶈兘姝e父浣跨敤 DB銆傛垜浠彲浠ュ湪 quartz-1.6.0\examples\example10 涓壘鍒拌鏂囦歡鐨勬牱渚嬶紝紼嶄綔涓浜涗慨鏀癸紝灝卞彲浠ユ斁鍒拌嚜宸遍」鐩簮鐮佺殑鏍圭洰褰曚笅浣跨敤浜嗐?br>
璁劇疆 org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX 鍗沖彲鍚敤鍩轟簬 JDBC 鐨?Quartz 淇℃伅鎸佷箙鍖栥?br>
鏍規(guī)嵁欏圭洰鎯呭喌璁劇疆浠ヤ笅閰嶇疆淇℃伅錛?br>org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false

org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/myapplication
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password =
org.quartz.dataSource.myDS.maxConnections = 5

浣嗘槸鍏夎緗簡 Database 涓嶅錛屾垜浠繕闇瑕佸湪 Application 鍚姩鐨勬椂鍊欒嚜鍔ㄥ惎鍔?Scheduler 鎵嶈錛屾垜浠彧闇瑕佺畝鍗曠殑鍐欎竴涓?Servlet 鐨?Listener 騫跺湪 web.xml 涓0鏄庤 Listener 錛屽湪 Servlet 瀹規(guī)槗鍚姩鐨勬椂鍊欙紝Scheduler 灝卞紑濮嬭嚜鍔ㄦ墽琛屻?/p>

public class ScheduleStartListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        try {
           scheduleFactory.getScheduler().start();
        } catch (SchedulerException e) {
           // write log
        }
    }

    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        try {
           scheduleFactory.getScheduler().shutdown();
        } catch (SchedulerException e) {
           // write log
        }
    }
}

鍦?web.xml 閲岄潰鍔犲叆浠ヤ笅閰嶇疆錛?br><listener>
    <listener-class>org.agilejava.scheduler.ScheduleStartListener</listener-class>
</listener>

浠ヤ笂綆鍗曠殑璁板綍浜嗗湪欏圭洰涓叧浜?Quartz 鐨勪竴浜涘簲鐢紝濡傛灉鏈変粈涔堟柊鐨勪嬌鐢ㄥ績寰楋紝浼?xì)鍦ㄥ悗闈⒕lх畫鍔犲叆鐨勩?/p>

steady 2007-08-02 16:28 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 成在线人永久免费视频播放| 麻豆成人久久精品二区三区免费| 免费看黄视频网站| 亚洲网站在线观看| 鲁大师在线影院免费观看| 久久99国产亚洲精品观看| 国产jizzjizz免费看jizz| 亚洲深深色噜噜狠狠爱网站| 亚洲精品视频免费| 国产精品亚洲视频| 激情综合亚洲色婷婷五月| 2015日韩永久免费视频播放 | 亚洲bt加勒比一区二区| 一级毛片免费观看| 4338×亚洲全国最大色成网站| h视频免费高清在线观看| 亚洲精品成人网站在线观看| 亚洲日韩国产一区二区三区在线| 一级毛片a免费播放王色电影 | 亚洲精品无码永久在线观看你懂的| 久久国产乱子伦精品免费午夜| 一本色道久久综合亚洲精品| 亚洲av永久中文无码精品综合 | 美女视频黄免费亚洲| 亚洲精品第一国产综合野| 精品视频一区二区三区免费| 亚洲天堂视频在线观看| 久久午夜免费视频| AV激情亚洲男人的天堂国语| 日韩亚洲变态另类中文| 6080午夜一级毛片免费看 | 免费国产作爱视频网站| 久久亚洲精品无码av| 女人张腿给男人桶视频免费版| 最新精品亚洲成a人在线观看| 嫩草在线视频www免费观看 | 久久夜色精品国产亚洲av| 久久精品无码精品免费专区| 亚洲人xxx日本人18| 亚洲日本久久久午夜精品| 日本19禁啪啪无遮挡免费动图|