<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>木瓜Blog &#187; JAVA开发</title>
	<atom:link href="http://www.ardy.cn/category/java/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ardy.cn</link>
	<description>把简单的事做好</description>
	<lastBuildDate>Sun, 06 Dec 2009 02:08:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux下载、上传命令</title>
		<link>http://www.ardy.cn/java/linux-upload-download.html</link>
		<comments>http://www.ardy.cn/java/linux-upload-download.html#comments</comments>
		<pubDate>Mon, 04 May 2009 08:14:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=512</guid>
		<description><![CDATA[linux系统下可以直接从客户端上传文件到服务器端，命令格式：
scp files user@server:filepath
解释：
files 待上传的文件，可以有多个，多个文件之间用空格隔开。也可以用*.filetype上传某个类型的全部文件
user 服务端登录用户名
server 服务器名（IP或域名）
filepath 上传到服务器的目标路径（这里注意此用户一定要有这个路径的读写权限）
 
如果从其它linux系统下载文件到本地可以用：
scp user@server:files client_file_path
解释：
user 服务端登录用户名
server 服务器名（IP或域名）
files 待下载的文件
client_file_path 下载到本地的存放路径
 
linux系统下也可以直接用命令形式从网上下载文件，命令格式：
lftp -c &#8220;pget -n 5 http://downpath&#8221;
解释：
lftp 文件下载命令，通过ftp通道传输
pget -n 5 O也不清楚这里的意义 －＿－
http://downpath 待下载文件的连接地址
 
这二个方法的传输速度都比较快，所以记录下来以供参考。
]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/linux-upload-download.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jBPM4中文文档</title>
		<link>http://www.ardy.cn/java/jbpm4-chinese-doc.html</link>
		<comments>http://www.ardy.cn/java/jbpm4-chinese-doc.html#comments</comments>
		<pubDate>Fri, 13 Mar 2009 02:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[Jbpm]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=450</guid>
		<description><![CDATA[前段时jBPM4的测试版发布了，大致看了一下，因为时间比较紧没有怎么细看，4版本变化挺大，引入了流程虚拟机的概念。
  看网上朋友翻译了一下用户手册，http://family168.com/tutorial/jbpm4.0/html/index.html，希望对大家有帮助。
]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/jbpm4-chinese-doc.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Java调用Win exe程序</title>
		<link>http://www.ardy.cn/java/java-call-exe.html</link>
		<comments>http://www.ardy.cn/java/java-call-exe.html#comments</comments>
		<pubDate>Thu, 22 Jan 2009 06:03:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=432</guid>
		<description><![CDATA[// 用Java调用windows系统的exe文件，比如notepad，calc之类
Runtime rn = Runtime.getRuntime();
Process p = null;
try {
String command = "notepad";
p = rn.exec(command);
]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/java-call-exe.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jBPM 4 Alpha1发布</title>
		<link>http://www.ardy.cn/java/jbpm-4-alpha1-release.html</link>
		<comments>http://www.ardy.cn/java/jbpm-4-alpha1-release.html#comments</comments>
		<pubDate>Tue, 13 Jan 2009 07:30:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[Jbpm]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=428</guid>
		<description><![CDATA[jBPM 4 首个版本Alpha 1发布。BPM业务流程管理和workflow工作流以各种形式存在，jBPM 4向提供一个单一BPM解决方案迈进了一大步，它能够在不同的Java环境中，被不同形式的BPM和workflow使用。jBPM 4能够作为单独的服务器使用或者嵌入任何Java应用。jBPM 4.0.0 Alpha 1是jBPM 4 的首个发布版本，它带来了新的流程虚拟机，支持多个流程语言。jBPM 4最值得注意的改进有：
* 大量改进的文档，包括分开用户使用手册和开发者使用手册
* 基于Eclipse的图形化设计的BPMN
* 基于命令行的服务作为主要的客户端API
* 解耦的行为实现API
* 多种运行模式
* 改进的多语言支持
* 容易添加客户行为
* DB进化改良和DB通过每流程语言划分
BPM and workflow comes in many shapes and forms. jBPM 4 is a major step towards providing a single BPM solution that can be used for these different forms of BPM and workflow, in different Java [...]]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/jbpm-4-alpha1-release.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jbpm的调度应用</title>
		<link>http://www.ardy.cn/java/about-jbpm-job.html</link>
		<comments>http://www.ardy.cn/java/about-jbpm-job.html#comments</comments>
		<pubDate>Fri, 05 Dec 2008 16:25:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[Jbpm]]></category>

		<guid isPermaLink="false">http://localhost:88/wpdemo/?p=25</guid>
		<description><![CDATA[以前开始接触jbpm的时候，也曾经发表了一篇关于调度的文章http://blog.csdn.net/，其中有很多不甚了解的东东，这几天又研究了一下，共享给各位学友。

本系列仅从应用的角度出发进行介绍：
jbpm的调度部分只要分为2块，timer主要是流程设计人员的工作，将timer放置到流程中；scheduler是jbpm自己维护的，我们只需要在后台进行调用即可。

根据吃甘蔗的方法，我们先说相对容易一点的scheduler。我们可以认为scheduler就是一个后台线程在不停的监听着timer(jbpm_timer表)，如果有需要触发的timer生成了，就按照timer的属性定时或者循环触发它。
jbpm提供了2种调用scheduler的方法：
一种是用在web应用的，采用org.jbpm.scheduler.impl.SchedulerServlet，具体的方法这个类的javadoc有很好的示例，我们只需在web.xml中加载它就行了；
另一种是针对的c-s程序，jbpm提供了一个很好的示例org.jbpm.scheduler.impl.SchedulerMain，我们可以参照它编写我们自己的Scheduler。
下面我就编写一个cs程序来实现Scheduler，并调用一个最简单的timer。
这个timer从第5秒开始每隔3秒执行script中的内容。
xml 代码

?View Code XML1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
&#60;xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; ?&#62;
	&#60;process-definition xmlns=&#34;&#34; name=&#34;yytest&#34;&#62;
		&#60;start-state name=&#34;start&#34;&#62;
			&#60;transition name=&#34;&#34; to=&#34;a&#34;&#62;&#60;/transition&#62;
		&#60;/start-state&#62;
		&#60;state name=&#34;a&#34;&#62;
			&#60;timer name='reminder' duedate='5 seconds'
				repeat='3 seconds' /&#62;
			&#60;script&#62;
				System.out.println(new Date()+ &#34;----node enter:send mail
				to operator.&#34;);
			&#60;/script&#62;
			&#60;/timer&#62;
			&#60;transition name=&#34;&#34; to=&#34;end&#34;&#62;&#60;/transition&#62;
		&#60;/state&#62;
		&#60;end-state name=&#34;end&#34;&#62;&#60;/end-state&#62;
	&#60;/process-definition&#62;


下面的程序看注释就很清楚了:
java 代码

?View Code JAVA1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.jeffentest;
&#160;
import org.jbpm.*;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.*;
import org.jbpm.scheduler.impl.Scheduler;
&#160;
public class Jeffentest &#123;
	static JbpmConfiguration jbpmConfiguration = JbpmConfiguration
			.getInstance&#40;&#41;;
	static ProcessDefinition processDefinition = null;
	static ProcessInstance processInstance = null;
	static Scheduler scheduler = null;
&#160;
	public static void [...]]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/about-jbpm-job.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>彻底解决Dom4j编码问题</title>
		<link>http://www.ardy.cn/java/solve-coding-problems-dom4j.html</link>
		<comments>http://www.ardy.cn/java/solve-coding-problems-dom4j.html#comments</comments>
		<pubDate>Tue, 05 Aug 2008 02:27:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[Dom4J]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=248</guid>
		<description><![CDATA[这几天开始学习dom4j，在网上找了篇文章就开干了，上手非常的快，但是发现了个问题就是无法以UTF-8保存xml文件，保存后再次读出的时候会报“Invalid byte 2 of 2-byte UTF-8 sequence.”这样一个错误，检查发现由dom4j生成的这个文件，在使用可正确处理XML编码的任何的编辑器中中文成乱码，从记事本查看并不会出现乱码会正确显示中文。让我很是头痛。试着使用GBK、gb2312编码来生成的xml文件却可以正常的被解析。因此怀疑的dom4j没有对utf-8编码进行处理。便开始查看dom4j的原代码。终于发现的问题所在，是自己程序的问题。
在dom4j的范例和网上流行的《DOM4J 使用简介》这篇教程中新建一个xml文档的代码都类似如下

?View Code JAVA1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void createXML&#40;String fileName&#41; &#123;
        Document doc = org.dom4j.DocumentHelper.createDocument&#40;&#41;;
        Element root = doc.addElement&#40;&#34;book&#34;&#41;;
        root.addAttribute&#40;&#34;name&#34;, &#34;我的图书&#34;&#41;;
        Element childTmp;
  [...]]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/solve-coding-problems-dom4j.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>理解JBPM的基本概念</title>
		<link>http://www.ardy.cn/java/understand-concepts-of-jbpm.html</link>
		<comments>http://www.ardy.cn/java/understand-concepts-of-jbpm.html#comments</comments>
		<pubDate>Tue, 15 Jul 2008 05:48:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[Jbpm]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=246</guid>
		<description><![CDATA[理解JBPM(java Business Process Management)的基本概念：
jPDL &#8211; JBPM Process Definition Language
JBPM简要过程：
1、定义流程（利用JPDL）
2、部署流程（部署到数据库）
3、创建公文并与流程实例绑定
4、可通过JBPM的接口，触发流程向下流动
5、可通过JBPM的接口，获得流动到某个用户那里的文档（即待处理任务列表）
6、可通过JBPM的接口，结束某个用户的任务（这将触发流程继续向下流动）
7、如此，直到结束
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
测试：
1、安装JBPM
- 引入Hibernate依赖包
- 引入JBPM依赖包
* bsh.jar
* jcr-1.0.jar
* jbpm-identity.jar
* jbpm-jpdl.jar
- 引入数据库驱动
* mysql-connector-java-3.1.13-bin.jar
2、定义相关配置文件
- Hibernate配置文件
* 提供hibernate配置文件（可以从config/目录下拷贝，并修改其中的数据库连接设置即可）
3、假设现在有一个公文，需要经过：张三、李四、王五的审批之后才能结束
4、我们定义一个Document对象，及其hibernate映射，并将修改hibernate配置文件，将映射添加到其配置中（以便创建相应的数据库表）
5、现在让我们来测试一下：
- 创建数据库表: JbpmConfiguration.getInstance().createSchema();
- 定义流程: 参考process.xml
- 部署流程:
* JbpmConfiguration.getInstance() &#8211; 创建jbpmConfiguration对象
* ProcessDefinition.parseXmlResource(String); &#8211; 读取流程定义文件，创建processdefinition对象
* jbpmConfiguration.createJbpmContext(); &#8211; 创建jbpmContext对象
* context.deployProcessDefinition(definition); &#8211; 部署流程到数据库
* context.close(); &#8211; 关闭context对象
- 创建公文
- 将公文与流程绑定（即需要创建流程实例）
* JbpmConfiguration.getInstance() &#8211; 创建jbpmConfiguration对象
* jbpmConfiguration.createJbpmContext(); &#8211; 创建jbpmContext对象
* context.setSessionFactory(sessionFactory),将JBPM与程序中的session绑定
* context.getGraphSession().findLatestProcessDefinition(&#8221;流程名称&#8221;);
* new ProcessInstance(definition); &#8211; 创建流程实例
* context.save(processInstance); &#8211; [...]]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/understand-concepts-of-jbpm.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jbpm任务分配管理</title>
		<link>http://www.ardy.cn/java/jbpm-task-allocation-management.html</link>
		<comments>http://www.ardy.cn/java/jbpm-task-allocation-management.html#comments</comments>
		<pubDate>Tue, 08 Jul 2008 09:41:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[Jbpm]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=245</guid>
		<description><![CDATA[一个Task instance（任务实例）可以被分配给一个actorId (java.lang.String)。所有的Task instance都被保存在数据库中的表jbpm_taskinstance里。当你想得到特定用户的任务清单时，你就可以通过一个与用户关联的 actorId来查询这张表。
一个流程定义有一个TaskMgmtDefinition；一个TaskMgmtDefinition对应多个swimlane,同时对应多个 task;一个swimlane有多个task,可以  TaskMgmtDefinition中通过task的名称直接获取相应的task;
swimlane对象有四个属性，分别是name（名字）、assignmentDelegation（分配代理类）、taskMgmtDefinition、tasks（Set 对应多个task),可以增加task
task对象主要的属性：taskMgmtDefinition、swimlane、assignmentDelegation、 taskNode，需要注意的是swimlane和assignmentDelegation中间只是可以一个属性有值，因为它们都和任务的分配有关系。
一个流程实例有一个TaskMgmtInstance；一个TaskMgmtInstance对应多个swimlaneInstance,同时对应多个taskInstance;一个swimlaneInstance有多个taskInstance,可以从TaskMgmtInstance中直接获取相应的taskInstance;
swimlaneInstance对象主要有五个属性，分别是name、actorId、pooledActors（Set）、swimlane、taskMgmtInstance。
taskInstance对象的主要属性：name、actorId、task、swimlaneInstance、taskMgmtInstance、pooledActors。
当对任务进行分配时，一般需要实现AssignmentHandler这个接口，这个接口的方法只有一个：
void assign( Assignable assignable, ExecutionContext executionContext ) throws Exception;
一个典型的实现（把名字是&#8217;change nappy&#8217;的任务交给NappyAssignmentHandler这个类来分配）
&#60;task name=&#8217;change nappy&#8217;&#62;
&#60;assignment class=&#8217;org.jbpm.tutorial.taskmgmt.NappyAssignmentHandler&#8217; /&#62;
&#60;/task&#62;
NappyAssignmentHandler类：
public void assign(Assignable assignable, ExecutionContext executionContext) {
assignable.setActorId(&#8221;papa&#8221;);
}
同样，Assignable只是一个接口，它有两个方法：setActorId()和setPooledActors()，Assignable的具体实现类也是两个
swimlaneInstancehe和taskInstance。这样就不不难理解整个任务分配流程了：
1、流程进入TaskNode节点，执行TaskNode类的execute()方法，该方法首先获得TaskMgmtInstance实例，然后通过它来创建TaskInstance。taskMgmtInstance.createTaskInstance(task, executionContext);
2、在上面的createTaskInstance(task, executionContext)里，该方法调用了taskInstance.assign(executionContext)对taskInstance进行分配。
3、在assign(executionContext)方法里，首先会判断task属性里是否存在swimlane，如果有的话，这个 taskInstance就会分配给swimlane指定的ActorId或 PooledActors；如果不存在，再去找task属性里 assignmentDelegation（分配代理类）通过代理类（即我们自己写的实现AssignmentHandler这个接口的类）指定 ActorId或 PooledActors。
]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/jbpm-task-allocation-management.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java动态缓存技术:WEB缓存应用</title>
		<link>http://www.ardy.cn/java/java-web-caching-application.html</link>
		<comments>http://www.ardy.cn/java/java-web-caching-application.html#comments</comments>
		<pubDate>Sun, 18 May 2008 11:56:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/?p=11</guid>
		<description><![CDATA[可以实现不等待，线程自动更新缓存
java动态缓jar包http://dl2.csdn.net/down4/20070918/18203740920.jar
源代码：

?View Code JAVA1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.cari.web.cache;
&#160;
/** *//**
 * @author zsy
 *
 */
public class CacheData ...&#123;
    private Object data;
    private long time;
    private int count;
&#160;
    public CacheData&#40;&#41; ...&#123;
&#160;
    &#125;
&#160;
    public CacheData&#40;Object data, long time, int count&#41; ...&#123;
    [...]]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/java-web-caching-application.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jsp 验证码(检验码)的实现</title>
		<link>http://www.ardy.cn/java/jsp-verification-code.html</link>
		<comments>http://www.ardy.cn/java/jsp-verification-code.html#comments</comments>
		<pubDate>Tue, 11 Sep 2007 14:09:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA开发]]></category>
		<category><![CDATA[J2EE]]></category>

		<guid isPermaLink="false">http://www.ardy.cn/live/log242.html</guid>
		<description><![CDATA[利用Apache的一个 开源项目Image Tag Library(http://jakarta.apache.org/taglibs/sandbox/doc/image-doc/intro.html)
下载必要文件
1)下载Jakarta-Taglibs:
http://people.apache.org/builds/jakarta-taglibs-sandbox/nightly/
解压后取出taglibs-image.jar放于/WEB-INF/lib下
将taglibs-image.tld拷到/WEB-INF/下
2)下载Poor Man&#8217;s Imaging Wrapper：Image Tag 用到了这个包
http://www.mullassery.com/downloads/ 填写一些必要信息后就可以免费下载了
解压后将pmiw.jar拷到/WEB-INF/lib下
在web.xml中配置ImageServlet
&#60;context-param&#62;
&#60;param-name&#62;ImageServletMapping&#60;/param-name&#62;
&#60;param-value&#62;/gen-image&#60;/param-value&#62;
&#60;/context-param&#62;
&#60;servlet&#62;
&#60;servlet-name&#62;ImageServlet&#60;/servlet-name&#62;
&#60;servlet-class&#62;org.apache.taglibs.image.ImageServlet&#60;/servlet-class&#62;
&#60;/servlet&#62;
&#60;servlet-mapping&#62;
&#60;servlet-name&#62;ImageServlet&#60;/servlet-name&#62;
&#60;url-pattern&#62;/gen-image/*&#60;/url-pattern&#62;
&#60;/servlet-mapping&#62;
在jsp页面中加入实现代码(部分内容参考了http://technology.a.lunqun.com/read.php?tid=149894&#38;page=e&#38;fpage=1)
1)在页首加入&#60;%@ taglib uri=&#8221;/WEB-INF/taglibs-image.tld&#8221; prefix=&#8221;img&#8221; %&#62;
2)在页面顶端加入
&#60;%
response.setHeader(&#8221;Pragma&#8221;, &#8220;No-cache&#8221;);
response.setHeader(&#8221;Cache-Control&#8221;, &#8220;no-cache&#8221;);
response.setDateHeader(&#8221;Expires&#8221;, 0);
%&#62;
3)在想加上验证码的地方加上如下代码：
&#60;%
int num = (int) java.lang.Math.round(java.lang.Math.random() * 8999);
String sRand = &#8220;&#8221; + (1000 +num);
session.setAttribute(&#8221;userInfo.authcode&#8221;,sRand);
%&#62;
&#60;img:image src=&#8221;/graphics/auth.jpg&#8221; refresh=&#8221;true&#8221;&#62;
&#60;img:text text=&#8221;&#60;%=sRand.substring(0,1)%&#62;&#8221; x=&#8221;7&#8243; y=&#8221;-1&#8243; font=&#8221;Times New Roman&#8221; bold=&#8221;false&#8221; size=&#8221;22&#8243; color=&#8221;0&#215;993399&#8243; italic=&#8221;true&#8221; /&#62;
&#60;img:text text=&#8221;&#60;%=sRand.substring(1,2)%&#62;&#8221; x=&#8221;17&#8243; y=&#8221;-1&#8243; font=&#8221;Times New Roman&#8221; bold=&#8221;false&#8221; size=&#8221;22&#8243; color=&#8221;0&#215;660033&#8243; italic=&#8221;false&#8221; /&#62;
&#60;img:text text=&#8221;&#60;%=sRand.substring(2,3)%&#62;&#8221; x=&#8221;27&#8243; [...]]]></description>
		<wfw:commentRss>http://www.ardy.cn/java/jsp-verification-code.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
