﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Knight of the round table-文章分类-java</title><link>http://www.blogjava.net/wansong/category/45596.html</link><description>wansong</description><language>zh-cn</language><lastBuildDate>Mon, 14 May 2012 21:31:36 GMT</lastBuildDate><pubDate>Mon, 14 May 2012 21:31:36 GMT</pubDate><ttl>60</ttl><item><title>java 文件 路径 </title><link>http://www.blogjava.net/wansong/articles/378055.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 13 May 2012 13:52:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/378055.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/378055.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/378055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/378055.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/378055.html</trackback:ping><description><![CDATA[<div><div>http://www.blogjava.net/xuechen0721/articles/90805.html</div><br /><div>InputStream in = new FileInputStream("abc.properties"); // 相对路径,项目下的路径</div></div><img src ="http://www.blogjava.net/wansong/aggbug/378055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2012-05-13 21:52 <a href="http://www.blogjava.net/wansong/articles/378055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdk 6 jax-ws 例子</title><link>http://www.blogjava.net/wansong/articles/364521.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 22 Nov 2011 05:37:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/364521.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/364521.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/364521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/364521.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/364521.html</trackback:ping><description><![CDATA[<div>http://alvinqq.iteye.com/blog/647649</div><img src ="http://www.blogjava.net/wansong/aggbug/364521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-11-22 13:37 <a href="http://www.blogjava.net/wansong/articles/364521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>借助开源工具高效完成Java应用的运行分析</title><link>http://www.blogjava.net/wansong/articles/363529.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 11 Nov 2011 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/363529.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/363529.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/363529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/363529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/363529.html</trackback:ping><description><![CDATA[<a href="http://www.infoq.com/cn/articles/java-profiling-with-open-source">http://www.infoq.com/cn/articles/java-profiling-with-open-source</a><img src ="http://www.blogjava.net/wansong/aggbug/363529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-11-11 15:12 <a href="http://www.blogjava.net/wansong/articles/363529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jvm 连接 localhost  JMX</title><link>http://www.blogjava.net/wansong/articles/361026.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 12 Oct 2011 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/361026.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/361026.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/361026.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/361026.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/361026.html</trackback:ping><description><![CDATA[<div>需 在eclipse的运行参数（VM arguments:）增加如下的参数： <br />-Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false</div><br /><br />然后可用如下代码进行连接：<br /><div>url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");<br />JMXConnector jmxc = JMXConnectorFactory.connect(url);<br />mbs = jmxc.getMBeanServerConnection();</div><br />参考：<br /><div>http://jiangnanguying.iteye.com/blog/539697</div><img src ="http://www.blogjava.net/wansong/aggbug/361026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-10-12 10:34 <a href="http://www.blogjava.net/wansong/articles/361026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java同步文件到Jboss虚拟目录</title><link>http://www.blogjava.net/wansong/articles/358297.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 08 Sep 2011 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/358297.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/358297.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/358297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/358297.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/358297.html</trackback:ping><description><![CDATA[<div><h1>Java同步文件到Jboss虚拟目录</h1><br /><div>http://developer.51cto.com/art/201106/270337.htm</div><br /></div><img src ="http://www.blogjava.net/wansong/aggbug/358297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-09-08 13:55 <a href="http://www.blogjava.net/wansong/articles/358297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz 配置(二) - Trigger </title><link>http://www.blogjava.net/wansong/articles/355948.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355948.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355948.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355948.html</trackback:ping><description><![CDATA[<h3><span style="font-size: large">触发器(Trigger)</span></h3>
<p><span style="font-size: small"><span style="font-family: Calibri">Trigger</span>是一个抽象类，<span style="font-family: Calibri">Quartz</span>提供了两个比较常用的触发器<span style="font-family: Calibri">SimpleTrigger</span>和<span style="font-family: Calibri">CronTrigger</span>。它们都是<span style="font-family: Calibri">Trigger</span>的子类</span></p>
<h4><span style="font-family: Cambria; font-size: large">SimpleTrigger</span></h4>
<p><span style="font-size: small">这是一个简单的触发器，通过它我们可以定义触发的时间，并选择性的设定重复的次数和间隔时间。它有以下常用的属性</span></p>
<p>&nbsp;</p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-size: small">参数名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><strong><span style="font-size: small">参数类型</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><strong><span style="font-size: small">备注</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">name&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">String</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器名称</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">group&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">String</span></span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器组名称</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">repeatCount&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">int</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">重复次数，注意：如果为<span style="font-family: Calibri">0</span>表示不执行，<span style="font-family: Calibri">-1</span>表示不限制次数（直到过期），默认为<span style="font-family: Calibri">0</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">repeatInterval&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">long</span></span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">间隔时间，注意：是以毫秒为单位</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">startTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">Date</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">开始时间，默认当前时间</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">endTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">Date</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">过期时间，默认一直执行（直到执行次数已达到<span style="font-family: Calibri">repeatCount</span>）</span></p></td></tr></tbody></table>
<p>&nbsp;</p>
<h4><span style="font-family: Cambria; font-size: large">CronTrigger</span></h4>
<p><span style="font-size: small">这个触发器的功能非常强大，而且非常灵活，但需要掌握有关的<span style="font-family: Calibri">Cron</span>表达式知识</span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-size: small">参数名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">参数类型</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><strong><span style="font-size: small">备注</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">name&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器名称</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">group&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器组名称</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">cronEx&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">CronExpression</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">规则表达式</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">startTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Date</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">开始时间，默认当前时间</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">endTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Date</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">过期时间，默认一直执行（直到执行次数已达到<span style="font-family: Calibri">repeatCount</span>）</span></p></td></tr></tbody></table>
<p>&nbsp;</p>
<p><span style="font-size: small">触发器规则表达式配置：</span>&nbsp;</p>
<p><span style="font-size: small">格式<span style="font-family: Calibri">:</span></span></p>
<p><strong>[</strong><strong>秒<span>] [分] [小时] [日] [月] [周] [年]</span></strong></p>
<p>&nbsp;</p>
<p><span style="font-size: small">格式说明：</span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-size: small">位置</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">时间域名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">是否必须</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><strong><span style="font-size: small">允许值</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong><span style="font-size: small">允许通配符</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">1</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">秒</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">0-59</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">2</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">分</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">0-59</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">3</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">小时</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">0-23</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">4</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">日</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">1-31</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * ? / L W</strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">5</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">月</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">1-12</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">6</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">周</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-size: small"><span style="font-family: Calibri">1-7</span>或<span style="font-family: Calibri">MON-SUN</span></span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * ? / L #</strong></p></td></tr>
<tr style="height: 16.05pt">
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">7</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">年</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">否</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-size: small"><span style="font-family: Calibri">empty</span>或<span style="font-family: Calibri">1970-2099</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr></tbody></table>
<p>&nbsp;<span style="font-size: small">通配符说明：</span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: white">&nbsp;</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p><strong><span style="color: white">&nbsp;</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">*</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>可用在所有字段中，表示对应时间域的每一个时刻，例如，<span style="font-size: 9pt"><span style="font-family: Calibri">*</span></span>在分钟字段时，表示<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;</span></span>每分钟<span style="font-size: 9pt"><span style="font-family: Calibri">&#8221;</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">?</span></span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只在日期和星期字段中使用，它通常指定为<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;</span></span>无意义的值<span style="font-size: 9pt"><span style="font-family: Calibri">&#8221;</span></span>，相当于点位符</p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">-</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>表示区间。例如 在小时上设置<span> "10-12",表示 10,11,12点都会触发</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">,</span></span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>表示指定多个值，例如在周字段上设置<span> "MON,WED,FRI" 表示周一，周三和周五触发</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">/</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p><span style="font-size: 9pt"><span style="font-family: Calibri">x/y</span></span>表达一个等步长序列，<span style="font-size: 9pt"><span style="font-family: Calibri">x</span></span>为起始值，<span style="font-size: 9pt"><span style="font-family: Calibri">y</span></span>为增量步长值。如在分钟字段中使用<span style="font-size: 9pt"><span style="font-family: Calibri">0/15</span></span>，则表示为<span style="font-size: 9pt"><span style="font-family: Calibri">0,15,30</span></span>和<span style="font-size: 9pt"><span style="font-family: Calibri">45</span></span>秒，而<span style="font-size: 9pt"><span style="font-family: Calibri">5/15</span></span>在分钟字段中表示<span style="font-size: 9pt"><span style="font-family: Calibri">5,20,35,50</span></span>，你也可以使用<span style="font-size: 9pt"><span style="font-family: Calibri">*/y</span></span>，它等同于<span style="font-size: 9pt"><span style="font-family: Calibri">0/y</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">L</span></span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只在日期和星期字段中使用，代表<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;Last&#8221;</span></span>的意思，但它在两个字段中意思不同。<span style="font-size: 9pt"><span style="font-family: Calibri">L</span></span>在日期字段中，表示这个月份的最后一天，如一月的<span style="font-size: 9pt"><span style="font-family: Calibri">31</span></span>号，非闰年二月的<span style="font-size: 9pt"><span style="font-family: Calibri">28</span></span>号；如果<span style="font-size: 9pt"><span style="font-family: Calibri">L</span></span>用在星期中，则表示星期六，等同于<span style="font-size: 9pt"><span style="font-family: Calibri">7</span></span>。但是，如果<span style="font-size: 9pt"><span style="font-family: Calibri">L</span></span>出现在星期字段里，而且在前面有一个数值<span style="font-size: 9pt"><span style="font-family: Calibri">X</span></span>，则表示<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;</span></span>这个月的最后<span style="font-size: 9pt"><span style="font-family: Calibri">X</span></span>天<span style="font-size: 9pt"><span style="font-family: Calibri">&#8221;</span></span>，例如，<span style="font-size: 9pt"><span style="font-family: Calibri">6L</span></span>表示该月的最后星期五</p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">W</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只能出现在日期字段里，是对前导日期的修饰，表示离该日期最近的工作日。例如<span style="font-size: 9pt"><span style="font-family: Calibri">15W</span></span>表示离该月<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号最近的工作日，如果该月<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号是星期六，则匹配<span style="font-size: 9pt"><span style="font-family: Calibri">14</span></span>号星期五；如果<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>日是星期日，则匹配<span style="font-size: 9pt"><span style="font-family: Calibri">16</span></span>号星期一；如果<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号是星期二，那结果就是<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号星期二。但必须注意关联的匹配日期不能够跨月，如你指定<span style="font-size: 9pt"><span style="font-family: Calibri">1W</span></span>，如果<span style="font-size: 9pt"><span style="font-family: Calibri">1</span></span>号是星期六，结果匹配的是<span style="font-size: 9pt"><span style="font-family: Calibri">3</span></span>号星期一，而非上个月最后的那天。<span style="font-size: 9pt"><span style="font-family: Calibri">W</span></span>字符串只能指定单一日期，而不能指定日期范围</p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">#</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只能在星期字段中使用，表示当月某个工作日。如<span style="font-size: 9pt"><span style="font-family: Calibri">6#3</span></span>表示当月的第三个星期五<span style="font-size: 9pt"><span style="font-family: Calibri">(6</span></span>表示星期五，<span style="font-size: 9pt"><span style="font-family: Calibri">#3</span></span>表示当前的第三个<span style="font-size: 9pt"><span style="font-family: Calibri">)</span></span>，而<span style="font-size: 9pt"><span style="font-family: Calibri">4#5</span></span>表示当月的第五个星期三，假设当月没有第五个星期三，忽略不触发</p></td></tr></tbody></table>
<p>&nbsp;</p><img src ="http://www.blogjava.net/wansong/aggbug/355948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:25 <a href="http://www.blogjava.net/wansong/articles/355948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz 简单的一个实例 </title><link>http://www.blogjava.net/wansong/articles/355949.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355949.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355949.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355949.html</trackback:ping><description><![CDATA[<div id="blog_content">
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">SimpleJob</span><span style="font-family: Calibri; font-size: small">.java</span></p>
<p>&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">package</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> <u>com.test.job</u>;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.Job;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.JobExecutionContext;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.JobExecutionException;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> <u>SimpleJob </u></span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">implements</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Job{</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> execute(JobExecutionContext context)</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">throws</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> JobExecutionException {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">// your business logic </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">// ... </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><em><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">out</span></em><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.println(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"simpleJob running ...."</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">TestSimpleJob.java</span></p>
<p>&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">package</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> com.test.job;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> java.text.ParseException;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.CronExpression;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.CronTrigger;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.JobDetail;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.Scheduler;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.SchedulerException;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.SimpleTrigger;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.impl.StdSchedulerFactory;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> <u>TestSimpleJob </u>{</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">static</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> main(String[] args){</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">try</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Scheduler scheduler = StdSchedulerFactory.<em>getDefaultScheduler</em>();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String jobName = </span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"simpleJob"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">;</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String groupName = </span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"DEFAULT"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">;</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>删除作业</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">if</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">(scheduler.getJobDetail(jobName,groupName) != </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">){</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.deleteJob(jobName, groupName);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>作业的详细信息</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>任务名称，任务组名称，任务实现类</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JobDetail jobDetail = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> JobDetail(jobName,groupName,SimpleJob.</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>创建简单触发器</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimpleTrigger simpleTrigger = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> SimpleTrigger(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"simpleTrigger"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">,</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; simpleTrigger.setRepeatCount(100); </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">// </span>调用<span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">100</span>次</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; simpleTrigger.setRepeatInterval(5*1000);&nbsp;</span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>每<span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">5</span>秒钟调用一次</p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>注册作业</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.scheduleJob(jobDetail, simpleTrigger);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CronTrigger cronTrigger = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> CronTrigger(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"cronTrigger"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">,</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CronExpression cronExpression = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">;</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">try</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cronExpression = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> CronExpression(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"0 0 12 * * ?"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);&nbsp;</span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>每天<span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">12</span>点运行</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cronTrigger.setCronExpression(cronExpression);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>注册作业</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.scheduleJob(jobDetail, cronTrigger);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">if</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">(! scheduler.isShutdown()){</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.start();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">catch</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> (ParseException e) {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">catch</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> (SchedulerException e) {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p>&nbsp;</p></div><img src ="http://www.blogjava.net/wansong/aggbug/355949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:25 <a href="http://www.blogjava.net/wansong/articles/355949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quarz 配置(一) - JobDetail </title><link>http://www.blogjava.net/wansong/articles/355947.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:24:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355947.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355947.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355947.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355947.html</trackback:ping><description><![CDATA[<p><span style="font-size: small"><span>Quartz是一个开源的作业调度框架，完全由<span style="font-family: Calibri">java</span></span><span>写的，你能通过它创建简单或者复杂的任务。他能提供巨大的灵活性，但又不牺牲简单性。</span></span></p>
<p>&nbsp;</p>
<h2>Quartz<span><span style="font-size: large">的核心概念</span></span>&nbsp;:调度器、触发器、作业&nbsp;</h2>
<h3><span style="font-size: large">调度器(Scheduler)</span></h3>
<p style="text-indent: 21pt"><span style="font-size: small"><span style="font-family: Calibri">Scheduler</span>负责管理<span style="font-family: Calibri">Quartz</span>的运行环境，<span style="font-family: Calibri">Quartz</span>它是基于多线程架构的，它启动的时候会初始化一套线程，这套线程会用来执行一些预置的作业。</span></p>
<p style="text-indent: 21pt"><span style="font-size: small">要创建一个作业并能够被触发调用，必须在<span style="font-family: Calibri">Scheduler</span>上面注册一个<span style="font-family: Calibri">JobDetail</span>和<span style="font-family: Calibri">Trigger</span>。</span></p>
<p style="text-indent: 21pt"><span style="font-size: small"><span style="font-family: Calibri">Scheduler</span>提携了所有<span style="font-family: Calibri">Trigger</span>和<span style="font-family: Calibri">JobDetail</span>，使它们协调工作。这些<span style="font-family: Calibri">Trigger</span>和<span style="font-family: Calibri">JobDetail</span>通过自身的<span style="font-family: Calibri">name</span>和<span style="font-family: Calibri">group</span>属性区分<span>。</span></span></p>
<p><span style="font-size: small"><span style="font-family: Calibri"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scheduler </span></span>由<span style="font-family: Calibri">SchedulerFactory</span>产生，我们可以通过以下方式获取<span style="font-family: Calibri">Scheduler</span>的实例：</span> </p>
<p><span style="font-family: Calibri; font-size: small">
<p><span style="background: #d9d9d9">&nbsp;&nbsp;&nbsp;&nbsp; //</span>从<span style="background: #d9d9d9">ServletContext</span>上下文中查找<span style="background: #d9d9d9">SchedulerFactory</span></p>
<p align="left"><span style="background: #d9d9d9">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background: #d9d9d9">SchedulerFactory&nbsp;&nbsp; factory = (SchedulerFactory)</span></span></p>
<p style="text-align: left; text-indent: 21pt; margin: 0cm 0cm 0pt 21pt" align="left"><span style="background: #d9d9d9">ServletActionContext.getServletContext().getAttribute("org.quartz.impl.StdSchedulerFactory.KEY");</span></p>
<p>&nbsp;</p>
<p><span style="background: #d9d9d9">&nbsp; &nbsp;//</span>获取<span style="background: #d9d9d9">Scheduler</span>对象</p>
<p><span style="background: #d9d9d9">&nbsp;&nbsp; Scheduler defScheduler = factory.getScheduler();</span></p>
<h3><span style="font-size: large">作业</span></h3>
<h4><span style="font-family: Cambria; font-size: large">Job</span></h4>
<p><span>任务，其实就是一个接口。要创建一个任务，必须得实现这个接口。该接口只有一个execute</span><span>方法，任务每次被调用的时候都会执行这个execute</span><span>方法的逻辑。</span></p>
<p><span style="background: #d9d9d9">public class TestJob impletemens org.quartz.Job{</span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void execute(JobExecutionContext context) throws JobExecutionException{</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // you business logic</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &#8230;</span></span></p>
<p><span style="background: #d9d9d9">&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("########### this is testJob running&nbsp;############");</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp; }</span></span></p>
<p><span style="background: #d9d9d9">}</span></p>
<p>&nbsp;</p>
<h4><span style="font-family: Cambria; font-size: large">JobDetail</span></h4>
<p>JobDetail 用来保存我们作业的详细信息。一个JobDetail可以有多个Trigger，但是一个Trigger只能对应一个JobDetail。下面是JobDetail的一些常用的属性和含义</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-size: small">参数名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">类型</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><strong><span style="font-size: small">备注</span></strong></p></td></tr>
<tr style="height: 18.55pt">
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; height: 18.55pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">name</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; height: 18.55pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; height: 18.55pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务的名称，必须</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">group</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务所在组，默认为<span style="font-family: Calibri">DEFAULT</span></span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">jobClass</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Class</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务的实现类，必须</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">description</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">描述</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">jobDataMap</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">JobDataMap</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">用来给作业提供数据支持的数据结构</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">volatility</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Boolean</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">重启应用之后是否删除任务的相关信息，默认<span style="font-family: Calibri">false</span></span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">durability</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Boolean</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务完成之后是否依然保留到数据库，默认<span style="font-family: Calibri">false</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">shouldRecover</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Boolean</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">应用重启之后时候忽略过期任务，默认<span style="font-family: Calibri">false</span></span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">jobListeners</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Set</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">监听器</span></p></td></tr></tbody></table></span>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4><span style="font-family: Cambria; font-size: large">JobDataMap</span></h4>
<p style="text-indent: 21pt">这是一个给作业提供数据支持的数据结构，使用方法和java.util.Map一样，非常方便。当一个作业被分配给调度器时，JobDataMap实例就随之生成。</p>
<p style="text-indent: 21pt">Job有一个StatefulJob子接口，代表有状态的任务，该接口是一个没有方法的标签接口，其目的是让Quartz知道任务的类型，以便采用不同的执行方案。无状态任务在执行时拥有自己的JobDataMap拷贝，对JobDataMap的更改不会影响下次的执行。而有状态任务共享共享同一个JobDataMap实例，每次任务执行对JobDataMap所做的更改会保存下来，后面的执行可以看到这个更改，也即每次执行任务后都会对后面的执行发生影响。</p>
<p style="text-indent: 21pt">正因为这个原因，无状态的Job可以并发执行，而有状态的StatefulJob不能并发执行，这意味着如果前次的StatefulJob还没有执行完毕，下一次的任务将阻塞等待，直到前次任务执行完毕。有状态任务比无状态任务需要考虑更多的因素，程序往往拥有更高的复杂度，因此除非必要，应该尽量使用无状态的Job。</p>
<p style="text-indent: 21pt">如果Quartz使用了数据库持久化任务调度信息，无状态的JobDataMap仅会在Scheduler注册任务时保持一次，而有状态任务对应的JobDataMap在每次执行任务后都会进行保存。</p>
<p>JobDataMap实例也可以与一个触发器相关联。这种情况下，对于同一作业的不同触发器，我们可以在JobDataMap中添加不同的数据，以便作业在不同时间执行时能够提供更为灵活的数据支持（学校上午放眼保健操录音第一版，下午放第二版）。</p>
<p><span style="font-family: Calibri; font-size: small">
<p>不管是有状态还是无状态的任务，在任务执行期间对Trigger的JobDataMap所做的更改都不会进行持久，也即不会对下次的执行产生影响。</p></span>
<p>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/wansong/aggbug/355947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:24 <a href="http://www.blogjava.net/wansong/articles/355947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java JAXB</title><link>http://www.blogjava.net/wansong/articles/351037.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 26 May 2011 01:02:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/351037.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/351037.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/351037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/351037.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/351037.html</trackback:ping><description><![CDATA[<a href="http://download.oracle.com/javaee/5/tutorial/doc/bnazy.html">http://download.oracle.com/javaee/5/tutorial/doc/bnazy.html</a><img src ="http://www.blogjava.net/wansong/aggbug/351037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-05-26 09:02 <a href="http://www.blogjava.net/wansong/articles/351037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java jconsole</title><link>http://www.blogjava.net/wansong/articles/350893.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 24 May 2011 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/350893.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/350893.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/350893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/350893.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/350893.html</trackback:ping><description><![CDATA[<a href="http://download.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html">http://download.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html</a><img src ="http://www.blogjava.net/wansong/aggbug/350893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-05-24 09:53 <a href="http://www.blogjava.net/wansong/articles/350893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中垃圾回收机制(GC)</title><link>http://www.blogjava.net/wansong/articles/350866.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 23 May 2011 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/350866.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/350866.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/350866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/350866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/350866.html</trackback:ping><description><![CDATA[<a href="http://www.iteye.com/topic/244277">http://www.iteye.com/topic/244277</a><img src ="http://www.blogjava.net/wansong/aggbug/350866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-05-23 18:15 <a href="http://www.blogjava.net/wansong/articles/350866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CORBA &amp; JAVA</title><link>http://www.blogjava.net/wansong/articles/346925.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 24 Mar 2011 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/346925.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/346925.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/346925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/346925.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/346925.html</trackback:ping><description><![CDATA[http://www.javaeye.com/topic/174951
 <img src ="http://www.blogjava.net/wansong/aggbug/346925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-03-24 11:16 <a href="http://www.blogjava.net/wansong/articles/346925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mbean &amp; tomcat</title><link>http://www.blogjava.net/wansong/articles/346587.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sat, 19 Mar 2011 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/346587.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/346587.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/346587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/346587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/346587.html</trackback:ping><description><![CDATA[http://oss.wxnet.org/mbeans.html <br />
<br />
http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html<br />
<br />
<a href="http://yuanlijia1.javaeye.com/blog/870106">http://yuanlijia1.javaeye.com/blog/870106</a>&nbsp;:<br />
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false <br />
<br />
http://localhost:8080/manager/jmxproxy/ <br />
<br />
<br />
http://dev.firnow.com/course/3_program/java/javajs/20100719/460604.html<br />
PermGen space的全称是Permanent Generation space，是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出，解决方法是加大内存。为什么会内存溢出，这是由于这块内存主要是被JVM存放Class和Meta信息的，Class在被Load的时候被放入PermGen space区域，它和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的APP会LOAD很多CLASS的话，就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。<br />
<img src ="http://www.blogjava.net/wansong/aggbug/346587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-03-19 11:00 <a href="http://www.blogjava.net/wansong/articles/346587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java或Web中解决所有路径问题</title><link>http://www.blogjava.net/wansong/articles/343321.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 21 Jan 2011 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/343321.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/343321.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/343321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/343321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/343321.html</trackback:ping><description><![CDATA[http://java.csdn.net/a/20110119/290452.html
<img src ="http://www.blogjava.net/wansong/aggbug/343321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-01-21 13:46 <a href="http://www.blogjava.net/wansong/articles/343321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tiff 显示</title><link>http://www.blogjava.net/wansong/articles/342883.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 12 Jan 2011 12:23:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/342883.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/342883.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/342883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/342883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/342883.html</trackback:ping><description><![CDATA[//jai_codec-1.1.3-alpha.jar<br />
<br />
import java.awt.image.RenderedImage;<br />
import java.io.File;<br />
<br />
import com.sun.media.jai.codec.FileSeekableStream;<br />
import com.sun.media.jai.codec.ImageCodec;<br />
import com.sun.media.jai.codec.ImageDecoder;<br />
import com.sun.media.jai.codec.SeekableStream;<br />
import com.sun.media.jai.codec.TIFFDecodeParam;&nbsp;&nbsp;<br />
<br />
import javax.media.jai.JAI;<br />
<br />
HttpServletRequest request = ServletActionContext.getRequest();<br />
&nbsp;&nbsp;HttpServletResponse response = ServletActionContext.getResponse();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Integer index = new Integer(request.getParameter("index"));<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;System.out.println(request.getContextPath());<br />
&nbsp;&nbsp;System.out.println(request.getPathInfo());<br />
&nbsp;&nbsp;System.out.println(request.getRealPath("/"));<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File(request.getRealPath("/") + "/example/tiff/example.tif");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SeekableStream s = new FileSeekableStream(file);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, null); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RenderedImage temp = dec.decodeAsRenderedImage(index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Width:" + temp.getWidth() + ",Height:" + temp.getHeight());<br />
<br />
JAI.create("encode", temp, response.getOutputStream(), "JPEG", null);<br />
return null;
<img src ="http://www.blogjava.net/wansong/aggbug/342883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-01-12 20:23 <a href="http://www.blogjava.net/wansong/articles/342883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jvm 参数 配置</title><link>http://www.blogjava.net/wansong/articles/336932.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 03 Nov 2010 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/336932.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/336932.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/336932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/336932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/336932.html</trackback:ping><description><![CDATA[java -Xmx512m -version<br />
&nbsp; 比如说你的机器有2G内存<br />
&nbsp; 你用java -Xmx2048m -version<br />
&nbsp; 如果能正常出现JAVA VERSION版本号<br />
&nbsp; OK<br />
&nbsp; 说明你的JVM的最大内存能上到2048<br />
&nbsp; 但你要留给系统一点内存<br />
<br />
因此，对于2048MB内存的服务器我是这样给的<br />
&nbsp; JAVA_OPTS="-server -Xms1928M -Xmx1928M "<br />
&nbsp; 我的TOMCAT中的catalina.sh配置是：<br />
JAVA_OPTS="-server -Xms1928M -Xmx1928M -Xss512k -XX:+AggressiveOpts -XX:+UseParallelGC&nbsp; -XX:+UseBiasedLocking -XX ermSize=256M -XX:MaxPermSize=512M"<br />
&nbsp; 把XMX和XMS设成一样，这样TOMCAT上手启动就分配了1928M内存，如果你把XMS设了较小，那系统上手会分配XMS的数额，然后上涨，涨到XMX的数额时再下落<br />
&nbsp; 这样效率不高<br />
&nbsp; JVM来回回收，因此效率不高<br />
&nbsp; 所以把XMS和XMX两个值设平<br />
&nbsp; 那么JVM不就没有垃圾回收了吗？没事，加上-XX : PermSize=256M -XX : MaxPermSize=512M<br />
&nbsp; 这两个东西<br />
&nbsp; 这两个东西就是JVM垃圾回收进程的内存，最小增长256，最大增长了512就得要JVM回收垃圾了<br />
&nbsp; 至于其它的参数：&nbsp; -Xss512k -XX:+AggressiveOpts -XX:+UseParallelGC&nbsp; -XX:+UseBiasedLocking&nbsp; 这些你可以GOOGLE一下，这些参数启用了JVM进行&#8220;并发操作&#8221;，强迫回收等机制<br />
<br />
基本就是这些<br />
&nbsp; 到底能分多大内存给JVM，32位机是最大4G，你物理有32GB也只用4G，64位是可以突破这个限制<br />
<br />
一般是把WEB或者是APP服务器的最大内存统统给了JVM，但不能全给，因为我说了，要保留点内存给操作系统本身<br />
<br />
只知道不管理TOMCAT，WEBSPHERE还是WEBLOGIC-XX : PermSize=256M -XX : MaxPermSize=512M<br />
还有-Xms1928M -Xmx1928M 这4个参数是肯定要用得到的<br />
&nbsp; 具体还可以用到哪些参数，如：厂商自带的一些参数，这个就要查文档了<br />
<br />
<p>看你当前的JVM最大可用到多少内存，用如下命令： java -Xmx多大内存m -version</p>
<p>一定要在多大内存后面加上m哦，要不它认为是字节KB呢，会抛错的<br />
</p>
<br />
 <img src ="http://www.blogjava.net/wansong/aggbug/336932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-11-03 15:14 <a href="http://www.blogjava.net/wansong/articles/336932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>优化JVM参数提高eclipse运行速度</title><link>http://www.blogjava.net/wansong/articles/331348.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 07 Sep 2010 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/331348.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/331348.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/331348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/331348.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/331348.html</trackback:ping><description><![CDATA[http://www.javaeye.com/topic/756538
<img src ="http://www.blogjava.net/wansong/aggbug/331348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-09-07 21:32 <a href="http://www.blogjava.net/wansong/articles/331348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XStream Annotations 入门【翻译】</title><link>http://www.blogjava.net/wansong/articles/331346.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 07 Sep 2010 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/331346.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/331346.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/331346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/331346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/331346.html</trackback:ping><description><![CDATA[<p>1、简单的转换器：</p>
<p>首先创建示例的环境，<br />
下面介绍的是最基础的转换器，首先创建一个Person类：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}</pre>
<p>&nbsp;接着，我们创建一个实例，并转化他：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class PersonTest {
public static void main(String[] args) {
Person person = new Person();
person.setName("Guilherme");
XStream xStream = new XStream(new DomDriver());
System.out.println(xStream.toXML(person));
}
}</pre>
<p>&nbsp;如你所料，得到下面的结果：</p>
<pre language="xml" name="code">&lt;com.thoughtworks.xstream.examples.Person&gt;
&lt;name&gt;Guilherme&lt;/name&gt;
&lt;/com.thoughtworks.xstream.examples.Person&gt;</pre>
<p><font face="Courier New">下面我们为person类创建一个别名：</font></p>
<pre language="java" name="code">XStream xStream = new XStream(new DomDriver());
xStream.alias("person", Person.class);
System.out.println(xStream.toXML(person));</pre>
<p><font face="Courier New">现在的结果就很易读了：</font></p>
<pre language="xml" name="code">&lt;person&gt;
&lt;name&gt;Guilherme&lt;/name&gt;
&lt;/person&gt;</pre>
<p>到此，我们已经建立好一个可以供我们实验的基础例子了，下面我们来看看XStream的转换器能为我们做些什么：<br />
2，创建一个Person转换器：<br />
下面我们来创建一个简单的转换器，它能：<br />
1，用来转换Person类<br />
2，将Person实例转换成XML<br />
3，将xml转换为Person实例<br />
首先创建一个PersonConverter类，并让这个类实现Converter接口：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class PersonConverter implements Converter {
public boolean canConvert(Class clazz) {
return false;
}
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
return null;
}
}</pre>
<p><font face="Courier New">下面，我们首先告诉转换器，我们只能转换Person类，而不是别的类，包括其子类：</font></p>
<pre language="java" name="code">public boolean canConvert(Class clazz) {
return clazz.equals(Person.class);
}</pre>
<p><font face="Courier New">这一步很简单，除非你是用来处理泛型的转换器是会困难一点。</font></p>
<p><font face="Courier New">Marshal方法是用来将对象转换为XML的，他有三个参数：<br />
1，我们准备转换的对象<br />
2，我们准备输出对象的writer<br />
3，当前的marshaling context<br />
首先我们将object转换成Person</font></p>
<p><font face="Courier New">Person person = (Person) value;<br />
接着，我们就可以开始输出数据了，首先我们创建一个叫做fullname的节点，并将person的名字传给他：</font></p>
<pre language="java" name="code">writer.startNode("fullname");
writer.setValue(person.getName());
writer.endNode();</pre>
<p><font face="Courier New">呵呵～很简单吧，</font></p>
<pre language="java" name="code">public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Person person = (Person) value;
writer.startNode("fullname");
writer.setValue(person.getName());
writer.endNode();
}</pre>
<p><font face="Courier New">我们可以任意次数的调用start/end node方法，但需要记住，你必须在打开一个节点之后记住关闭它。一般来说，执行转换的操作在setValue方法调用时发生。<br />
下面，我们进入unmarshal方法，我们使用moveDown和moveUp方法在节点树层次中移动，所以，这里我们只需要简单的moveDown，得到值，再moveUp：</font></p>
<pre language="java" name="code">Person person = new Person();
reader.moveDown();
person.setName(reader.getValue());
reader.moveUp();</pre>
<p><font face="Courier New">最后，我们得到了一个这样的转换器：</font></p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class PersonConverter implements Converter {
public boolean canConvert(Class clazz) {
return clazz.equals(Person.class);
}
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Person person = (Person) value;
writer.startNode("fullname");
writer.setValue(person.getName());
writer.endNode();
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
Person person = new Person();
reader.moveDown();
person.setName(reader.getValue());
reader.moveUp();
return person;
}
}</pre>
<p>接着，我们在我们的main方法中注册这个转化器：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class PersonTest {
public static void main(String[] args) {
Person person = new Person();
person.setName("Guilherme");
XStream xStream = new XStream(new DomDriver());
xStream.registerConverter(new PersonConverter());
xStream.alias("person", Person.class);
System.out.println(xStream.toXML(person));
}
}</pre>
<p>注意到我们怎么注册我们的转换器了么？只需要下面简单的一句：</p>
<p>xStream.registerConverter(new PersonConverter()); <br />
最终得到的结果是：</p>
<p>&lt;person&gt; <br />
&nbsp; &lt;fullname&gt;Guilherme&lt;/fullname&gt; <br />
&lt;/person&gt; <br />
也许你会说：这只改变了我输出的树，我需要用它来转换数据。<br />
下面我们来尝试在person标签中创建一个叫做fullname的属性，而不是新创建一个节点：<br />
3，一种可选的方式：<br />
首先，为Person创建一个toString方法，里面包含了所有能用来重新创建一个Person实例的数据：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return getName();
}
}</pre>
<p><font face="Courier New">现在，我们就能把我们的转化器简写为：</font></p>
<p>&nbsp;</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter;
public class PersonConverter extends AbstractSingleValueConverter {
public boolean canConvert(Class clazz) {
return clazz.equals(Person.class);
}
public Object fromString(String str) {
Person person = new Person();
person.setName(string);
return person;
}
}</pre>
<p><font face="Arial">现在，输出的XML也会变得更易读（为person创建别名person之后）：</font></p>
<p><font face="Arial">&lt;person&gt;Guilherme&lt;/person&gt; <br />
名字变成了一个内置的值，而不是一个单独的节点。<br />
4，转换Date：<br />
我们已经知道Converter接口是怎样工作的了，现在我们来创建一个使用Locale对象转换时间的转换器：<br />
在我们的转换器构造方法中，我们将传入一个Locale对象，该Locale对象会作为一个成员属性被转换器持有：</font></p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import java.util.Locale;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class DateConverter implements Converter {
private Locale locale;
public DateConverter(Locale locale) {
super();
this.locale = locale;
}
public boolean canConvert(Class clazz) {
return false;
}
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
return null;
}
}</pre>
<p><font face="Courier New">现在，让我们能转换任何继承了Calendar对象的类：</font></p>
<p><font face="Courier New">public boolean canConvert(Class clazz) { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Calendar.class.isAssignableFrom(clazz); <br />
} <br />
首先，我们来将Calendar转换成本地化的字符串：首先我们把object转化成Calendar,得到Date对象，并使用DataFormatter来得到一个本地化的时间：</font></p>
<pre language="java" name="code">public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Calendar calendar = (Calendar) value;
// grabs the date
Date date = calendar.getTime();
// grabs the formatter
DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL,
this.locale);
// formats and sets the value
writer.setValue(formatter.format(date));
}</pre>
<p><font face="Courier New">另一方面，在unmarshall方法中，我们创建了一个GregorianCalendar，得到本地化的DataFormat实例，将字符串转换成Date对象，并赋值给GregorianCalendar。</font></p>
<p><font face="Courier New">public Object unmarshal(HierarchicalStreamReader reader, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnmarshallingContext context) { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // creates the calendar <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GregorianCalendar calendar = new GregorianCalendar(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // grabs the converter <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.locale); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // parses the string and sets the time <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calendar.setTime(formatter.parse(reader.getValue())); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (ParseException e) { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new ConversionException(e.getMessage(), e); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // returns the new object <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return calendar; <br />
}</font></p>
<p>注意：<br />
1，记住一些DataFormat实现不是线程安全的，所以，不要让你的转换器持有DataFormat的引用<br />
2，在经过了保存和加载的过程后，该转换器可以将其他Calendar实现转换为GregorianCalendar。如果这不是你希望的，只需要修改canConvert方法，并在类型只有为GregorianCalendar的时候再返回true。<br />
现在，我们得到了下面这个转换器：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import com.thoughtworks.xstream.converters.ConversionException;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class DateConverter implements Converter {
private Locale locale;
public DateConverter(Locale locale) {
super();
this.locale = locale;
}
public boolean canConvert(Class clazz) {
return Calendar.class.isAssignableFrom(clazz);
}
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Calendar calendar = (Calendar) value;
Date date = calendar.getTime();
DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL,
this.locale);
writer.setValue(formatter.format(date));
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
GregorianCalendar calendar = new GregorianCalendar();
DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL,
this.locale);
try {
calendar.setTime(formatter.parse(reader.getValue()));
} catch (ParseException e) {
throw new ConversionException(e.getMessage(), e);
}
return calendar;
}
}</pre>
<p><font face="Courier New">现在，我们来测试一下，创建一个main方法：<br />
1，创建一个calendar，<br />
2，创建XStream对象<br />
3，注册该转换器，并使用Brazilian Portuguese本地化对象<br />
4，将对象转化成XML<br />
代码如下：</font></p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class DateTest {
public static void main(String[] args) {
// grabs the current date from the virtual machine
Calendar calendar = new GregorianCalendar();
// creates the xstream
XStream xStream = new XStream(new DomDriver());
// brazilian portuguese locale
xStream.registerConverter(new DateConverter(new Locale("pt", "br")));
// prints the result
System.out.println(xStream.toXML(calendar));
}
}</pre>
<p>&nbsp;可以得到类似如下的结果：</p>
<p>&lt;gregorian-calendar&gt;Sexta-feira, 10 de Fevereiro de 2006&lt;/gregorian-calendar&gt; <br />
注意，我们没有为GregorianCalendar创建任何别名，而gregorian-calendar就是默认的名字。<br />
下面我们来试试unmarshal 方法：</p>
<p>// loads the calendar from the string <br />
Calendar loaded = (Calendar) xStream <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .fromXML("&lt;gregorian-calendar&gt;Sexta-feira, 10 de Fevereiro de 2006&lt;/gregorian-calendar&gt;"); <br />
然后打印出该日期：</p>
<p>// prints using the system defined locale <br />
System.out.println(DateFormat.getDateInstance(DateFormat.SHORT).format( <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loaded.getTime())); <br />
得到的结果为：</p>
<p>2/10/06 <br />
5，复杂的转换器：<br />
创建另一个例子：<br />
我们已经创建了两个对象了，现在把它们组合起来：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
public class Birthday {
private Person person;
private Calendar date;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public Calendar getDate() {
return date;
}
public void setDate(Calendar date) {
this.date = date;
}
}</pre>
<p>&nbsp;要转换该类，XStream一点问题都没有。这里，我们实现自己的转换器主要是为了验证，在这里，我们想重用我们刚才的PersonConverter和CalendarConverter。canConvert仍然很简单，不过这里，我们不需要再为每一个属性重新写转换方法了，我们只需要使用已经注册了的转换器来完成转换：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import java.util.Calendar;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class BirthdayConverter implements Converter {
public boolean canConvert(Class clazz) {
return Birthday.class == clazz;
}
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Birthday birthday = (Birthday)value;
if (value.getPerson() != null) {
writer.startNode("person");
context.convertAnother(value.getPerson());
writer.endNode();
}
if (value.getDate() != null) {
writer.startNode("birth");
context.convertAnother(value.getDate());
writer.endNode();
}
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
Birthday birthday = new Birthday();
while (reader.hasMoreChildren()) {
reader.moveDown();
if ("person".equals(reader.getNodeName())) {
Person person = (Person)context.convertAnother(birthday, Person.class);
birthday.setPerson(person);
} else if ("birth".equals(reader.getNodeName())) {
Calendar date = (Calendar)context.convertAnother(birthday, Calendar.class);
birthday.setDate(date);
}
reader.moveUp();
}
return birthday;
}
}</pre>
<p>&nbsp;如果birthday实例能够确保不会出现null值，那么我们就可以去掉marshal和unmarshal方法中对null情况的判断，也不需要循环，而直接根据tag的名字进行解析：</p>
<pre language="java" name="code">package com.thoughtworks.xstream.examples;
import java.util.Calendar;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class BirthdayConverter implements Converter {
public boolean canConvert(Class clazz) {
return Birthday.class == clazz;
}
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Birthday birthday = (Birthday)value;
writer.startNode("person");
context.convertAnother(value.getPerson());
writer.endNode();
writer.startNode("birth");
context.convertAnother(value.getDate());
writer.endNode();
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
Birthday birthday = new Birthday();
reader.moveDown();
Person person = (Person)context.convertAnother(birthday, Person.class);
birthday.setPerson(person);
reader.moveUp();
reader.moveDown();
Calendar date = (Calendar)context.convertAnother(birthday, Calendar.class);
birthday.setDate(date);
reader.moveUp();
return birthday;
}
}</pre>
<img src ="http://www.blogjava.net/wansong/aggbug/331346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-09-07 21:24 <a href="http://www.blogjava.net/wansong/articles/331346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java设计模式</title><link>http://www.blogjava.net/wansong/articles/329624.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 23 Aug 2010 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/329624.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/329624.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/329624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/329624.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/329624.html</trackback:ping><description><![CDATA[http://www.fluffycat.com/Java-Design-Patterns/<br />
<br />
http://news.newhua.com/news1/program_net/2009/629/096291645F9AB1IE0K2GEB06GG3H9KID2IH4A1C0J6EK0AD9AAF52D.html?lt=common 
<img src ="http://www.blogjava.net/wansong/aggbug/329624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-08-23 10:15 <a href="http://www.blogjava.net/wansong/articles/329624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet 线程 安全性 </title><link>http://www.blogjava.net/wansong/articles/329280.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 18 Aug 2010 14:28:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/329280.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/329280.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/329280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/329280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/329280.html</trackback:ping><description><![CDATA[<a href="http://www.yesky.com/334/1951334.shtml">http://www.yesky.com/334/1951334.shtml</a>&nbsp; 实例变量&nbsp; 局部变量（建议）<br />
<br />
在Serlet中避免使用实例变量是保证Servlet线程安全的最佳选择。从Java 内存模型也可以知道，方法中的临时变量是在栈上分配空间，而且每个线程都有自己私有的栈空间，所以它们不会影响线程的安全。<br />
<br />
根据JMM的设计，系统存在一个主内存(Main Memory)，Java中所有实例变量都储存在主存中，对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory)，工作内存由缓存和堆栈两部分组成，缓存中保存的是主存中变量的拷贝，缓存可能并不总和主存同步，也就是缓存中变量的修改可能没有立刻写到主存中；堆栈中保存的是线程的局部变量，线程之间无法相互直接访问堆栈中的变量。<br />
<br />
java的堆栈变量，实例变量，static变量：<br />
http://www.qqread.com/java/w952395600.html<br />
<br />
<img src ="http://www.blogjava.net/wansong/aggbug/329280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-08-18 22:28 <a href="http://www.blogjava.net/wansong/articles/329280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MessageFormat</title><link>http://www.blogjava.net/wansong/articles/326844.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 22 Jul 2010 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/326844.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/326844.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/326844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/326844.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/326844.html</trackback:ping><description><![CDATA[protected static final String portletLogFormat = "{0} {1} {2} [{3}] \"{4} {5} {6}\" {7} {8}";<br />
logMessage = MessageFormat.format(portletLogFormat, args).toString();
<img src ="http://www.blogjava.net/wansong/aggbug/326844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-07-22 16:13 <a href="http://www.blogjava.net/wansong/articles/326844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASM cglib</title><link>http://www.blogjava.net/wansong/articles/326714.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 21 Jul 2010 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/326714.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/326714.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/326714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/326714.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/326714.html</trackback:ping><description><![CDATA[Hibernate主要是利用cglib生成pojo的子类并override get方法来实现lazy loading机制，Spring则是利用cglib来实现动态代理。&nbsp;&nbsp;&nbsp; http://www.javaeye.com/topic/98178
<img src ="http://www.blogjava.net/wansong/aggbug/326714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-07-21 10:58 <a href="http://www.blogjava.net/wansong/articles/326714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Enum 使用</title><link>http://www.blogjava.net/wansong/articles/326230.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 15 Jul 2010 13:57:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/326230.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/326230.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/326230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/326230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/326230.html</trackback:ping><description><![CDATA[ApprovalStatusType
<img src ="http://www.blogjava.net/wansong/aggbug/326230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-07-15 21:57 <a href="http://www.blogjava.net/wansong/articles/326230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>