﻿<?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-Java Blog for Alex Wan-随笔分类-J2EE</title><link>http://www.blogjava.net/alexwan/category/32011.html</link><description>Let life be beautiful like summer flowers and death like autumn leaves.</description><language>zh-cn</language><lastBuildDate>Wed, 26 Aug 2009 04:01:19 GMT</lastBuildDate><pubDate>Wed, 26 Aug 2009 04:01:19 GMT</pubDate><ttl>60</ttl><item><title>[j2ee]linux下Activemq的部署和使用</title><link>http://www.blogjava.net/alexwan/archive/2009/05/06/269182.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Wed, 06 May 2009 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2009/05/06/269182.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/269182.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2009/05/06/269182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/269182.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/269182.html</trackback:ping><description><![CDATA[本文以ActiveMQ 5.2为例，记录了一些部署步骤和注意事项，仅供参考，更详细的内容可以查看官网的指引：<br />
<a href="http://activemq.apache.org/getting-started.html#GettingStarted-StartingActiveMQ">http://activemq.apache.org/getting-started.html#GettingStarted-StartingActiveMQ</a><br />
<br />
1.下载<br />
<a href="http://activemq.apache.org/download.html">http://activemq.apache.org/download.html</a><br />
<br />
2.解压<br />
将下载下来的apache-activemq-5.2.0-bin.tar.gz放置于/usr/local<br />
cd /usr/local/<br />
tar xvfz apache-activemq-5.2.0-bin.tar.gz<br />
则ActiveMQ的安装目录为：/usr/local/apache-activemq-5.2.0<br />
<br />
3.修改activemq运行文件的权限<br />
cd /usr/local/apache-activemq-5.2.0/bin<br />
chmod 755 activemq<br />
<br />
4.运行<br />
(1).普通启动<br />
bin/activemq<br />
(2).指定日志文件的启动方式<br />
bin/activemq &gt;/tmp/smlog 2&gt;&amp;1 &amp;<br />
(3)后台启动方式<br />
nohup bin/activemq &gt;/tmp/smlog 2&gt;&amp;1 &amp;<br />
<br />
这里需要注意：前两种启动方式在linix命令行或者通过ssh客户端启动时在关闭对应的窗口时activemq会关闭，甚至直接ctrl+c也会导致activemq退出；第三种则不会出现这种情况。<br />
<br />
5.验证服务端是否开启，有几种方法<br />
(1).查看控制台输出或者日志文件<br />
(2).直接访问activemq的管理页面：<a href="http://192.168.1.252:8161/admin/">http://localhost:8161/admin/</a><br />
<br />
6.关闭activemq<br />
如果开启方式是使用(1)或(2)，则直接ctrl+c或者关闭对应的终端即可<br />
如果开启方式是(3),则稍微麻烦一点：<br />
先查找到activemq对应的进程：<br />
ps -ef | grep activemq<br />
然后把对应的进程杀掉，假设找到的进程编号为 168168<br />
kill 168168<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/alexwan/aggbug/269182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2009-05-06 10:57 <a href="http://www.blogjava.net/alexwan/archive/2009/05/06/269182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关闭MyEclipse6.0.1的Quick Update的方法</title><link>http://www.blogjava.net/alexwan/archive/2009/03/16/259964.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Mon, 16 Mar 2009 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2009/03/16/259964.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/259964.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2009/03/16/259964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/259964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/259964.html</trackback:ping><description><![CDATA[Windows &gt; Preferences &gt; MyEclipse &gt; Community Essentials, <br />
把选项 "Search for new features on startup"的前勾去掉即可. <br />
<img src ="http://www.blogjava.net/alexwan/aggbug/259964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2009-03-16 11:13 <a href="http://www.blogjava.net/alexwan/archive/2009/03/16/259964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cxf]CXF客户端配置文件之包含文件</title><link>http://www.blogjava.net/alexwan/archive/2009/02/18/255275.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Wed, 18 Feb 2009 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2009/02/18/255275.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/255275.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2009/02/18/255275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/255275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/255275.html</trackback:ping><description><![CDATA[<p><strong><font color="#ff0000">主旨：</font></strong></p>
<p>在CXF服务端配置WEB SERVICE时，通常会包含一些来此cxf.jar里面的XML文件，用于自动配置需要使用到的BEAN</p>
<p>例如：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">import&nbsp;</span><span style="color: #ff0000">resource</span><span style="color: #0000ff">="classpath:META-INF/cxf/cxf.xml"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">import&nbsp;</span><span style="color: #ff0000">resource</span><span style="color: #0000ff">="classpath:META-INF/cxf/cxf-extension-soap.xml"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">import&nbsp;</span><span style="color: #ff0000">resource</span><span style="color: #0000ff">="classpath:META-INF/cxf/cxf-servlet.xml"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span></div>
<p>但是在客户端配置的时候这些文件是不需要的，甚至配置会引发错误，详细的经过见下文。</p>
<p><strong><font color="#ff0000">经过：</font></strong></p>
<p>今天在配置客户端的时候，步骤和内容都是和往常一样的，但是</p>
<p>出现一个NullPointerException 的错误，只知道这个错误是在创建客户端service的时候出的错，但是原因找不到。</p>
<p>错误堆栈：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">Caused&nbsp;by:&nbsp;java.lang.NullPointerException&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpointInfo(AbstractWSDLBasedEndpointFactory.java:</span><span style="color: #000000">160</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:</span><span style="color: #000000">102</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:</span><span style="color: #000000">51</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:</span><span style="color: #000000">97</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:</span><span style="color: #000000">89</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.itravel.cxf.client.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:</span><span style="color: #000000">25</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;sun.reflect.NativeMethodAccessorImpl.invoke0(Native&nbsp;Method)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:</span><span style="color: #000000">39</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:</span><span style="color: #000000">25</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.reflect.Method.invoke(Method.java:</span><span style="color: #000000">585</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:</span><span style="color: #000000">115</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<p>直到后来我单独加载了创建客户端service的applicationContext时，初始化是正常的，所以就怀疑配置文件出了问题；</p>
<p>当上面提到的几个被包含进来的文件的配置被删除后，一切就正常了。</p>
<img src ="http://www.blogjava.net/alexwan/aggbug/255275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2009-02-18 15:03 <a href="http://www.blogjava.net/alexwan/archive/2009/02/18/255275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Web Harvest】Web harvest获取XML出现乱码的解决办法 </title><link>http://www.blogjava.net/alexwan/archive/2009/02/17/255102.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Tue, 17 Feb 2009 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2009/02/17/255102.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/255102.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2009/02/17/255102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/255102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/255102.html</trackback:ping><description><![CDATA[<p>Web harvest获取XML出现乱码的解决办法：</p>
<p>现象：</p>
<p>在Web harvest中使用http请求去获取某个远程的XML，此XML的特征是无文件头(即没有编码描述等关键信息)，采用了多种办法去获取，出现乱码，无法解析成我们需要的数据。</p>
<p>办法：</p>
<p><font color="#ff0000">(1)最原始办法：</font>使用Java中的URLConnection，InputStream等类读取字节流，构造字符串：</p>
<div class="codeText">
<div class="codeHead">Java代码</div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/** </span>&nbsp;</span>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;通过URL获取XML,因为在Web&nbsp;harvest获取XML时无法获取正常编码的XML </span>&nbsp;</span>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;url=</span><span class="keyword">new</span><span>&nbsp;URL(link); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URLConnection&nbsp;connection=url.openConnection(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;in=connection.getInputStream(); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<byte></byte>byteList=</span><span class="keyword">new</span><span>&nbsp;ArrayList<byte></byte>(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">byte</span><span>&nbsp;b=-</span><span class="number">1</span><span>; &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((b=(</span><span class="keyword">byte</span><span>)in.read())!=-</span><span class="number">1</span><span>) &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byteList.add(b); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">byte</span><span>[]bytes=</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">byte</span><span>[byteList.size()]; &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bytes[i]=byteList.get(i); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;输出日志确认其编码 </span>&nbsp;</span>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(</span><span class="keyword">new</span><span>&nbsp;String(bytes)); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(</span><span class="keyword">new</span><span>&nbsp;String(bytes,</span><span class="string">"utf-8"</span><span>)); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(</span><span class="keyword">new</span><span>&nbsp;String(bytes,</span><span class="string">"gbk"</span><span>)); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(</span><span class="keyword">new</span><span>&nbsp;String(bytes,</span><span class="string">"gb2312"</span><span>));&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p><font color="#ff0000">&nbsp;(2)<font style="background-color: #ffffff">最好的办法</font>：</font>直接使用dom4j中的SAXReader</p>
<div class="codeText">
<div class="codeHead">Java代码</div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/** </span>&nbsp;</span>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;通过URL获取XML,因为在Web&nbsp;harvest获取XML时无法获取正常编码的XML </span>&nbsp;</span>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;url=</span><span class="keyword">new</span><span>&nbsp;URL(link); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXReader&nbsp;xmlReader&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;SAXReader(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc=xmlReader.read(url);&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>非常简单，连编码都不用管！</p>
<p>&nbsp;</p>
<p>&nbsp;其中：link为需要获取XML的地址</p>
<img src ="http://www.blogjava.net/alexwan/aggbug/255102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2009-02-17 15:13 <a href="http://www.blogjava.net/alexwan/archive/2009/02/17/255102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[CXF]CXF下的保护暴露在外的web service的方法及注意事项</title><link>http://www.blogjava.net/alexwan/archive/2009/02/17/255049.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Tue, 17 Feb 2009 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2009/02/17/255049.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/255049.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2009/02/17/255049.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/255049.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/255049.html</trackback:ping><description><![CDATA[<p><strong>CXF下的保护暴露在外的web service的方法及注意事项</strong></p>
<p>最近这几天都在使用CXF作为webservice的组件，试图将公开的webservice加入到保护的范围内。</p>
<p>添加到保护的方法有三种：</p>
<p><font color="#ff0000">(1)指定地址访问，即指定一些IP地址，只有这些地址的请求我们的接口才处理。</font></p>
<p>这种方法我在开发中有使用到，可以通过WEB容器中的Filter类来实现，</p>
<p>只需要检查请求的地址是否在我们指定的地址列表中就可以了。</p>
<p><strong><font color="#ff0000">优点:</font></strong>处于请求响应链的前端，响应非常迅速，所以消耗的资源很少。</p>
<p><strong><font color="#ff0000">缺端：</font></strong>使用这种方法只能检查指定地址的请求，通常只能应用的小范围内，如局域网。</p>
<p>另外使用这种验证方法，无法进行权限的检查，一旦通过验证将可以执行所有公开的接口。</p>
<p><font color="#ff0000">(2)用户名/密码对验证，使用指定的用户名密码进行验证</font></p>
<p>这种方法适合于具体用户的检查，进而可以检查其是否有权限执行其请求的操作.</p>
<p><span style="color: #ff0000">优点：</span>可以只准确地检查用户，甚至验证权限。</p>
<p><span style="color: #ff0000">缺点：</span>这种方式不能和WEB应用的登录一样，只需要验证一次就可以了；必须</p>
<p>每个请求都检查，如果需要使用这种方法去做，还需要处理好类似登录/退出机制。</p>
<p><font color="#ff0000">(3)使用HTTPS进行验证，这种方法应该也可以具体的验证证书来自哪个用户，进而检查其权限。</font></p>
<p><strong><font color="#ff0000">优点：</font></strong>安全更有保证</p>
<p><strong><font color="#ff0000">缺点：</font></strong>配置复杂，对客户端程序员要求很比较高。</p>
<p>&nbsp;</p>
<p><font color="#ff0000">注意事项：</font></p>
<p>使用CXF进行WEBService交互时，特别是进行客户端工作时，最好将服务端和客户端的环境剥离开来。</p>
<p>这几天的工作教会了我这个事情(今天上午在测试客户端代码时出现莫名其妙的错，最后发现是JAR包冲突，</p>
<p>在服务器的环境中运行客户端程序时，程序加载了过时的JAR)。</p>
<img src ="http://www.blogjava.net/alexwan/aggbug/255049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2009-02-17 11:31 <a href="http://www.blogjava.net/alexwan/archive/2009/02/17/255049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[爬虫]网页分析的影响因素之专业化程度</title><link>http://www.blogjava.net/alexwan/archive/2009/02/17/255038.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Tue, 17 Feb 2009 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2009/02/17/255038.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/255038.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2009/02/17/255038.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/255038.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/255038.html</trackback:ping><description><![CDATA[<p>在爬虫领域的网页分析的过程中，爬虫程序的复杂度很大程度上受目标网站的专业化程度影响。</p>
<p>其影响主要表现在两方面：</p>
<p>(1)对流程确定过程的影响</p>
<p>在通过分析网站地图的方式去确定流程，对专业化程度不是那么高的网站而言，其网站分类、列表方式基本基本都采用链接的方式，这样在流程实现是很容易就可获取需要的链接；而对专业化程度较高的网站而言，在分类下往往通过搜索、javascript(包括AJAX)翻页的方式来陈列同类记录，这在流程实现的时候，就需要程序员去分析一些javascript函数所做的操作，去猜度相关列表方式的URL(如搜索的表单如何提交、翻页函数如何处理翻页等)。</p>
<p>(2)对获取详细信息过程的影响</p>
<p>在获取详细信息的时候，基本都是通过分心详细信息页面的结构出发的。</p>
<p>对专业化程度高的网站而言，详细信息页面的的制作也是投入了一些精力的，通常都规定和页面特定的位置显示特定的信息，这样就便于在分析过程中获取指定的数据。</p>
<p>而对专业化程度稍低的网站而言，详细页面的内容很多都是用HTML编辑器直接编辑出来的内容，在同一频道的不同分类的详细信息页面中存在着很大的差异，这使得获取详细信息部分的分析程序复杂度倍增。</p>
<p>&nbsp;</p>
<p>个人的美好愿望：宁愿分析的是专业化程度高一点的站点，因为流程的确定及具体实现总是可以想到办法解决的；详细信息的分析存在太多页面结构的话，将在获取详细信息付出太大代价！</p>
<img src ="http://www.blogjava.net/alexwan/aggbug/255038.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2009-02-17 11:01 <a href="http://www.blogjava.net/alexwan/archive/2009/02/17/255038.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[linux]linux下的脚本与java中的相对路径</title><link>http://www.blogjava.net/alexwan/archive/2008/12/12/246000.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Fri, 12 Dec 2008 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/12/12/246000.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/246000.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/12/12/246000.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/246000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/246000.html</trackback:ping><description><![CDATA[<p><strong>背景：</strong><br />
linux使用ANT编译java类并部署到Tomcat下，然后使用脚本(deploy.sh)开启Tomcat,脚本如下:<br />
deploy.sh(其绝对路径为：/usr/local/myapp/deploy.sh)</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache</span><span style="color: #000000">-</span><span style="color: #000000">tomcat</span><span style="color: #000000">-</span><span style="color: #000000">5.5</span><span style="color: #000000">.</span><span style="color: #000000">20</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">shutdown.sh<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />ant<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache</span><span style="color: #000000">-</span><span style="color: #000000">tomcat</span><span style="color: #000000">-</span><span style="color: #000000">5.5</span><span style="color: #000000">.</span><span style="color: #000000">20</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">startup.sh<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
其中各行的意义：<br />
(1)关闭tomcat<br />
(2)编译java类并部署到tomcat<br />
(3)开启tomcat<br />
这里使用的命令都是绝对路径运行的。<br />
<br />
<strong>问题来了：</strong><br />
(1)在项目中安排了log4j的日志输出到myapp.log,其路径写法：../log/myapp.log;启动服务器的时候在catalina.out中输出错误信息，说../log/myapp.log没有找到。<br />
(2)在程序中使用了output/files/，程序完成后很难才找到文件，因为其位置并不像在window下调试时一样，最后使用 find&nbsp;&nbsp; -name&nbsp;&nbsp; output -type&nbsp;&nbsp; d命令才找到，发现原来这个文件夹所在的位置就是在：/usr/local/myapp/下面。<br />
<br />
<strong>倪端初现：</strong><br />
可见，使用脚本开启tomcat时如果以绝对路径的方式去开启的话，那么在程序中的相对路径就会以脚本的当前目录作为路径的起始点。这样就导致了在文件的位置上出现变化，使得文件管理出现困难甚至对已有的文件造成破坏。<br />
<br />
<strong>问题解决：<br />
</strong>解决路径的问题有很多，在这里主要说一下以下两个思路：<br />
(1)使用可配置的绝对路径，在ANT部署的时候，可以将Window下的路径替换成Linux下的绝对路径，这样就很方便管理，此为上策。<br />
(2)使用相对路径时，开启Tomcat时一定要切换到tomcat的bin文件夹开启，这样相对路径指向的位置就和Window下的一致了，此为下策也。<br />
使用相对路径的脚本如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache</span><span style="color: #000000">-</span><span style="color: #000000">tomcat</span><span style="color: #000000">-</span><span style="color: #000000">5.5</span><span style="color: #000000">.</span><span style="color: #000000">20</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">shutdown.sh<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />ant<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />cd&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache</span><span style="color: #000000">-</span><span style="color: #000000">tomcat</span><span style="color: #000000">-</span><span style="color: #000000">5.5</span><span style="color: #000000">.</span><span style="color: #000000">20</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />.</span><span style="color: #000000">/</span><span style="color: #000000">startup.sh</span></div>
其中各行的作用：<br />
(1)关闭tomcat<br />
(2)编译java类并部署文件<br />
(3)切换目录到tomcat的bin文件夹<br />
(4)开启tomcat<br />
<br />
<br />
估计其他应用服务器下使用脚本和相对路径也时也会遇到一样的问题，方法估计也是类似的。<br />
<br />
<img src ="http://www.blogjava.net/alexwan/aggbug/246000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-12-12 17:31 <a href="http://www.blogjava.net/alexwan/archive/2008/12/12/246000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[freemarcker]Expression JspTaglibs is undefined的解决办法</title><link>http://www.blogjava.net/alexwan/archive/2008/10/23/236194.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Thu, 23 Oct 2008 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/10/23/236194.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/236194.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/10/23/236194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/236194.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/236194.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Expression JspTaglibs is undefined的解决办法&nbsp;&nbsp;<a href='http://www.blogjava.net/alexwan/archive/2008/10/23/236194.html'>阅读全文</a><img src ="http://www.blogjava.net/alexwan/aggbug/236194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-10-23 16:02 <a href="http://www.blogjava.net/alexwan/archive/2008/10/23/236194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[eclipse]eclipse svn更换帐号的方法</title><link>http://www.blogjava.net/alexwan/archive/2008/10/16/234721.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Thu, 16 Oct 2008 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/10/16/234721.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/234721.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/10/16/234721.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/234721.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/234721.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 由于在svn的界面中并没有为我们提供直接更换用户名密码的地方，所以一旦我们需要更换用户名的就需要自己想一些办法。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/alexwan/archive/2008/10/16/234721.html'>阅读全文</a><img src ="http://www.blogjava.net/alexwan/aggbug/234721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-10-16 16:53 <a href="http://www.blogjava.net/alexwan/archive/2008/10/16/234721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[linux]linux下集成apache和tomcat时可能用到的命令</title><link>http://www.blogjava.net/alexwan/archive/2008/10/05/232423.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Sat, 04 Oct 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/10/05/232423.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/232423.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/10/05/232423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/232423.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/232423.html</trackback:ping><description><![CDATA[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在apache2和tomcat5集成的环境下，通常会把静态文件（如shtml文件）存放在apache的目录下，而动态文件则存在在tomcat的管辖范围内，因为开发过程中并没有将这两类文件分开，所以在访问静态文件是就需要做个映射。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;假设集成环境中，装有apache2的机器在局域网中的地址为192.168.1.55，下面简称55；装有tomcat5的机器的地址为192.168.1.66，后面简称66<br />
那么在55中需要提供的是NFS服务：<br />
<br />
在/etc/exports中添加如下语句：<br />
<br />
<span style="color: #ffff00">{apache2_home}/</span>htdocs&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff">192.168.1.*</span>(<span style="color: #ff0000">ro</span>,<span style="color: #00ff00">no_root_squash</span>)<br />
<br />
其中<br />
<span style="color: #ffff00">{apache2_home}/</span>是指apache2的安装目录；<br />
<span style="color: #0000ff">192.168.1.*</span>是指可访问的域<br />
<span style="color: #ff0000">ro</span>选项是指访问的权限<br />
<span style="color: #00ff00">no_root_squash</span>选项是指55的root在这个文件夹下没有写的权限<br />
<br />
<br />
<br />
开启NFS服务的命令：<br />
<br />
<span style="font-size: 14pt"><strong>service nfs start<br />
</strong></span><br />
然后在66中运行另外一个命令：<br />
<br />
mount -o nolock 192.168.1.55:<span style="color: #ffff00">{apache2_home}/</span>htdocs <span style="color: #ff0000">{tomcat_home}</span>/webapps/ROOT<br />
<br />
<br />
PS:如果修改了/etc/exports的话需要重新开启nfs服务，那么关闭的命令是：service nfs stop。<br />
<img src ="http://www.blogjava.net/alexwan/aggbug/232423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-10-05 00:10 <a href="http://www.blogjava.net/alexwan/archive/2008/10/05/232423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tomcat]linux下改变tomcat5.5的内存设置</title><link>http://www.blogjava.net/alexwan/archive/2008/09/12/228537.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Fri, 12 Sep 2008 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/09/12/228537.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/228537.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/09/12/228537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/228537.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/228537.html</trackback:ping><description><![CDATA[打开在Tomcat的安装目录的bin文件的catalina.sh文件,进入编辑状态.<br />
在注释后面加上如下脚本:<br />
JAVA_OPTS='-Xms512m -Xmx1024m'<br />
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"<br />
<br />
其中 JAVA_OPTS='-Xms512m -Xmx1024m' 是设置Tomcat使用的内存的大小.<br />
<br />
-XX:PermSize=64M -XX:MaxPermSize=256m 指定类空间(用于加载类)的内存大小
<img src ="http://www.blogjava.net/alexwan/aggbug/228537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-09-12 10:58 <a href="http://www.blogjava.net/alexwan/archive/2008/09/12/228537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[CXF]Spring下设置CXF的WebService客户端超时时长</title><link>http://www.blogjava.net/alexwan/archive/2008/09/04/227009.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Thu, 04 Sep 2008 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/09/04/227009.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/227009.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/09/04/227009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/227009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/227009.html</trackback:ping><description><![CDATA[<strong>背景</strong>:<br />
在使用WebService的时候,我们可能需要一个备份的WebService服务器.一旦主服务器down了,我们可以使用备份的服务器.那么这里就需要对客服端连接服务器的时间做一个修改.<br />
<br />
在Spring+CXF的WebService环境下,客户端有两个时间属性是可配置的,分别是ConnectionTimeout和ReceiveTimeout.<br />
ConnectionTimeout--WebService以TCP连接为基础,这个属性可以理解为tcp的握手时的时间设置,超过设置的时间长则认为是连接超时.以毫秒为单位,默认是30000毫秒,即30秒.<br />
<br />
ReceiveTimeout&nbsp;-- 这个属性是发送WebService的请求后等待响应的时间,超过设置的时长就认为是响应超时.以毫秒为单位,默认是60000毫秒,即60秒.<br />
<br />
<br />
<strong>设置的例子</strong>:<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">beans&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.springframework.org/schema/beans"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #ff0000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #ff0000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:jee</span><span style="color: #0000ff">="http://www.springframework.org/schema/jee"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #ff0000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:jaxws</span><span style="color: #0000ff">="http://cxf.apache.org/jaxws"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #ff0000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:http-conf</span><span style="color: #0000ff">="http://cxf.apache.org/transports/http/configuration"</span><span style="color: #ff0000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #ff0000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000ff">="http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #0000ff"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/jee&nbsp;http://www.springframework.org/schema/jee/spring-jee-2.0.xsd<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #0000ff"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://cxf.apache.org/jaxws&nbsp;http://cxf.apache.org/schemas/jaxws.xsd<br />
</span><span style="color: #008080">10</span><span style="color: #0000ff"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://cxf.apache.org/transports/http/configuration&nbsp;http://cxf.apache.org/schemas/configuration/http-conf.xsd&nbsp;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">http-conf:conduit&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="{http://impl.service.product.super.com/}ProjectService.http-conduit"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">http-conf:client&nbsp;</span><span style="color: #ff0000">ConnectionTimeout</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000">&nbsp;ReceiveTimeout</span><span style="color: #0000ff">="20000"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">http-conf:conduit</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">beans</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p>&nbsp;</p>
<p><strong>这里需要注意的有几个地方</strong>:<br />
1:需要指定http-conf名称空间 xmlns:http-conf=<a href="http://cxf.apache.org/transports/http/configuration">http://cxf.apache.org/transports/http/configuration</a><br />
2:指定模式位置: http://cxf.apache.org/transports/http/configuration <a href="http://cxf.apache.org/schemas/configuration/http-conf.xsd">http://cxf.apache.org/schemas/configuration/http-conf.xsd</a><br />
3:http-conf:conduit中的name属性,指定设置生效的服务,如例子中,只对服务名为{http://impl.service.product.sww.com/}ProjectService的服务生效.<br />
使用下面的设置则会对所有服务生效<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">http-conf:conduit&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="*.http-conduit"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">http-conf:conduit</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p><br />
更详细的配置请参考CXF官方文档:<br />
<br />
<a title="http://cwiki.apache.org/CXF20DOC/client-http-transport-including-ssl-support.html" href="http://cwiki.apache.org/CXF20DOC/client-http-transport-including-ssl-support.html">http://cwiki.apache.org/CXF20DOC/client-http-transport-including-ssl-support.html</a><br />
</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/alexwan/aggbug/227009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-09-04 16:45 <a href="http://www.blogjava.net/alexwan/archive/2008/09/04/227009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[J2EE]一些不错的文章</title><link>http://www.blogjava.net/alexwan/archive/2008/09/03/226602.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Wed, 03 Sep 2008 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/09/03/226602.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/226602.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/09/03/226602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/226602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/226602.html</trackback:ping><description><![CDATA[<br />
收集一些好文章的链接,为了方便而已.<br />
<br />
最后更新时间 :2008-09-03<br />
<br />
<br />
<br />
配置类:<br />
<br />
<a title="轻松实现Apache,Tomcat集群和负载均衡" href="http://hi.baidu.com/luodaijun/blog/item/5bbe4cfb5ffef864034f56a1.html" target="_blank">轻松实现Apache,Tomcat集群和负载均衡</a><br />
<br />
<a title="java中的路径问题" href="http://java.e800.com.cn/articles/2008/113/1225675615167_1.html">java中的路径问题</a><br />
<br />
数据库类:<br />
<br />
<a title="oracle 分区表的建立方法" href="http://www.xxlinux.com/linux/article/development/database/20070410/8140.html" target="_blank">oracle 分区表的建立方法</a><br />
<br />
励志类:<br />
<br />
<a title="每个IT人都应当拥有的30条技能" href="http://news.csdn.net/n/20080916/119064.html">每个IT人都应当拥有的30条技能</a> 
<img src ="http://www.blogjava.net/alexwan/aggbug/226602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-09-03 11:12 <a href="http://www.blogjava.net/alexwan/archive/2008/09/03/226602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[hibernate]hibernate中自定义主键生成器</title><link>http://www.blogjava.net/alexwan/archive/2008/09/02/226316.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Tue, 02 Sep 2008 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/09/02/226316.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/226316.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/09/02/226316.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/226316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/226316.html</trackback:ping><description><![CDATA[<strong>背景</strong>:<br />
Hibernate(目前使用的版本是3.2)中提供了多种生成主键的方式.在下面的文章中有列出来<br />
<a title="[hibernate]Hibernate主键生成方式 Key Generator " href="http://www.blogjava.net/alexwan/archive/2008/09/02/226299.html">[hibernate]Hibernate主键生成方式 Key Generator </a><br />
<br />
然而当前的这么多种生成方式未必能满足我们的要求.<br />
比如<strong>increment</strong>,可以在一个hibernate实例的应用上很方便的时候,但是在集群的时候就不行了.<br />
再如<strong>&nbsp;identity</strong>&nbsp;,<strong>sequence</strong> ,<strong>native</strong>&nbsp;是数据局提供的主键生成方式,往往也不是我们需要,而且在程序跨数据库方面也体现出不足.<br />
还有基于算法的生成方式生成出来的主键基本都是字符串的.<br />
<br />
我们现在需要一种生成方式:使用Long作为主键类型,自动增,支持集群.<br />
那么我们需要自定义一个我们的主键生成器才能实现了.<br />
<br />
<strong>实现代码</strong>:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;hibernate;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.Serializable;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.sql.Connection;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.sql.PreparedStatement;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.sql.ResultSet;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.sql.SQLException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Properties;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.logging.Log;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.logging.LogFactory;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.HibernateException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.MappingException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.dialect.Dialect;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.engine.SessionImplementor;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.id.Configurable;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.id.IdentifierGenerator;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.id.PersistentIdentifierGenerator;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.type.Type;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_699_2226_Open_Image" onclick="this.style.display='none'; Codehighlighter1_699_2226_Open_Text.style.display='none'; Codehighlighter1_699_2226_Closed_Image.style.display='inline'; Codehighlighter1_699_2226_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_699_2226_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_699_2226_Closed_Text.style.display='none'; Codehighlighter1_699_2226_Open_Image.style.display='inline'; Codehighlighter1_699_2226_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;IncrementGenerator&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;IdentifierGenerator,&nbsp;Configurable&nbsp;</span><span id="Codehighlighter1_699_2226_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_699_2226_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Log&nbsp;log&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LogFactory.getLog(IncrementGenerator.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Long&nbsp;next;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;sql;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Serializable&nbsp;generate(SessionImplementor&nbsp;session,&nbsp;Object&nbsp;object)<br />
<img id="Codehighlighter1_927_1025_Open_Image" onclick="this.style.display='none'; Codehighlighter1_927_1025_Open_Text.style.display='none'; Codehighlighter1_927_1025_Closed_Image.style.display='inline'; Codehighlighter1_927_1025_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_927_1025_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_927_1025_Closed_Text.style.display='none'; Codehighlighter1_927_1025_Open_Image.style.display='inline'; Codehighlighter1_927_1025_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException&nbsp;</span><span id="Codehighlighter1_927_1025_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_927_1025_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_946_1001_Open_Image" onclick="this.style.display='none'; Codehighlighter1_946_1001_Open_Text.style.display='none'; Codehighlighter1_946_1001_Closed_Image.style.display='inline'; Codehighlighter1_946_1001_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_946_1001_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_946_1001_Closed_Text.style.display='none'; Codehighlighter1_946_1001_Open_Image.style.display='inline'; Codehighlighter1_946_1001_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(sql</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_946_1001_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_946_1001_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNext(&nbsp;session.connection()&nbsp;);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;next;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1117_1607_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1117_1607_Open_Text.style.display='none'; Codehighlighter1_1117_1607_Closed_Image.style.display='inline'; Codehighlighter1_1117_1607_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1117_1607_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1117_1607_Closed_Text.style.display='none'; Codehighlighter1_1117_1607_Open_Image.style.display='inline'; Codehighlighter1_1117_1607_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;configure(Type&nbsp;type,&nbsp;Properties&nbsp;params,&nbsp;Dialect&nbsp;d)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;MappingException&nbsp;</span><span id="Codehighlighter1_1117_1607_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1117_1607_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;table&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;params.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">table</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(table</span><span style="color: #000000">==</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;table&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;params.getProperty(PersistentIdentifierGenerator.TABLE);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;column&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;params.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">column</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(column</span><span style="color: #000000">==</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;column&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;params.getProperty(PersistentIdentifierGenerator.PK);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;schema&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;params.getProperty(PersistentIdentifierGenerator.SCHEMA);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">select&nbsp;max(</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">column&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;from&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;(&nbsp;schema</span><span style="color: #000000">==</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;table&nbsp;:&nbsp;schema&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">.</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;table&nbsp;);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(sql);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1677_2224_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1677_2224_Open_Text.style.display='none'; Codehighlighter1_1677_2224_Closed_Image.style.display='inline'; Codehighlighter1_1677_2224_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1677_2224_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1677_2224_Closed_Text.style.display='none'; Codehighlighter1_1677_2224_Open_Image.style.display='inline'; Codehighlighter1_1677_2224_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;getNext(Connection&nbsp;conn)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException&nbsp;</span><span id="Codehighlighter1_1677_2224_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1677_2224_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1692_1961_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1692_1961_Open_Text.style.display='none'; Codehighlighter1_1692_1961_Closed_Image.style.display='inline'; Codehighlighter1_1692_1961_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1692_1961_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1692_1961_Closed_Text.style.display='none'; Codehighlighter1_1692_1961_Open_Image.style.display='inline'; Codehighlighter1_1692_1961_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1692_1961_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1692_1961_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement&nbsp;st&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;conn.prepareStatement(sql);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;st.executeQuery();<br />
<img id="Codehighlighter1_1829_1887_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1829_1887_Open_Text.style.display='none'; Codehighlighter1_1829_1887_Closed_Image.style.display='inline'; Codehighlighter1_1829_1887_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1829_1887_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1829_1887_Closed_Text.style.display='none'; Codehighlighter1_1829_1887_Open_Image.style.display='inline'; Codehighlighter1_1829_1887_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;rs.next()&nbsp;)&nbsp;</span><span id="Codehighlighter1_1829_1887_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1829_1887_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rs.getLong(</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_1907_1950_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1907_1950_Open_Text.style.display='none'; Codehighlighter1_1907_1950_Closed_Image.style.display='inline'; Codehighlighter1_1907_1950_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1907_1950_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1907_1950_Closed_Text.style.display='none'; Codehighlighter1_1907_1950_Open_Image.style.display='inline'; Codehighlighter1_1907_1950_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1907_1950_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1907_1950_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1l</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(SQLException&nbsp;e)<br />
<img id="Codehighlighter1_1993_2047_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1993_2047_Open_Text.style.display='none'; Codehighlighter1_1993_2047_Closed_Image.style.display='inline'; Codehighlighter1_1993_2047_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1993_2047_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1993_2047_Closed_Text.style.display='none'; Codehighlighter1_1993_2047_Open_Image.style.display='inline'; Codehighlighter1_1993_2047_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1993_2047_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1993_2047_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateException(e);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_2066_2217_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2066_2217_Open_Text.style.display='none'; Codehighlighter1_2066_2217_Closed_Image.style.display='inline'; Codehighlighter1_2066_2217_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2066_2217_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2066_2217_Closed_Text.style.display='none'; Codehighlighter1_2066_2217_Open_Image.style.display='inline'; Codehighlighter1_2066_2217_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_2066_2217_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2066_2217_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_2081_2117_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2081_2117_Open_Text.style.display='none'; Codehighlighter1_2081_2117_Closed_Image.style.display='inline'; Codehighlighter1_2081_2117_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2081_2117_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2081_2117_Closed_Text.style.display='none'; Codehighlighter1_2081_2117_Open_Image.style.display='inline'; Codehighlighter1_2081_2117_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span id="Codehighlighter1_2081_2117_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2081_2117_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(SQLException&nbsp;e)<br />
<img id="Codehighlighter1_2150_2206_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2150_2206_Open_Text.style.display='none'; Codehighlighter1_2150_2206_Closed_Image.style.display='inline'; Codehighlighter1_2150_2206_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2150_2206_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2150_2206_Closed_Text.style.display='none'; Codehighlighter1_2150_2206_Open_Image.style.display='inline'; Codehighlighter1_2150_2206_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_2150_2206_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2150_2206_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateException(e);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<br />
配置:<br />
在对应的hbm文件里面将id的配置如下:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="long"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="hibernate.IncrementGenerator"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span></div>
<br />
ps:此生成方式仅通过两个hibernate实例测试,如发现有问题,请留言.<br />
<img src ="http://www.blogjava.net/alexwan/aggbug/226316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-09-02 11:59 <a href="http://www.blogjava.net/alexwan/archive/2008/09/02/226316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[hibernate]Hibernate主键生成方式 Key Generator</title><link>http://www.blogjava.net/alexwan/archive/2008/09/02/226299.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Tue, 02 Sep 2008 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/09/02/226299.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/226299.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/09/02/226299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/226299.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/226299.html</trackback:ping><description><![CDATA[Hibernate主键生成方式 &nbsp; &nbsp; Key &nbsp; Generator &nbsp; <br />
&nbsp; 主键产生器 &nbsp; <br />
&nbsp; 可选项说明： &nbsp; <br />
&nbsp; 1) &nbsp; assigned &nbsp; <br />
&nbsp; 主键由外部程序负责生成，无需Hibernate参与。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 2) &nbsp; hilo &nbsp; <br />
&nbsp; 通过hi/lo &nbsp; 算法实现的主键生成机制，需要额外的数据库表保存主 &nbsp; <br />
&nbsp; 键生成历史状态。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 3) &nbsp; seqhilo &nbsp; <br />
&nbsp; 与hilo &nbsp; 类似，通过hi/lo &nbsp; 算法实现的主键生成机制，只是主键历史 &nbsp; <br />
&nbsp; 状态保存在Sequence中，适用于支持Sequence的数据库，如Oracle。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 4) &nbsp; increment &nbsp; <br />
&nbsp; 主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持 &nbsp; <br />
&nbsp; 一个变量，以保存着当前的最大值，之后每次需要生成主键的时候 &nbsp; <br />
&nbsp; 将此值加1作为主键。 &nbsp; <br />
&nbsp; 这种方式可能产生的问题是：如果当前有多个实例访问同一个数据 &nbsp; <br />
&nbsp; 库，那么由于各个实例各自维护主键状态，不同实例可能生成同样 &nbsp; <br />
&nbsp; 的主键，从而造成主键重复异常。因此，如果同一数据库有多个实 &nbsp; <br />
&nbsp; 例访问，此方式必须避免使用。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 5) &nbsp; identity &nbsp; <br />
&nbsp; 采用数据库提供的主键生成机制。如DB2、SQL &nbsp; Server、MySQL &nbsp; <br />
&nbsp; 中的主键生成机制。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 6) &nbsp; sequence &nbsp; <br />
&nbsp; 采用数据库提供的sequence &nbsp; 机制生成主键。如Oralce &nbsp; 中的 &nbsp; <br />
&nbsp; Sequence。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 7) &nbsp; native &nbsp; <br />
&nbsp; 由Hibernate根据底层数据库自行判断采用identity、hilo、sequence &nbsp; <br />
&nbsp; 其中一种作为主键生成方式。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 8) &nbsp; uuid.hex &nbsp; <br />
&nbsp; 由Hibernate基于128 &nbsp; 位唯一值产生算法生成16 &nbsp; 进制数值（编码后 &nbsp; <br />
&nbsp; 以长度32 &nbsp; 的字符串表示）作为主键。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 9) &nbsp; uuid.string &nbsp; <br />
&nbsp; 与uuid.hex &nbsp; 类似，只是生成的主键未进行编码（长度16）。在某些 &nbsp; <br />
&nbsp; 数据库中可能出现问题（如PostgreSQL）。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 10) &nbsp; foreign &nbsp; <br />
&nbsp; 使用外部表的字段作为主键。 &nbsp; <br />
&nbsp; 一般而言，利用uuid.hex方式生成主键将提供最好的性能和数据库平台适 &nbsp; <br />
&nbsp; 应性。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 另外由于常用的数据库，如Oracle、DB2、SQLServer、MySql &nbsp; 等，都提 &nbsp; <br />
&nbsp; 供了易用的主键生成机制（Auto-Increase &nbsp; 字段或者Sequence）。我们可以在数 &nbsp; <br />
&nbsp; 据库提供的主键生成机制上，采用generator-class=native的主键生成方式。 &nbsp; <br />
&nbsp; 不过值得注意的是，一些数据库提供的主键生成机制在效率上未必最佳， &nbsp; <br />
&nbsp; 大量并发insert数据时可能会引起表之间的互锁。 &nbsp; <br />
&nbsp; 数据库提供的主键生成机制，往往是通过在一个内部表中保存当前主键状 &nbsp; <br />
&nbsp; 态（如对于自增型主键而言，此内部表中就维护着当前的最大值和递增量）， &nbsp; <br />
&nbsp; 之后每次插入数据会读取这个最大值，然后加上递增量作为新记录的主键，之 &nbsp; <br />
&nbsp; 后再把这个新的最大值更新回内部表中，这样，一次Insert操作可能导致数据 &nbsp; <br />
&nbsp; 库内部多次表读写操作，同时伴随的还有数据的加锁解锁操作，这对性能产生 &nbsp; <br />
&nbsp; 了较大影响。 &nbsp; <br />
&nbsp; 因此，对于并发Insert要求较高的系统，推荐采用uuid.hex &nbsp; 作为主键生成 &nbsp; <br />
&nbsp; 机制。&nbsp;&nbsp;&nbsp;&nbsp; <br />
<img src ="http://www.blogjava.net/alexwan/aggbug/226299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-09-02 11:24 <a href="http://www.blogjava.net/alexwan/archive/2008/09/02/226299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>吃力不讨好的旧系统数据导入到新系统</title><link>http://www.blogjava.net/alexwan/archive/2008/08/15/222131.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Thu, 14 Aug 2008 18:39:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/08/15/222131.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/222131.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/08/15/222131.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/222131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/222131.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对旧的系统进行改造后,在新的系统里面数据的结构和关系都和以前有了比较大的变化.这种情况下,我们没有办法借助数据的导入导出工具去直接地将两个系统的数据融合起来.那么唯一的办法就是通过写程序的来实现了!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可是事实上,这种导数据的工作并不是想象中的那么简单,首先需要清楚两个系统中各自内部的数据的关系是怎么样的,否则根本就不知道如何去做关系的处理.这样的事情不是普通的程序员能处理的,甚至就连有经验的程序员也没有一个行之有效的方法去迅速的完成任务!那怎么办呢?只好动用较有经验,对新旧系统都有相当了解的程序员去做了!总是有人认为这些个问题到了他们(前面指的有经验的程序员),就可以迎刃而解了;殊不知,无论对谁都会造成很大的损失.也很少能了解的这些任务需要耗费多少时间和精力去做!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还有一点也是最重要的一点,是程序员所不能接受的!就是这个导数据的程序,在导完数据之后就失去了存在意义了.对程序员而言,不异于要抛弃自己的孩子一样痛苦.同时也是对程序员劳动的不尊重!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可是现实往往不是程序员能左右的,数据还是要导,精力和时间还是要耗费这些一次性的代码里面!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于这样的需求,个人深恶痛绝之;同时为自己的处境感觉很无奈!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;希望这是最后一次这么做! 
<img src ="http://www.blogjava.net/alexwan/aggbug/222131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-08-15 02:39 <a href="http://www.blogjava.net/alexwan/archive/2008/08/15/222131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Extjs]输出JSON时图片及文件需要单独处理</title><link>http://www.blogjava.net/alexwan/archive/2008/07/18/215900.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Fri, 18 Jul 2008 13:41:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/07/18/215900.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/215900.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/07/18/215900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/215900.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/215900.html</trackback:ping><description><![CDATA[[Extjs]输出JSON是图片及文件需要单独处理<br />
今天在使用Extjs开发的后台系统中碰到一个很奇怪的错误,从一个只有很少记录的数据表中查数据出来竟然用了9秒多;<br />
而且会在firefox中可以显示出来,在IE中却没有显示出来(通过grid来显示),最后,我通过在服务端打印响应中的内容,<br />
竟然让我的eclipse都卡住了,等缓过来查看输出的时候发现,原来是服务端输出json的时候把图片的字节值也一起打印出来了,<br />
所以才会导致eclipse卡住并且即使能输出也是相当得慢;而且几条数据的图片的输出值就让IE处理不了!!<br />
所以,如果要在数据表内存储图片(文件)时,不能将图片的字节值也当作JSON输出到客户端,如果需要显示还是单独处理为妙.
 <img src ="http://www.blogjava.net/alexwan/aggbug/215900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-07-18 21:41 <a href="http://www.blogjava.net/alexwan/archive/2008/07/18/215900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单实现MD5加密字符串</title><link>http://www.blogjava.net/alexwan/archive/2008/06/30/211786.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Mon, 30 Jun 2008 15:34:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/30/211786.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/211786.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/30/211786.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/211786.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/211786.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;util;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.MessageDigest;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_76_1718_Open_Image" onclick="this.style.display='none'; Codehighlighter1_76_1718_Open_Text.style.display='none'; Codehighlighter1_76_1718_Closed_Image.style.display='inline'; Codehighlighter1_76_1718_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_76_1718_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_76_1718_Closed_Text.style.display='none'; Codehighlighter1_76_1718_Open_Image.style.display='inline'; Codehighlighter1_76_1718_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;StringUtil&nbsp;</span><span id="Codehighlighter1_76_1718_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_76_1718_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_124_220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_124_220_Open_Text.style.display='none'; Codehighlighter1_124_220_Closed_Image.style.display='inline'; Codehighlighter1_124_220_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_124_220_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_124_220_Closed_Text.style.display='none'; Codehighlighter1_124_220_Open_Image.style.display='inline'; Codehighlighter1_124_220_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String[]&nbsp;hexDigits&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_124_220_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_124_220_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">1</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">2</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">3</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">4</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">5</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">6</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">7</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">8</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">9</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">b</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">c</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">e</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">f</span><span style="color: #000000">"</span><span style="color: #000000">}</span></span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_228_302_Open_Image" onclick="this.style.display='none'; Codehighlighter1_228_302_Open_Text.style.display='none'; Codehighlighter1_228_302_Closed_Image.style.display='inline'; Codehighlighter1_228_302_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_228_302_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_228_302_Closed_Text.style.display='none'; Codehighlighter1_228_302_Open_Image.style.display='inline'; Codehighlighter1_228_302_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_228_302_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_228_302_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;转换字节数组为16进制字串&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;b&nbsp;字节数组&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000">&nbsp;16进制字串&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_361_550_Open_Image" onclick="this.style.display='none'; Codehighlighter1_361_550_Open_Text.style.display='none'; Codehighlighter1_361_550_Closed_Image.style.display='inline'; Codehighlighter1_361_550_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_361_550_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_361_550_Closed_Text.style.display='none'; Codehighlighter1_361_550_Open_Image.style.display='inline'; Codehighlighter1_361_550_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;byteArrayToHexString(</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;b)&nbsp;</span><span id="Codehighlighter1_361_550_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_361_550_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;resultSb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuffer();&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img id="Codehighlighter1_454_510_Open_Image" onclick="this.style.display='none'; Codehighlighter1_454_510_Open_Text.style.display='none'; Codehighlighter1_454_510_Closed_Image.style.display='inline'; Codehighlighter1_454_510_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_454_510_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_454_510_Closed_Text.style.display='none'; Codehighlighter1_454_510_Open_Image.style.display='inline'; Codehighlighter1_454_510_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;b.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_454_510_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_454_510_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultSb.append(byteToHexString(b[i]));&nbsp;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;resultSb.toString();&nbsp;<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img id="Codehighlighter1_603_754_Open_Image" onclick="this.style.display='none'; Codehighlighter1_603_754_Open_Text.style.display='none'; Codehighlighter1_603_754_Closed_Image.style.display='inline'; Codehighlighter1_603_754_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_603_754_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_603_754_Closed_Text.style.display='none'; Codehighlighter1_603_754_Open_Image.style.display='inline'; Codehighlighter1_603_754_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;byteToHexString(</span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;b)&nbsp;</span><span id="Codehighlighter1_603_754_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_603_754_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(n&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">256</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;n;&nbsp;<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;d1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;d2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;hexDigits[d1]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hexDigits[d2];&nbsp;<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img id="Codehighlighter1_807_1114_Open_Image" onclick="this.style.display='none'; Codehighlighter1_807_1114_Open_Text.style.display='none'; Codehighlighter1_807_1114_Closed_Image.style.display='inline'; Codehighlighter1_807_1114_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_807_1114_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_807_1114_Closed_Text.style.display='none'; Codehighlighter1_807_1114_Open_Image.style.display='inline'; Codehighlighter1_807_1114_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;MD5Encode(String&nbsp;origin)&nbsp;</span><span id="Codehighlighter1_807_1114_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_807_1114_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;resultString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img id="Codehighlighter1_854_1043_Open_Image" onclick="this.style.display='none'; Codehighlighter1_854_1043_Open_Text.style.display='none'; Codehighlighter1_854_1043_Closed_Image.style.display='inline'; Codehighlighter1_854_1043_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_854_1043_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_854_1043_Closed_Text.style.display='none'; Codehighlighter1_854_1043_Open_Image.style.display='inline'; Codehighlighter1_854_1043_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_854_1043_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_854_1043_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultString</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(origin);&nbsp;<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageDigest&nbsp;md&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;MessageDigest.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">MD5</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultString</span><span style="color: #000000">=</span><span style="color: #000000">byteArrayToHexString(md.digest(resultString.getBytes()));&nbsp;<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img id="Codehighlighter1_1072_1081_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1072_1081_Open_Text.style.display='none'; Codehighlighter1_1072_1081_Closed_Image.style.display='inline'; Codehighlighter1_1072_1081_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1072_1081_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1072_1081_Closed_Text.style.display='none'; Codehighlighter1_1072_1081_Open_Image.style.display='inline'; Codehighlighter1_1072_1081_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ex)&nbsp;</span><span id="Codehighlighter1_1072_1081_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1072_1081_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;resultString;&nbsp;<br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img id="Codehighlighter1_1159_1415_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1159_1415_Open_Text.style.display='none'; Codehighlighter1_1159_1415_Closed_Image.style.display='inline'; Codehighlighter1_1159_1415_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1159_1415_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1159_1415_Closed_Text.style.display='none'; Codehighlighter1_1159_1415_Open_Image.style.display='inline'; Codehighlighter1_1159_1415_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)</span><span id="Codehighlighter1_1159_1415_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1159_1415_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(MD5Encode(</span><span style="color: #000000">""</span><span style="color: #000000">));&nbsp;<br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(MD5Encode(</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;<br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(MD5Encode(</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;<br />
</span><span style="color: #008080">52</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(MD5Encode(</span><span style="color: #000000">"</span><span style="color: #000000">message&nbsp;digest</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;<br />
</span><span style="color: #008080">53</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(MD5Encode(</span><span style="color: #000000">"</span><span style="color: #000000">abcdefghijklmnopqrstuvwxyz</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;<br />
</span><span style="color: #008080">54</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">55</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">56</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">57</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">MD5&nbsp;("")&nbsp;=&nbsp;d41d8cd98f00b204e9800998ecf8427e<br />
</span><span style="color: #008080">58</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">MD5&nbsp;("a")&nbsp;=&nbsp;0cc175b9c0f1b6a831c399e269772661<br />
</span><span style="color: #008080">59</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">MD5&nbsp;("abc")&nbsp;=&nbsp;900150983cd24fb0d6963f7d28e17f72<br />
</span><span style="color: #008080">60</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">MD5&nbsp;("message&nbsp;digest")&nbsp;=&nbsp;f96b697d7cb7938d525a2f31aaf161d0<br />
</span><span style="color: #008080">61</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">MD5&nbsp;("abcdefghijklmnopqrstuvwxyz")&nbsp;=&nbsp;c3fcd3d76192e4007dfb496cca67e13b</span><span style="color: #008000"><br />
</span><span style="color: #008080">62</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">63</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">64</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">65</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">66</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/alexwan/aggbug/211786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-30 23:34 <a href="http://www.blogjava.net/alexwan/archive/2008/06/30/211786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Top Ten Errors Java Programmers Make</title><link>http://www.blogjava.net/alexwan/archive/2008/06/24/210332.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Tue, 24 Jun 2008 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/24/210332.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/210332.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/24/210332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/210332.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/210332.html</trackback:ping><description><![CDATA[from:<br />
http://www.javacoffeebreak.com/articles/toptenerrors.html<br />
<br />
<p>Whether you program regularly in Java, and know it like the back of your hand, or whether you're new to the language or a casual programmer, you'll make mistakes. It's natural, it's human, and guess what? You'll more than likely make the same mistakes that others do, over and over again. Here's my top ten list of errors that we all seem to make at one time or another,&nbsp; how to spot them, and how to fix them.</p>
<h3>10. Accessing non-static member variables from static methods (such as main)</h3>
<p>Many programmers, particularly when first introduced to Java, have problems with accessing member variables from their <em>main</em> method. The method signature for main is marked static - meaning that we don't need to create an instance of the class to invoke the main method. For example, a Java Virtual Machine (JVM) could call the class MyApplication like this :-</p>
<blockquote>
<p>MyApplication.main ( command_line_args );</p>
</blockquote>
<p>This means, however, that there isn't an instance of MyApplication - it doesn't have any member variables to access! Take for example the following application, which will generate a compiler error message.</p>
<pre>public class StaticDemo
{
public String my_member_variable = "somedata";</pre>
<pre>        public static void main (String args[])
{
// Access a non-static member from static method
System.out.println ("This generates a compiler error" +
my_member_variable );
}
}</pre>
<p>If you want to access its member variables from a non-static method (like <em>main</em>), you must create an instance of the object. Here's a simple example of how to correctly write code to access non-static member variables, by first creating an instance of the object.</p>
<pre>public class NonStaticDemo
{
public String my_member_variable = "somedata";
public static void main (String args[])
{
NonStaticDemo demo = new NonStaticDemo();
// Access member variable of demo
System.out.println ("This WON'T generate an error" +
demo.my_member_variable );
}
}</pre>
<h3>9. Mistyping the name of a method when overriding</h3>
<p>Overriding allows programmers to replace a method's implementation with new code. Overriding is a handy feature, and most OO programmers make heavy use of it. If you use the AWT 1.1 event handling model, you'll often override listener implementations to provide custom functionality. One easy trap to fall into with overriding, is to mistype the method name. If you mistype the name, you're no longer overriding a method - you're creating an entirely new method, but with the same parameter and return type.</p>
<pre>public class MyWindowListener extends WindowAdapter {
// This should be WindowClose<strong>d</strong>
public void WindowClose(WindowEvent e) {
// Exit when user closes window
System.exit(0);
}
});
</pre>
<p>Compilers won't pick up on this one, and the problem can be quite frustrating to detect. In the past, I've looked at a method, believed that it was being called, and taken ages to spot the problem. The symptom of this error will be that your code isn't being called, or you think the method has skipped over its code. The only way to ever be certain is to add a println statement, to record a message in a log file, or to use good trace debugger (like Visual J++ or Borland JBuilder) and step through line by line. If your method still isn't being called, then it's likely you've mistyped the name.</p>
<h3>8. Comparison assignment (&nbsp; = rather than == )</h3>
<p>This is an easy error to make. If you're used other languages before, such as Pascal, you'll realize just how poor a choice this was by the language's designers. In Pascal, for example, we use the := operator for assignment, and leave = for comparison. This looks like a throwback to C/C++, from which Java draws its roots.</p>
<p>Fortunately, even if you don't spot this one by looking at code on the screen, your compiler will. Most commonly, it will report an error message like this : "Can't convert xxx to boolean", where xxx is a Java type that you're assigning instead of comparing.</p>
<h3>7. Comparing two objects ( == instead of .equals)</h3>
<p>When we use the == operator, we are actually comparing two object references, to see if they point to the same object. We cannot compare, for example, two strings for equality, using the == operator. We must instead use the .equals method, which is a method inherited by all classes from java.lang.Object.</p>
<p>Here's the correct way to compare two strings.</p>
<pre>String abc = "abc"; String def = "def";
// Bad way
if ( (abc + def) == "abcdef" )
{
&nbsp;&nbsp;&nbsp; ......
}</pre>
<pre>// Good way
if ( (abc + def).equals("abcdef") )
{
&nbsp;&nbsp; .....
}</pre>
<h3>6. Confusion over passing by value, and passing by reference</h3>
<p>This can be a frustrating problem to diagnose, because when you look at the code, you might be sure that its passing by reference, but find that its actually being passed by value. Java uses <strong>both</strong>, so you need to understand when you're passing by value, and when you're passing by reference.</p>
<p>When you pass a primitive data type, such as a char, int, float, or double, to a function then you are <strong>passing by value</strong>. That means that a copy of the data type is duplicated, and passed to the function. If the function chooses to modify that value, it will be modifying the copy only. Once the function finishes, and control is returned to the returning function, the "real" variable will be untouched, and no changes will have been saved. If you need to modify a primitive data type, make it a return value for a function, or wrap it inside an object.</p>
<p>When you pass a Java object, such as an array, a vector, or a string, to a function then you are <strong>passing by reference</strong>. Yes - a String is actually an object, not a primitive data type.&nbsp; So that means that if you pass an object to a function, you are passing a reference to it, not a duplicate. Any changes you make to the object's member variables will be permanent - which can be either good or bad, depending on whether this was what you intended.</p>
<p>On a side note, since String contains no methods to modify its contents, you might as well be passing by value.</p>
<h3>5. Writing blank exception handlers</h3>
<p>I know it's very tempting to write blank exception handlers, and to just ignore errors. But if you run into problems, and haven't written any error messages, it becomes almost impossible to find out the cause of the error. Even the simplest exception handler can be of benefit. For example, put a try { .. } catch Exception around your code, to catch ANY type of exception, and print out the message. You don't need to write a custom handler for every exception (though this is still good programming practice). Don't ever leave it blank, or you won't know what's happening.</p>
<p>For example</p>
<pre>public static void main(String args[])
{
&nbsp;&nbsp;&nbsp; try {
// Your code goes here..
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; catch (Exception e)
&nbsp;&nbsp;&nbsp; {
System.out.println ("Err - " + e );
&nbsp;&nbsp;&nbsp; }
}</pre>
<h3>4. Forgetting that Java is zero-indexed</h3>
<p>If you've come from a C/C++ background, you may not find this quite as much a problem as those who have used other languages. In Java, arrays are zero-indexed, meaning that the first element's index is actually 0. Confused? Let's look at a quick example.</p>
<pre>// Create an array of three strings
String[] strArray = new String[3];
// First element's index is actually 0
strArray[0] = "First string";
// Second element's index is actually 1
strArray[1] = "Second string";
// Final element's index is actually 2
strArray[2] = "Third and final string";</pre>
<p>In this example, we have an array of three strings, but to access elements of the array we actually subtract one. Now, if we were to try and access strArray[3], we'd be accessing the fourth element. This will case an ArrayOutOfBoundsException to be thrown - the most obvious sign of forgetting the zero-indexing rule.</p>
<p>Other areas where zero-indexing can get you into trouble is with strings. Suppose you wanted to get a character at a particular offset within a string. Using the String.charAt(int) function you can look this information up - but under Java, the String class is also zero-indexed. That means than the first character is at offset 0, and second at offset 1. You can run into some very frustrating problems unless you are aware of this - particularly if you write applications with heavy string processing. You can be working on the wrong character, and also throw exceptions at run-time. Just like the ArrayOutOfBoundsException, there is a string equivalent. Accessing beyond the bounds of a String will cause a StringIndexOutOfBoundsException to be thrown, as demonstrated by this example.</p>
<pre>public class StrDemo
{
public static void main (String args[])
{
String abc = "abc";
System.out.println ("Char at offset 0 : " + abc.charAt(0) );
System.out.println ("Char at offset 1 : " + abc.charAt(1) );
System.out.println ("Char at offset 2 : " + abc.charAt(2) );
// This line should throw a StringIndexOutOfBoundsException
System.out.println ("Char at offset 3 : " + abc.charAt(3) );
}
}</pre>
<p>Note too, that zero-indexing doesn't just apply to arrays, or to Strings. Other parts of Java are also indexed, but not always consistently. The java.util.Date, and java.util.Calendar classes start their months with 0, but days start normally with 1. This problem is demonstrated by the following application.</p>
<pre>import java.util.Date;
import java.util.Calendar;
public class ZeroIndexedDate
{
public static void main (String args[])
{
// Get today's date
Date today = new Date();
// Print return value of getMonth
System.out.println ("Date.getMonth() returns : " +
today.getMonth());
// Get today's date using a Calendar
Calendar rightNow = Calendar.getInstance();
// Print return value of get ( Calendar.MONTH )
System.out.println ("Calendar.get (month) returns : " +
rightNow.get ( Calendar.MONTH ));</pre>
<pre>        }
}</pre>
<p>Zero-indexing is only a problem if you don't realize that its occurring. If you think you're running into a problem, always consult your API documentation.</p>
<h3>3. Preventing concurrent access to shared variables by threads</h3>
<p>When writing multi-threaded applications, many programmers (myself included) often cut corners, and leave their applications and applets vulnerable to thread conflicts. When two or more threads access the same data concurrently, there exists the possibility (and Murphy's law holding, the probability) that two threads will access or modify the same data at the same time. Don't be fooled into thinking that such problems won't occur on single-threaded processors. While accessing some data (performing a read), your thread may be suspended, and another thread scheduled. It writes its data, which is then overwritten when the first thread makes its changes.</p>
<p>Such problems are not just limited to multi-threaded applications or applets. If you write Java APIs, or JavaBeans, then your code may not be thread-safe. Even if you never write a single application that uses threads, people that use your code WILL. For the sanity of others, if not yourself, you should always take precautions to prevent concurrent access to shared data.</p>
<p>How can this problem be solved? The simplest method is to make your variables private (but you do that already,&nbsp; right?) and to use synchronized accessor methods. Accessor methods allow access to private member variables, but in a controlled manner. Take the following accessor methods, which provide a safe way to change the value of a counter.</p>
<pre>public class MyCounter
{
private int count = 0; // count starts at zero
public synchronized void setCount(int amount)
{
count = amount;
}
public synchronized int getCount()
{
return count;
}
}</pre>
<h3>2. Capitalization errors</h3>
<p>This is one of the most frequent errors that we all make. It's so simple to do, and sometimes one can look at an uncapitalized variable or method and still not spot the problem. I myself have often been puzzled by these errors, because I recognize that the method or variable does exist, but don't spot the lack of capitalization.</p>
<p>While there's no silver bullet for detecting this error, you can easily train yourself to make less of them. There's a very simple trick you can learn :-
<ul>
    <li>all methods and member variables in the Java API begin with lowercase letters
    <li>all methods and member variables use capitalization where a new word begins e.g - getDoubleValue() </li>
</ul>
<p>If you use this pattern for all of your member variables and classes, and then make a conscious effort to get it right, you can gradually reduce the number of mistakes you'll make. It may take a while, but it can save some serious head scratching in the future.</p>
<h2 align="center">(drum roll)</h2>
<h2 align="center">And the number one error that Java programmers make !!!!!</h2>
<p>&nbsp;</p>
<h1 align="center">1. Null pointers!</h1>
<p>Null pointers are one of the most common errors that Java programmers make. Compilers can't check this one for you - it will only surface at runtime, and if you don't discover it, your users certainly will.</p>
<p>When an attempt to access an object is made, and the reference to that object is null, a NullPointerException will be thrown. The cause of null pointers can be varied, but generally it means that either you haven't initialized an object, or you haven't checked the return value of a function.</p>
<p>Many functions return null to indicate an error condition - but unless you check your return values, you'll never know what's happening. Since the cause is an error condition, normal testing may not pick it up - which means that your users will end up discovering the problem for you. If the API function indicates that null may be returned, be sure to check this before using the object reference!</p>
<p>Another cause is where your initialization has been sloppy, or where it is conditional. For example, examine the following code, and see if you can spot the problem.</p>
<pre>public static void main(String args[])
{
// Accept up to 3 parameters
String[] list = new String[3];
int index = 0;
while ( (index &lt; args.length) &amp;&amp; ( index &lt; 3 ) )
{
list[index++] = args[index];
}
// Check all the parameters
for (int i = 0; i &lt; list.length; i++)
{
if (list[i].equals "-help")
{
// .........
}
else
if (list[i].equals "-cp")
{
// .........
}
// else .....
}
}</pre>
<p>This code (while a contrived example), shows a common mistake. Under some circumstances, where the user enters three or more parameters, the code will run fine. If no parameters are entered, you'll get a NullPointerException at runtime. Sometimes your variables (the array of strings) will be initialized, and other times they won't. One easy solution is to check BEFORE you attempt to access a variable in an array that it is not equal to null.</p>
<h3>Summary</h3>
<p>These errors represent but some of the many that we all make. Though it is impossible to completely eliminate errors from the coding process, with care and practice you can avoid repeating the same ones. Rest assured, however, that all Java programmers encounter the same sorts of problems. It's comforting to know, that while you work late into the night tracking down an error, someone, somewhere, sometime, will make the same mistake!</p>
<div align="center">
<center>
<table width="80%" border="0">
    <tbody>
        <tr>
            <td width="100%" bgcolor="#eaf8ff">We'd like to thank the readers of the comp.lang.java.programmer newsgroup for their suggestions for the top ten. Regrettably, due to the number of submissions, not every error could be featured - but we think this "Top Ten" list represents the most popular and frequent errors people make.</td>
        </tr>
    </tbody>
</table>
</center></div>
 <img src ="http://www.blogjava.net/alexwan/aggbug/210332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-24 16:17 <a href="http://www.blogjava.net/alexwan/archive/2008/06/24/210332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring框架使用任务调度quartz的例子-TriggerListener 篇</title><link>http://www.blogjava.net/alexwan/archive/2008/06/12/207273.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Thu, 12 Jun 2008 00:42:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/12/207273.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/207273.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/12/207273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/207273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/207273.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有时候我们的任务(Job)需要再某些任务完成之后才能进行；例如从旧的数据库批量导数据的时候；需要现将被其他数据依赖的数据导入新的数据库；然后再进行关系的导入.。在这种情况下我们就可以使用Quartz的listener来做文章了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/alexwan/archive/2008/06/12/207273.html'>阅读全文</a><img src ="http://www.blogjava.net/alexwan/aggbug/207273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-12 08:42 <a href="http://www.blogjava.net/alexwan/archive/2008/06/12/207273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring框架使用任务调度quartz的例子-Job and Trigger 篇</title><link>http://www.blogjava.net/alexwan/archive/2008/06/11/207241.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Wed, 11 Jun 2008 15:21:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/11/207241.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/207241.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/11/207241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/207241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/207241.html</trackback:ping><description><![CDATA[MainJob.java<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;jobs;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.log4j.Logger;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.quartz.JobExecutionContext;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.quartz.JobExecutionException;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.springframework.scheduling.quartz.QuartzJobBean;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_231_468_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_468_Open_Text.style.display='none'; Codehighlighter1_231_468_Closed_Image.style.display='inline'; Codehighlighter1_231_468_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_231_468_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_231_468_Closed_Text.style.display='none'; Codehighlighter1_231_468_Open_Image.style.display='inline'; Codehighlighter1_231_468_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MainJob&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;QuartzJobBean&nbsp;</span><span id="Codehighlighter1_231_468_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_231_468_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;&nbsp;Logger&nbsp;logger&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Logger.getLogger(getClass());<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;executeInternal(JobExecutionContext&nbsp;context)<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img id="Codehighlighter1_393_465_Open_Image" onclick="this.style.display='none'; Codehighlighter1_393_465_Open_Text.style.display='none'; Codehighlighter1_393_465_Closed_Image.style.display='inline'; Codehighlighter1_393_465_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_393_465_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_393_465_Closed_Text.style.display='none'; Codehighlighter1_393_465_Open_Image.style.display='inline'; Codehighlighter1_393_465_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;JobExecutionException&nbsp;</span><span id="Codehighlighter1_393_465_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_393_465_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">Just&nbsp;say&nbsp;hi.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
application.xml<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">beans&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.springframework.org/schema/beans"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:jee</span><span style="color: #0000ff">="http://www.springframework.org/schema/jee"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000ff">="http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/jee&nbsp;http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;任务调度对象&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="mainJob"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff">="org.springframework.scheduling.quartz.JobDetailBean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;运行的类&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jobClass"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jobs.MainJob</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;需要用到的对象&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jobDataAsMap"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">entry&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="data"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">data</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">entry</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;简单的触发器&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="mainTrigger"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff">="org.springframework.scheduling.quartz.SimpleTriggerBean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jobDetail"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;上面创建的任务调度对象&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref&nbsp;</span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="mainJob"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;启动60秒后执行任务调度的excute方法&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="startDelay"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">6000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;运行次数&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="repeatCount"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">0</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;隔一个小时运行一次(貌似多余,不写会报错)&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="repeatInterval"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">3600000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;任务调度工厂类&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="org.springframework.scheduling.quartz.SchedulerFactoryBean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;这一部分的配置不用管&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="quartzProperties"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">props</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">prop&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="org.quartz.threadPool.class"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.quartz.simpl.SimpleThreadPool<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">prop</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">prop&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="org.quartz.threadPool.threadCount"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">10</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">prop</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">prop&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="org.quartz.threadPool.threadPriority"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">prop</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">prop<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">prop</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">props</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;触发器,可以放一大堆触发器&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="triggers"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">list</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;在这里加&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref&nbsp;</span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="mainTrigger"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">list</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">beans</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<img src ="http://www.blogjava.net/alexwan/aggbug/207241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-11 23:21 <a href="http://www.blogjava.net/alexwan/archive/2008/06/11/207241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用eclipse生成文档（javadoc） </title><link>http://www.blogjava.net/alexwan/archive/2008/06/07/206478.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Sat, 07 Jun 2008 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/07/206478.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/206478.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/07/206478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/206478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/206478.html</trackback:ping><description><![CDATA[使用eclipse生成文档（javadoc）主要有三种方法：<br />
1，在项目列表中按右键，选择Export（导出），然后在Export(导出)对话框中选择java下的javadoc，提交到下一步。<br />
在Javadoc Generation对话框中有两个地方要注意的：<br />
javadoc command:应该选择jdk的bin/javadoc.exe<br />
destination:为生成文档的保存路径，可自由选择。<br />
按finish(完成)提交即可开始生成文档。<br />
2，用菜单选择：File-&gt;Export(文件－&gt;导出)，<br />
剩下的步骤和第一种方法是一样的。<br />
3，选中要生成文档的项目，然后用菜单选择，<br />
Project-&gt;Generate Javadoc直接进入Javadoc Generation对话框，剩余的步骤就和第一种方法在Javadoc Generation对话框开始是一样的。&nbsp;
<img src ="http://www.blogjava.net/alexwan/aggbug/206478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-07 10:26 <a href="http://www.blogjava.net/alexwan/archive/2008/06/07/206478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Velocity语法 </title><link>http://www.blogjava.net/alexwan/archive/2008/06/07/206473.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Sat, 07 Jun 2008 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/07/206473.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/206473.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/07/206473.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/206473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/206473.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.&nbsp;&nbsp;&nbsp;&nbsp; 变量(1)变量的定义：#set($name = "hello")&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;说明：velocity中变量是弱类型的。当使用#set 指令时，括在双引号中的字面字符串将解析和重新解释，如下所示：#set($directoryRoot = "www" )#set($templat...&nbsp;&nbsp;<a href='http://www.blogjava.net/alexwan/archive/2008/06/07/206473.html'>阅读全文</a><img src ="http://www.blogjava.net/alexwan/aggbug/206473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-07 10:18 <a href="http://www.blogjava.net/alexwan/archive/2008/06/07/206473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>velocity开发插件 </title><link>http://www.blogjava.net/alexwan/archive/2008/06/07/206472.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Sat, 07 Jun 2008 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/07/206472.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/206472.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/07/206472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/206472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/206472.html</trackback:ping><description><![CDATA[<p>veloeclipse<br />
<a href="http://propsorter.sourceforge.net/veloeclipse">http://propsorter.sourceforge.net/veloeclipse</a></p>
<p>Properties Editor </p>
<p><a href="http://propedit.sourceforge.jp/eclipse/updates/">http://propedit.sourceforge.jp/eclipse/updates/</a>&nbsp;</p>
<img src ="http://www.blogjava.net/alexwan/aggbug/206472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-07 10:16 <a href="http://www.blogjava.net/alexwan/archive/2008/06/07/206472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 关于cas原理  </title><link>http://www.blogjava.net/alexwan/archive/2008/06/07/206461.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Sat, 07 Jun 2008 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/07/206461.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/206461.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/07/206461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/206461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/206461.html</trackback:ping><description><![CDATA[<p>from:http://www.javaeye.com/topic/21770?page=3</p>
<p>CAS用来标志用户的token是存在它自己的域名下的,不是存在web应用的域名下的.CAS判断用户登录由agent决定,agent验证用户信息有两种处理. <br />
1.如果这个用户是以前没登录过的,也就是说这个web应用的域名下没有一个agent颁发的sessionid(在cookie里)的话,那么它会跳转到CAS server的登录界面(这里由CAS server决定是否显示登录界面,还是直接就跳转回来,也就是不是每次都要求输入密码登录的). <br />
2.CAS的登录界面会有两种处理.如果以前没登录过,也就是在CAS server自己的域名下,没有用户的token的话,就要求登录.如果有token的话,就返回一个ticket(也就是不显示登录界面直接重定向返回了). <br />
然后接第一步里面,agent收到ticket以后就提交给CAS server验证,并取得返回信息(是个xml,cas的协议规定的,也可以用saml之类的,这个地方可以取得除了用户姓名以外的信息,这样就可以做同步了,权限的问题可以这么解决).然后agent就保存此时的session,把sessionid放到该web应用域名下的cookie里. <br />
以上逻辑说明了,标志用户身份的token在CAS server的域名下,每个web应用不保存用户身份.因此跨域是绝对没问题的.只是single sign off就需要CAS server的配合了,要把那个token删掉. <br />
不过如果标志身份的token不存在,而sessionid存在,那还是被认为是登录的,只不过是在等待那个session timeout而已. </p>
 <img src ="http://www.blogjava.net/alexwan/aggbug/206461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-07 09:19 <a href="http://www.blogjava.net/alexwan/archive/2008/06/07/206461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cas登陆验证流程图</title><link>http://www.blogjava.net/alexwan/archive/2008/06/07/206460.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Sat, 07 Jun 2008 01:18:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/07/206460.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/206460.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/07/206460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/206460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/206460.html</trackback:ping><description><![CDATA[<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/alexwan/cas服务端流程_gif_1.gif" /><br />
<p>图片中的字体稍微小了点,呵呵,使用visio我还算是个新手!&nbsp;</p>
<p>ps:这个流程图是根据cas服务端的webflow的配置画出来,如有本人有理解错误的!欢迎指正!</p>
 <img src ="http://www.blogjava.net/alexwan/aggbug/206460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-07 09:18 <a href="http://www.blogjava.net/alexwan/archive/2008/06/07/206460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PATTERN FORMATS GLOSSARY for log4j </title><link>http://www.blogjava.net/alexwan/archive/2008/06/07/206458.html</link><dc:creator>Alexwan</dc:creator><author>Alexwan</author><pubDate>Sat, 07 Jun 2008 01:10:00 GMT</pubDate><guid>http://www.blogjava.net/alexwan/archive/2008/06/07/206458.html</guid><wfw:comment>http://www.blogjava.net/alexwan/comments/206458.html</wfw:comment><comments>http://www.blogjava.net/alexwan/archive/2008/06/07/206458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexwan/comments/commentRss/206458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexwan/services/trackbacks/206458.html</trackback:ping><description><![CDATA[<p>From :<a href="http://topic.csdn.net/t/20040706/20/3151154.html">http://topic.csdn.net/t/20040706/20/3151154.html</a></p>
<p>!-----------------------------------------------------------------------------!&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PATTERN&nbsp;&nbsp; FORMATS&nbsp;&nbsp; GLOSSARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !-----------------------------------------------------------------------------!&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %n&nbsp;&nbsp; -&nbsp;&nbsp; newline&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %m&nbsp;&nbsp; -&nbsp;&nbsp; your&nbsp;&nbsp; log&nbsp;&nbsp; message&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %p&nbsp;&nbsp; -&nbsp;&nbsp; message&nbsp;&nbsp; priority&nbsp;&nbsp; (FATAL,&nbsp;&nbsp; ERROR,&nbsp;&nbsp; WARN,&nbsp;&nbsp; INFO,&nbsp;&nbsp; DEBUG&nbsp;&nbsp; or&nbsp;&nbsp; custom)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %r&nbsp;&nbsp; -&nbsp;&nbsp; millisecs&nbsp;&nbsp; since&nbsp;&nbsp; program&nbsp;&nbsp; started&nbsp;&nbsp; running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp;&nbsp; %%&nbsp; -&nbsp;&nbsp; percent&nbsp;&nbsp; sign&nbsp;&nbsp; in&nbsp;&nbsp; output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !-----------------------SOME&nbsp;&nbsp; MORE&nbsp;&nbsp; CLUTTER&nbsp;&nbsp; IN&nbsp;&nbsp; YOUR&nbsp;&nbsp; LOG-------------------------!&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %c&nbsp;&nbsp; -&nbsp;&nbsp; name&nbsp;&nbsp; of&nbsp;&nbsp; your&nbsp;&nbsp; category&nbsp;&nbsp; (logger),&nbsp;&nbsp; %c{2}&nbsp;&nbsp; will&nbsp;&nbsp; outputs&nbsp;&nbsp; last&nbsp;&nbsp; two&nbsp;&nbsp; components&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %t&nbsp;&nbsp; -&nbsp;&nbsp; name&nbsp;&nbsp; of&nbsp;&nbsp; current&nbsp;&nbsp; thread&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %x&nbsp;&nbsp; -&nbsp;&nbsp; Nested&nbsp;&nbsp; Diagnostic&nbsp;&nbsp; Context&nbsp;&nbsp; (NDC)&nbsp;&nbsp; (you&nbsp;&nbsp; supply&nbsp;&nbsp; it!)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !-------------------------SLOW&nbsp;&nbsp; PERFORMANCE&nbsp;&nbsp; FORMATS----------------------------!&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %d&nbsp;&nbsp; -&nbsp;&nbsp; date&nbsp;&nbsp; and&nbsp;&nbsp; time,&nbsp;&nbsp; also&nbsp;&nbsp; %d{ISO8601},&nbsp;&nbsp; %d{DATE},&nbsp;&nbsp; %d{ABSOLUTE},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %d{HH:mm:ss,SSS},&nbsp;&nbsp; %d{dd&nbsp;&nbsp; MMM&nbsp;&nbsp; yyyy&nbsp;&nbsp; HH:mm:ss,SSS}&nbsp;&nbsp; and&nbsp;&nbsp; so&nbsp;&nbsp; on&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %l&nbsp;&nbsp; -&nbsp;&nbsp; Shortcut&nbsp;&nbsp; for&nbsp;&nbsp; %F%L%C%M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %F&nbsp;&nbsp; -&nbsp;&nbsp; Java&nbsp;&nbsp; source&nbsp;&nbsp; file&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %L&nbsp;&nbsp; -&nbsp;&nbsp; Java&nbsp;&nbsp; source&nbsp;&nbsp; line&nbsp;&nbsp; number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %C&nbsp;&nbsp; -&nbsp;&nbsp; Java&nbsp;&nbsp; class&nbsp;&nbsp; name,&nbsp;&nbsp; %C{1}&nbsp;&nbsp; will&nbsp;&nbsp; output&nbsp;&nbsp; the&nbsp;&nbsp; last&nbsp;&nbsp; one&nbsp;&nbsp; component&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %M&nbsp;&nbsp; -&nbsp;&nbsp; Java&nbsp;&nbsp; method&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !------------------------------FORMAT&nbsp;&nbsp; MODIFIERS-------------------------------!&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %-any_letter_above&nbsp;&nbsp; -&nbsp;&nbsp; Left-justify&nbsp;&nbsp; in&nbsp;&nbsp; min.&nbsp;&nbsp; width&nbsp;&nbsp; (default&nbsp;&nbsp; is&nbsp;&nbsp; right-justify)&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %20any_letter_above&nbsp;&nbsp; -&nbsp;&nbsp; 20&nbsp;&nbsp; char.&nbsp;&nbsp; min.&nbsp;&nbsp; width&nbsp;&nbsp; (pad&nbsp;&nbsp; with&nbsp;&nbsp; spaces&nbsp;&nbsp; if&nbsp;&nbsp; reqd.)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %.30any_letter_above&nbsp;&nbsp; -&nbsp;&nbsp; 30&nbsp;&nbsp; char.&nbsp;&nbsp; max.&nbsp;&nbsp; width&nbsp;&nbsp; (truncate&nbsp;&nbsp; beginning&nbsp;&nbsp; if&nbsp;&nbsp; reqd.)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp; %-10.10r&nbsp;&nbsp; -&nbsp;&nbsp; Example.&nbsp;&nbsp;&nbsp;&nbsp; Left-justify&nbsp;&nbsp; time&nbsp;&nbsp; elapsed&nbsp;&nbsp; within&nbsp;&nbsp; 10-wide&nbsp;&nbsp; field.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Truncate&nbsp;&nbsp; from&nbsp;&nbsp; beginning&nbsp;&nbsp; if&nbsp;&nbsp; wider&nbsp;&nbsp; than&nbsp;&nbsp; 10&nbsp;&nbsp; characters.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !&nbsp;&nbsp; <br />
&nbsp; !-----------------------------------------------------------------------------!&nbsp;&nbsp; <br />
</p>
  <img src ="http://www.blogjava.net/alexwan/aggbug/206458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexwan/" target="_blank">Alexwan</a> 2008-06-07 09:10 <a href="http://www.blogjava.net/alexwan/archive/2008/06/07/206458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>