﻿<?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-Enjoy yourself,and don't care about others' thinking!-随笔分类-Java</title><link>http://www.blogjava.net/TiGERTiAN/category/2176.html</link><description>----TiGERTiAN</description><language>zh-cn</language><lastBuildDate>Thu, 27 Mar 2008 13:07:50 GMT</lastBuildDate><pubDate>Thu, 27 Mar 2008 13:07:50 GMT</pubDate><ttl>60</ttl><item><title>Java中批处理SQL的使用方法(JDBC)</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/03/27/189092.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Thu, 27 Mar 2008 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/03/27/189092.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/189092.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/03/27/189092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/189092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/189092.html</trackback:ping><description><![CDATA[<p>&nbsp;</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">Connection&nbsp;conn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getConnectionFromSomeplace();&nbsp;conn.setAutoCommit(</span><span style="color: #0000ff">false</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Statement&nbsp;stmt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;conn.createStatement();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Step&nbsp;1:&nbsp;insert&nbsp;the&nbsp;person&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">stmt.addBatch(</span><span style="color: #000000">"</span><span style="color: #000000">INSERT&nbsp;INTO&nbsp;person&nbsp;(id,&nbsp;f_name,&nbsp;l_name)&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">VALUES&nbsp;(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;'</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;firstName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">',&nbsp;'</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;lastName&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">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Step&nbsp;2:&nbsp;insert&nbsp;the&nbsp;person's&nbsp;account&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">stmt.addBatch(</span><span style="color: #000000">"</span><span style="color: #000000">INSERT&nbsp;INTO&nbsp;account&nbsp;(personID,&nbsp;type)&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">VALUES&nbsp;(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;'SAVINGS')</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Execute&nbsp;the&nbsp;batch&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">[]&nbsp;results&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;stmt.executeBatch();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Check&nbsp;the&nbsp;batched&nbsp;results&nbsp;boolean&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">completeSuccess&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;<br />
<img id="Codehighlighter1_564_709_Open_Image" onclick="this.style.display='none'; Codehighlighter1_564_709_Open_Text.style.display='none'; Codehighlighter1_564_709_Closed_Image.style.display='inline'; Codehighlighter1_564_709_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_564_709_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_564_709_Closed_Text.style.display='none'; Codehighlighter1_564_709_Open_Image.style.display='inline'; Codehighlighter1_564_709_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></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</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">results.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_564_709_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_564_709_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(results[i]&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;results[i]&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">Statement.SUCCESS_NO_INFO)&nbsp;<br />
<img id="Codehighlighter1_636_706_Open_Image" onclick="this.style.display='none'; Codehighlighter1_636_706_Open_Text.style.display='none'; Codehighlighter1_636_706_Closed_Image.style.display='inline'; Codehighlighter1_636_706_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_636_706_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_636_706_Closed_Text.style.display='none'; Codehighlighter1_636_706_Open_Image.style.display='inline'; Codehighlighter1_636_706_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_636_706_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_636_706_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img id="Codehighlighter1_639_677_Open_Image" onclick="this.style.display='none'; Codehighlighter1_639_677_Open_Text.style.display='none'; Codehighlighter1_639_677_Closed_Image.style.display='inline'; Codehighlighter1_639_677_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_639_677_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_639_677_Closed_Text.style.display='none'; Codehighlighter1_639_677_Open_Image.style.display='inline'; Codehighlighter1_639_677_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_639_677_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">/**/</span><span id="Codehighlighter1_639_677_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;Something&nbsp;went&nbsp;wrong;&nbsp;alert&nbsp;user?&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />completeSuccess&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(completeSuccess)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />conn.commit();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;conn.rollback();</span></div>
先要关闭AutoCommit，然后根据数据库返回的结果手动进行提交或者回滚
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/189092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-03-27 18:01 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/03/27/189092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对象池技术</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/11/10/159640.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sat, 10 Nov 2007 14:53:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/11/10/159640.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/159640.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/11/10/159640.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/159640.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/159640.html</trackback:ping><description><![CDATA[<p>目前正在为一个C/S架构的超市业务往来系统进行系统架构，为了提升性能和改善维护性，我准备使用对象池技术，在此之前参考了BeanSoft的那篇对象池代码，用.Net重写了一个并测试了性能。<br />
<br />
测试用例：<br />
&nbsp;&nbsp;&nbsp;&nbsp;10000次生成OleDbConnection的实例，并使用Open方法打开连接<br />
结果：<br />
&nbsp;&nbsp;&nbsp;&nbsp;直接使用new语句生成实例不释放 需要12秒多一点<br />
&nbsp;&nbsp;&nbsp;&nbsp;使用对象池生成实例不释放 需要7秒多一点<br />
&nbsp;&nbsp;&nbsp;&nbsp;性能提升约 48%左右<br />
<br />
但是如果在每次使用之后都调用Close()方法释放资源的话，则两者性能基本相同。<br />
<br />
看来主要是因为占用的资源不释放，导致系统变慢。换句话说，如果系统需要比较频繁的调用某些对象的实例的话，那么可以使用对象池技术来改善总体性能。</p>
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/159640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-11-10 22:53 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/11/10/159640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java  Generics And Collection 学习笔记(1)</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/10/28/156535.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 28 Oct 2007 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/10/28/156535.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/156535.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/10/28/156535.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/156535.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/156535.html</trackback:ping><description><![CDATA[请看下面两段代码<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 id="Codehighlighter1_34_70_Open_Image" onclick="this.style.display='none'; Codehighlighter1_34_70_Open_Text.style.display='none'; Codehighlighter1_34_70_Closed_Image.style.display='inline'; Codehighlighter1_34_70_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_34_70_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_34_70_Closed_Text.style.display='none'; Codehighlighter1_34_70_Open_Image.style.display='inline'; Codehighlighter1_34_70_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;Name&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Comparable&nbsp;</span><span id="Codehighlighter1_34_70_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_34_70_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;compareTo(Object&nbsp;o);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_106_280_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_280_Open_Text.style.display='none'; Codehighlighter1_106_280_Closed_Image.style.display='inline'; Codehighlighter1_106_280_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_106_280_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_106_280_Closed_Text.style.display='none'; Codehighlighter1_106_280_Open_Image.style.display='inline'; Codehighlighter1_106_280_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SimpleName&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Name&nbsp;</span><span id="Codehighlighter1_106_280_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_106_280_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;base;<br />
<img id="Codehighlighter1_164_190_Open_Image" onclick="this.style.display='none'; Codehighlighter1_164_190_Open_Text.style.display='none'; Codehighlighter1_164_190_Closed_Image.style.display='inline'; Codehighlighter1_164_190_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_164_190_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_164_190_Closed_Text.style.display='none'; Codehighlighter1_164_190_Open_Image.style.display='inline'; Codehighlighter1_164_190_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SimpleName(String&nbsp;base)&nbsp;</span><span id="Codehighlighter1_164_190_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_164_190_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.base&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;base;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_225_278_Open_Image" onclick="this.style.display='none'; Codehighlighter1_225_278_Open_Text.style.display='none'; Codehighlighter1_225_278_Closed_Image.style.display='inline'; Codehighlighter1_225_278_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_225_278_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_225_278_Closed_Text.style.display='none'; Codehighlighter1_225_278_Open_Image.style.display='inline'; Codehighlighter1_225_278_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;compareTo(Object&nbsp;o)&nbsp;</span><span id="Codehighlighter1_225_278_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_225_278_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;base.compareTo(((SimpleName)o).base);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_321_623_Open_Image" onclick="this.style.display='none'; Codehighlighter1_321_623_Open_Text.style.display='none'; Codehighlighter1_321_623_Closed_Image.style.display='inline'; Codehighlighter1_321_623_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_321_623_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_321_623_Closed_Text.style.display='none'; Codehighlighter1_321_623_Open_Image.style.display='inline'; Codehighlighter1_321_623_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ExtendedName&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;SimpleName&nbsp;</span><span id="Codehighlighter1_321_623_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_321_623_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;ext;<br />
<img id="Codehighlighter1_392_429_Open_Image" onclick="this.style.display='none'; Codehighlighter1_392_429_Open_Text.style.display='none'; Codehighlighter1_392_429_Closed_Image.style.display='inline'; Codehighlighter1_392_429_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_392_429_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_392_429_Closed_Text.style.display='none'; Codehighlighter1_392_429_Open_Image.style.display='inline'; Codehighlighter1_392_429_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ExtendedName(String&nbsp;base,&nbsp;String&nbsp;ext)&nbsp;</span><span id="Codehighlighter1_392_429_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_392_429_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">(base);&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.ext&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ext;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_464_621_Open_Image" onclick="this.style.display='none'; Codehighlighter1_464_621_Open_Text.style.display='none'; Codehighlighter1_464_621_Closed_Image.style.display='inline'; Codehighlighter1_464_621_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_464_621_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_464_621_Closed_Text.style.display='none'; Codehighlighter1_464_621_Open_Image.style.display='inline'; Codehighlighter1_464_621_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;compareTo(Object&nbsp;o)&nbsp;</span><span id="Codehighlighter1_464_621_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_464_621_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">.compareTo(o);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(c&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;o&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;ExtendedName)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;ext.compareTo(((ExtendedName)o).ext);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;c;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_639_799_Open_Image" onclick="this.style.display='none'; Codehighlighter1_639_799_Open_Text.style.display='none'; Codehighlighter1_639_799_Closed_Image.style.display='inline'; Codehighlighter1_639_799_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_639_799_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_639_799_Closed_Text.style.display='none'; Codehighlighter1_639_799_Open_Image.style.display='inline'; Codehighlighter1_639_799_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Client&nbsp;</span><span id="Codehighlighter1_639_799_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_639_799_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_682_797_Open_Image" onclick="this.style.display='none'; Codehighlighter1_682_797_Open_Text.style.display='none'; Codehighlighter1_682_797_Closed_Image.style.display='inline'; Codehighlighter1_682_797_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_682_797_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_682_797_Closed_Text.style.display='none'; Codehighlighter1_682_797_Open_Image.style.display='inline'; Codehighlighter1_682_797_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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)&nbsp;</span><span id="Codehighlighter1_682_797_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_682_797_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;m&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ExtendedName(</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">b</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ExtendedName(</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">c</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">assert</span><span style="color: #000000">&nbsp;m.compareTo(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">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></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" /></span></div>
<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 id="Codehighlighter1_40_74_Open_Image" onclick="this.style.display='none'; Codehighlighter1_40_74_Open_Text.style.display='none'; Codehighlighter1_40_74_Closed_Image.style.display='inline'; Codehighlighter1_40_74_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_40_74_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_40_74_Closed_Text.style.display='none'; Codehighlighter1_40_74_Open_Image.style.display='inline'; Codehighlighter1_40_74_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;Name&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Comparable</span><span style="color: #000000">&lt;</span><span style="color: #000000">Name</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_40_74_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_40_74_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;compareTo(Name&nbsp;o);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_110_282_Open_Image" onclick="this.style.display='none'; Codehighlighter1_110_282_Open_Text.style.display='none'; Codehighlighter1_110_282_Closed_Image.style.display='inline'; Codehighlighter1_110_282_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_110_282_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_110_282_Closed_Text.style.display='none'; Codehighlighter1_110_282_Open_Image.style.display='inline'; Codehighlighter1_110_282_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SimpleName&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Name&nbsp;</span><span id="Codehighlighter1_110_282_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_110_282_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;base;<br />
<img id="Codehighlighter1_168_194_Open_Image" onclick="this.style.display='none'; Codehighlighter1_168_194_Open_Text.style.display='none'; Codehighlighter1_168_194_Closed_Image.style.display='inline'; Codehighlighter1_168_194_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_168_194_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_168_194_Closed_Text.style.display='none'; Codehighlighter1_168_194_Open_Image.style.display='inline'; Codehighlighter1_168_194_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SimpleName(String&nbsp;base)&nbsp;</span><span id="Codehighlighter1_168_194_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_168_194_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.base&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;base;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_227_280_Open_Image" onclick="this.style.display='none'; Codehighlighter1_227_280_Open_Text.style.display='none'; Codehighlighter1_227_280_Closed_Image.style.display='inline'; Codehighlighter1_227_280_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_227_280_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_227_280_Closed_Text.style.display='none'; Codehighlighter1_227_280_Open_Image.style.display='inline'; Codehighlighter1_227_280_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;compareTo(Name&nbsp;o)&nbsp;</span><span id="Codehighlighter1_227_280_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_227_280_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;base.compareTo(((SimpleName)o).base);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></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" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;use&nbsp;legacy&nbsp;class&nbsp;file&nbsp;for&nbsp;ExtendedName</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000"><br />
<img id="Codehighlighter1_339_529_Open_Image" onclick="this.style.display='none'; Codehighlighter1_339_529_Open_Text.style.display='none'; Codehighlighter1_339_529_Closed_Image.style.display='inline'; Codehighlighter1_339_529_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_339_529_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_339_529_Closed_Text.style.display='none'; Codehighlighter1_339_529_Open_Image.style.display='inline'; Codehighlighter1_339_529_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Test&nbsp;</span><span id="Codehighlighter1_339_529_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_339_529_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_382_527_Open_Image" onclick="this.style.display='none'; Codehighlighter1_382_527_Open_Text.style.display='none'; Codehighlighter1_382_527_Closed_Image.style.display='inline'; Codehighlighter1_382_527_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_382_527_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_382_527_Closed_Text.style.display='none'; Codehighlighter1_382_527_Open_Image.style.display='inline'; Codehighlighter1_382_527_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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)&nbsp;</span><span id="Codehighlighter1_382_527_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_382_527_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;m&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ExtendedName(</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">b</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ExtendedName(</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">c</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">assert</span><span style="color: #000000">&nbsp;m.compareTo(n)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;answer&nbsp;is&nbsp;now&nbsp;different!</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></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" /></span></div>
<br />
注意到不一样的地方呢吗？compareTo方法的参数不一样。上面的代码在调用m.compareTo(n)的时候会调用ExtendedName中的，而下面这种不会，因为ExtendedName中的compareTo参数是Object，相当于重载了compareTo的方法，而父类SimpleName中的compareTo方法由于参数不同仍然被保留了，所以将Name类型的参数传给compareTo的时候会优先调用SimpleName中的compareTo(Name)来进行比较。<br />
所以在一些继承里面，建议使用Object做参数的类型，称之为Binary Compatibility。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/156535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-10-28 21:09 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/10/28/156535.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.lang.OutOfMemoryError: PermGen space 的疑惑</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152756.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 14 Oct 2007 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152756.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/152756.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152756.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/152756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/152756.html</trackback:ping><description><![CDATA[今天还碰到了PermGen Space 的异常，搜索了一下有一些解决方法<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">1</span><span style="color: #000000">、<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="" />PermGen&nbsp;space的全称是Permanent&nbsp;Generation&nbsp;space,是指内存的永久保存区域OutOfMemoryError:&nbsp;PermGen&nbsp;space从表面上看就是内存益出，解决方法也一定是加大内存。说说为什么会内存益出：这一部分用于存放Class和Meta的信息,Class在被&nbsp;Load的时候被放入PermGen&nbsp;space区域，它和和存放Instance的Heap区域不同,GC(Garbage&nbsp;Collection)不会在主程序运行期对PermGen&nbsp;space进行清理，所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen&nbsp;space错误。这种错误常见在web服务器对JSP进行pre&nbsp;compile的时候。<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: #000000">-</span><span style="color: #000000">Xms256m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xmx256m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">XX:MaxNewSize</span><span style="color: #000000">=</span><span style="color: #000000">256m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">XX:MaxPermSize</span><span style="color: #000000">=</span><span style="color: #000000">256m&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">2</span><span style="color: #000000">、<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="" />在tomcat中redeploy时出现outofmemory的错误.<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 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: #000000">１</span><span style="color: #000000">,使用了proxool,因为proxool内部包含了一个老版本的cglib.<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: #000000">2</span><span style="color: #000000">,&nbsp;log4j,最好不用,只用common</span><span style="color: #000000">-</span><span style="color: #000000">logging<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: #000000">3</span><span style="color: #000000">,&nbsp;老版本的cglib,快点更新到最新版。<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: #000000">４</span><span style="color: #000000">，更新到最新的hibernate3.</span><span style="color: #000000">2</span><span style="color: #000000"><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: #000000">3</span><span style="color: #000000">、<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="" />这里以tomcat环境为例，其它WEB服务器如jboss,weblogic等是同一个道理。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />一、java.lang.OutOfMemoryError:&nbsp;PermGen&nbsp;space&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />PermGen&nbsp;space的全称是Permanent&nbsp;Generation&nbsp;space,是指内存的永久保存区域,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen&nbsp;space中,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />它和存放类实例(Instance)的Heap区域不同,GC(Garbage&nbsp;Collection)不会在主程序运行期对&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />PermGen&nbsp;space进行清理，所以如果你的应用中有很多CLASS的话,就很可能出现PermGen&nbsp;space错误,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />这种错误常见在web服务器对JSP进行pre&nbsp;compile的时候。如果你的WEB&nbsp;APP下都用了大量的第三方jar,&nbsp;其大小&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />超过了jvm默认的大小(4M)那么就会产生此错误信息了。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />解决方法：&nbsp;手动设置MaxPermSize大小<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="" />修改TOMCAT_HOME</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">catalina.sh&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />在&#8220;echo&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Using&nbsp;CATALINA_BASE:&nbsp;$CATALINA_BASE</span><span style="color: #000000">"</span><span style="color: #000000">&#8221;上面加入以下行：&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JAVA_OPTS</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">-server&nbsp;-XX:PermSize=64M&nbsp;-XX:MaxPermSize=128m&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">建议：将相同的第三方jar文件移置到tomcat</span><span style="color: #000000">/</span><span style="color: #000000">shared</span><span style="color: #000000">/</span><span style="color: #000000">lib目录下，这样可以达到减少jar&nbsp;文档重复占用内存的目的。<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="" />二、java.lang.OutOfMemoryError:&nbsp;Java&nbsp;heap&nbsp;space&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Heap&nbsp;size&nbsp;设置&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap&nbsp;size的值，&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />其初始空间(即</span><span style="color: #000000">-</span><span style="color: #000000">Xms)是物理内存的1</span><span style="color: #000000">/</span><span style="color: #000000">64</span><span style="color: #000000">，最大空间(</span><span style="color: #000000">-</span><span style="color: #000000">Xmx)是物理内存的1</span><span style="color: #000000">/</span><span style="color: #000000">4</span><span style="color: #000000">。可以利用JVM提供的</span><span style="color: #000000">-</span><span style="color: #000000">Xmn&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xms&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xmx等选项可&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />进行设置。Heap&nbsp;size&nbsp;的大小是Young&nbsp;Generation&nbsp;和Tenured&nbsp;Generaion&nbsp;之和。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />提示：在JVM中如果98％的时间是用于GC且可用的Heap&nbsp;size&nbsp;不足2％的时候将抛出此异常信息。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />提示：Heap&nbsp;Size&nbsp;最大不要超过可用物理内存的80％，一般的要将</span><span style="color: #000000">-</span><span style="color: #000000">Xms和</span><span style="color: #000000">-</span><span style="color: #000000">Xmx选项设置为相同，而</span><span style="color: #000000">-</span><span style="color: #000000">Xmn为1</span><span style="color: #000000">/</span><span style="color: #000000">4的</span><span style="color: #000000">-</span><span style="color: #000000">Xmx值。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />解决方法：手动设置Heap&nbsp;size&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />修改TOMCAT_HOME</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">catalina.sh&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />在&#8220;echo&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Using&nbsp;CATALINA_BASE:&nbsp;$CATALINA_BASE</span><span style="color: #000000">"</span><span style="color: #000000">&#8221;上面加入以下行：&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JAVA_OPTS</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">-server&nbsp;-Xms800m&nbsp;-Xmx800m&nbsp;-XX:MaxNewSize=256m</span><span style="color: #000000">"</span><span style="color: #000000"><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="" />三、实例，以下给出1G内存环境下java&nbsp;jvm&nbsp;的参数设置参考：<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="" />JAVA_OPTS</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">-server&nbsp;-Xms800m&nbsp;-Xmx800m&nbsp;-XX:PermSize=64M&nbsp;-XX:MaxNewSize=256m&nbsp;-XX:MaxPermSize=128m&nbsp;-Djava.awt.headless=true&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000"><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 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="" />http:</span><span style="color: #008000">//</span><span style="color: #008000">www.tot.name/show/3/7/20061112220131.htm</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />http:</span><span style="color: #008000">//</span><span style="color: #008000">www.tot.name/show/3/7/20061112220054.htm</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />http:</span><span style="color: #008000">//</span><span style="color: #008000">www.tot.name/show/3/7/20061112220201.htm</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />题外话：经常看到网友抱怨tomcat的性能不如<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />，不稳定等，其实根据笔者几年的经验，从</span><span style="color: #000000">"</span><span style="color: #000000">互联星空&#8220;到现在的房产门户网，我们&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">均使用tomcat作为WEB服务器，每天访问量百万多，tomcat仍然运行良好。建议大家有问题多从自己程序入手，多看看java的DOC文档&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />并详细了解JVM的知识。这样开发的程序才会健壮。<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="" />JVM&nbsp;性能调整的一些基本概念&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />http:</span><span style="color: #008000">//</span><span style="color: #008000">www.wujianrong.com/archives/2007/02/jvm_1.html#more&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">apache</span><span style="color: #000000">+</span><span style="color: #000000">Tomcat负载平衡设置详解<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="" />http:</span><span style="color: #008000">//</span><span style="color: #008000">www.wujianrong.com/archives/2006/11/apachetomcat.html&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">java&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;the&nbsp;Java&nbsp;application&nbsp;launcher<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="" />http:</span><span style="color: #008000">//</span><span style="color: #008000">java.sun.com/j2se/1.3/docs/tooldocs/linux/java.html</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JVM调优&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />http:</span><span style="color: #008000">//</span><span style="color: #008000">www.wujianrong.com/archives/2006/11/jvm.html<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
但是我还搜索到JavaEye的这篇文章http://www.javaeye.com/topic/80620<br />
他提到了这个不是开源框架的问题，是Sun JDK的问题，属于Bug，但是至今还没有修正。<br />
我也感觉是这样的，因为我的应用很小，基本不可能将内存耗尽，而且tomcat或者JBoss运行半个小时就会崩溃，我以前没有太碰到过，今天算是领教了，解决办法除了上面的，还可以换一个JDK，可以使用BEA的JRockit<br />
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/152756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-10-14 17:06 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate中at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)异常的解决方法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152752.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 14 Oct 2007 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152752.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/152752.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152752.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/152752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/152752.html</trackback:ping><description><![CDATA[<p>今天写webwork+spring+hibernate的时候碰到了这个问题</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">java.lang.NullPointerException<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />at&nbsp;org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:</span><span style="color: #000000">372</span><span style="color: #000000">)</span></div>
这个问题出得很莫名其妙，我在用find方法找数据的时候，如果数据库中不存在这条记录，那么代码一切正常，但如果存在相应记录就会抛出上面的异常，搜了一圈，首先在国外的网站上找到一个方法<br />
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel<br />
主要说的是问题出在CGLib上面，修正一下就可以了，下载中也给出了patch，我没有试过，<br />
我看到了最后一条评论，直接更新CGlib到2.2beta就可以了。我试了一下，问题解决了。<br />
在搜索过程中，JavaEye有个帖子也提到了这个问题，解决办法除了上面那个，还有人说可以<br />
设置相关表的lazy="false"解决问题，我没有尝试过，大家可以看看，各取所需。<br />
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/152752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-10-14 16:55 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jsp中的大祸根</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/10/13/152621.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sat, 13 Oct 2007 11:32:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/10/13/152621.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/152621.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/10/13/152621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/152621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/152621.html</trackback:ping><description><![CDATA[&nbsp;&lt;base href="&lt;%=basePath%&gt;"&gt;<br />
<br />
这句话大家很常见了，但是如果不注意的话，这句话会成为Java Web的梦魇，我今天在做Webwork的时候，怎么都有问题，无法提交到指定页面，只会刷新当前表单页面，找了很久，才想起来这句话指示了base，所以无论你是提交表单还是webwork内部的转向，都会出错，有的时候提示找不到地址，有的时候压根不提示。并且页面显示也会出现问题。大家以后要注意了。 <br />
这句话主要就是痿了让我们在写路径的时候统一一下，方便迁移。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/152621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-10-13 19:32 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/10/13/152621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新学期新气象新的研究方向</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/10/02/150153.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Tue, 02 Oct 2007 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/10/02/150153.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/150153.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/10/02/150153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/150153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/150153.html</trackback:ping><description><![CDATA[这个学期主要研究JavaMail API, 基于lucene的搜索引擎（当然还有采集系统），以及学校的GIS项目，又是一个充实的新学期，哈哈！
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/150153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-10-02 09:46 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/10/02/150153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]tomcat中MySQL连接池配置</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/09/23/147539.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 23 Sep 2007 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/09/23/147539.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/147539.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/09/23/147539.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/147539.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/147539.html</trackback:ping><description><![CDATA[来源：feng - BlogJava<br />
<br />
　　由于直接编辑server.xml配置连接池很容易出现错误，我估计是tomcat版本问题，没个版本可能配置有点点差别，所以我建议使用在http://localhost/admin/中进行数据源的配置，下载tomcat的admin包，安装过程如下<br />
<br />
　　下载下来进行解压，得到三个文件，和两个包，一个叫conf包，另外一个叫做server包。<br />
<br />
　　接着进行安装：那三个单独的文件不用管；把conf\Catalina\localhost\下面的一个配置文件admin.xml放在你tomcat安装目录下面的Tomcat 5.5\conf\Catalina\localhost\这个路径下，即跟host-manage.xml,manager.xml放在一起；再把server\webapps\下面的admin包拷贝到你的tomcat安装目录下的Tomcat 5.5\server\webapps\这个路径下面跟host-manager，manager包放在一块。<br />
<br />
　　安装搞定，重新启动tomcat，在地址栏输入http://localhost/admin/,在出现的截面里面输入你安装tomcat的时候你输入的用户名和密码。<br />
<br />
　　登录成功后，会出现Tomcat 的web应用管理界面（Tomcat Web Server Administration Tool）。<br />
<br />
　　然后在左边的目录树点击&#8220;Data Sources&#8221;项，右边可以看到JNDI配置的页面。<br />
<br />
　　在右上角的下拉框中选择&#8220;Create New Data Source&#8221;，接下来填写配置信息：<br />
<br />
JNDI Name: jdbc/feng /*连接池的名称*/ <br />
Data Source URL: jdbc:mysql://localhost:3306/bbs /*bbs为数据库的名称*/<br />
JDBC Driver Class: com.mysql.jdbc.Driver<br />
User Name: root<br />
Password: feng<br />
Max. Active Connections: 可用默认值 <br />
Max. Idle Connections: 可用默认值<br />
Max. Wait for Connection: 可用默认值<br />
Validation Query: 可不填写。<br />
<br />
　　然后，按下&#8220;save&#8221;按钮保存。<br />
<br />
　　再按下&#8220;Commit Changes&#8221;按钮将配置更改提交完成。<br />
<br />
　　下面这步比较重要，不加就会出现错误<br />
<br />
　　在＜Context＞＜/Context＞的描述中加上本web应用对全局连接池的引用说明，如下文字：<br />
<br />
＜ResourceLink global="jdbc/feng" name="jdbc/feng" type="javax.sql.DataSource"/＞ <br />
<br />
　　一般都是加在虚拟目录里<br />
<br />
　　类似下面<br />
<br />
＜Context<br />
crossContext="true"<br />
docBase="D:/feng"<br />
path="/feng"<br />
reloadable="true"＞<br />
<br />
<br />
＜ResourceLink global="jdbc/feng" name="jdbc/feng" type="javax.sql.DataSource"/＞<br />
＜/Context＞<br />
<br />
　　上面完成后，还需要配置对应虚拟目录WEB应用的web.xml<br />
<br />
　　内容可以参考下面<br />
<br />
＜web-app＞<br />
＜resource-ref＞<br />
＜description＞MySQL DataSource example＜/description＞<br />
＜res-ref-name＞jdbc/feng＜/res-ref-name＞<br />
＜res-type＞javax.sql.DataSource＜/res-type＞<br />
＜res-auth＞Container＜/res-auth＞<br />
＜/resource-ref＞<br />
＜/web-app＞<br />
<br />
　　保存D:\feng\WEB-INF\web.xml 文件<br />
<br />
　　应用示例<br />
<br />
＜%@ page import="java.io.*,java.util.*,java.sql.*,javax.sql.*,javax.naming.*"%＞<br />
＜%@ page contentType="text/html; charset=GB2312"%＞<br />
＜html＞<br />
＜head＞＜title＞DataSourse Connection Test＜/title＞＜/head＞<br />
＜body＞<br />
＜%<br />
try{<br />
Connection con; <br />
Statement stmt; <br />
ResultSet rs; <br />
<br />
Context ctx = new InitialContext(); <br />
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/feng"); <br />
con=ds.getConnection(); <br />
<br />
stmt=con.createStatement(); <br />
rs=stmt.executeQuery("select * from user"); <br />
while(rs.next()){<br />
out.println(rs.getString(1)); <br />
%＞<br />
＜br＞<br />
<br />
＜%<br />
<br />
out.print(rs.getString(2)); <br />
}<br />
rs.close(); <br />
stmt.close(); <br />
con.close(); <br />
<br />
}catch(Exception e){<br />
out.print(e.getMessage()); <br />
}<br />
<br />
%＞ <br />
<br />
＜/body＞<br />
＜/html＞
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/147539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-09-23 12:42 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/09/23/147539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用Spring发送Gmail(无XML配置文件版本)</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/05/30/120872.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Wed, 30 May 2007 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/05/30/120872.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/120872.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/05/30/120872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/120872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/120872.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"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><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><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.mail.MessagingException;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.mail.internet.MimeMessage;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img 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.mail.javamail.JavaMailSender;<br><img 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.mail.javamail.JavaMailSenderImpl;<br><img 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.mail.javamail.MimeMessageHelper;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_316_1790_Open_Image onclick="this.style.display='none'; Codehighlighter1_316_1790_Open_Text.style.display='none'; Codehighlighter1_316_1790_Closed_Image.style.display='inline'; Codehighlighter1_316_1790_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_316_1790_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_316_1790_Closed_Text.style.display='none'; Codehighlighter1_316_1790_Open_Image.style.display='inline'; Codehighlighter1_316_1790_Open_Text.style.display='inline';" 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;SimpleMailTest&nbsp;</span><span id=Codehighlighter1_316_1790_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"></span><span id=Codehighlighter1_316_1790_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img 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;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000">&nbsp;String&nbsp;TO&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tigertian@gmail.com</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img 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;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000">&nbsp;String&nbsp;TEXT&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello&nbsp;World!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_517_1788_Open_Image onclick="this.style.display='none'; Codehighlighter1_517_1788_Open_Text.style.display='none'; Codehighlighter1_517_1788_Closed_Image.style.display='inline'; Codehighlighter1_517_1788_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_517_1788_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_517_1788_Closed_Text.style.display='none'; Codehighlighter1_517_1788_Open_Image.style.display='inline'; Codehighlighter1_517_1788_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&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)&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;MessagingException&nbsp;</span><span id=Codehighlighter1_517_1788_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"></span><span id=Codehighlighter1_517_1788_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Properties&nbsp;prop</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Properties();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">mail.smtp.auth</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">true</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">mail.smtp.timeout</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">25000</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">mail.smtp.starttls.enable</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">true</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">mail.smtp.socketFactory.class</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.net.ssl.SSLSocketFactory</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">mail.smtp.socketFactory.fallback</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">false</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img id=Codehighlighter1_877_1253_Open_Image onclick="this.style.display='none'; Codehighlighter1_877_1253_Open_Text.style.display='none'; Codehighlighter1_877_1253_Closed_Image.style.display='inline'; Codehighlighter1_877_1253_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_877_1253_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_877_1253_Closed_Text.style.display='none'; Codehighlighter1_877_1253_Open_Image.style.display='inline'; Codehighlighter1_877_1253_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_877_1253_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">/**/</span><span id=Codehighlighter1_877_1253_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty("mail.smtp.host",&nbsp;"smtp.gmail.com");<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty("mail.smtp.socketFactory.class",&nbsp;"javax.net.ssl.SSLSocketFactory");<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty("mail.smtp.socketFactory.fallback",&nbsp;"false");<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty("mail.smtp.port",&nbsp;"465");<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty("mail.smtp.socketFactory.port",&nbsp;"465");<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.put("mail.smtp.auth",&nbsp;"true");</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaMailSenderImpl&nbsp;jms</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;JavaMailSenderImpl();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jms.setJavaMailProperties(prop);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jms.setHost(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">smtp.gmail.com</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jms.setPort(</span><span style="COLOR: #000000">465</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jms.setUsername(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">username</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jms.setPassword(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">password</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MimeMessage&nbsp;mail</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">jms.createMimeMessage();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MimeMessageHelper&nbsp;helper</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MimeMessageHelper(mail,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;helper.setSubject(TEXT</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;helper.setText(TEXT</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;helper.setTo(TO</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jms.send(mail);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Successfully!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
Study Java写的带配置文件的版本<br><a href="http://www.blogjava.net/ronghai/archive/2007/05/23/119480.html">http://www.blogjava.net/ronghai/archive/2007/05/23/119480.html</a>
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/120872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-05-30 12:01 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/05/30/120872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts中上传文件的总结</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/05/12/117008.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sat, 12 May 2007 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/05/12/117008.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/117008.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/05/12/117008.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/117008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/117008.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 先在struts-config.xml里面声明一个DynaActionForm,在做一个关联的Action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form-bean&nbsp;name="uploadForm"&nbsp;type="org.apache.struts.action.DynaActionForm"&nbsp;dynamic="true"&...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2007/05/12/117008.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/117008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-05-12 17:20 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/05/12/117008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4J的配置</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/05/11/116725.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Fri, 11 May 2007 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/05/11/116725.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/116725.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/05/11/116725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/116725.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/116725.html</trackback:ping><description><![CDATA[在web.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 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">log4j</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.log4j.Log4jInit</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">log4j</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/WEB-INF/log4j.properties</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</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;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">load-on-startup</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;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
com.log4j.Log4jInit需要自己写，貌似新版log4J已经不带初始化文件了<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">import</span><span style="color: #000000">&nbsp;org.apache.log4j.</span><span style="color: #000000">*</span><span style="color: #000000">;<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;javax.servlet.http.HttpServlet;<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;javax.servlet.http.HttpServletRequest;<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;javax.servlet.http.HttpServletResponse;<br />
<img id="Codehighlighter1_202_696_Open_Image" onclick="this.style.display='none'; Codehighlighter1_202_696_Open_Text.style.display='none'; Codehighlighter1_202_696_Closed_Image.style.display='inline'; Codehighlighter1_202_696_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_202_696_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_202_696_Closed_Text.style.display='none'; Codehighlighter1_202_696_Open_Image.style.display='inline'; Codehighlighter1_202_696_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;Log4jInit&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;HttpServlet&nbsp;</span><span id="Codehighlighter1_202_696_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_202_696_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_205_217_Open_Image" onclick="this.style.display='none'; Codehighlighter1_205_217_Open_Text.style.display='none'; Codehighlighter1_205_217_Closed_Image.style.display='inline'; Codehighlighter1_205_217_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_205_217_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_205_217_Closed_Text.style.display='none'; Codehighlighter1_205_217_Open_Image.style.display='inline'; Codehighlighter1_205_217_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_205_217_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_205_217_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></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;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;serialVersionUID&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 id="Codehighlighter1_289_621_Open_Image" onclick="this.style.display='none'; Codehighlighter1_289_621_Open_Text.style.display='none'; Codehighlighter1_289_621_Closed_Image.style.display='inline'; Codehighlighter1_289_621_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_289_621_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_289_621_Closed_Text.style.display='none'; Codehighlighter1_289_621_Open_Image.style.display='inline'; Codehighlighter1_289_621_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;init()&nbsp;</span><span id="Codehighlighter1_289_621_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_289_621_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;prefix&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;getServletContext().getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</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;String&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">log4j</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: #008000">//</span><span style="color: #008000">&nbsp;if&nbsp;the&nbsp;log4j-init-file&nbsp;is&nbsp;not&nbsp;set,&nbsp;then&nbsp;no&nbsp;point&nbsp;in&nbsp;trying</span><span style="color: #008000"><br />
<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;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.log4j&nbsp;start</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">(file&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 />
<img id="Codehighlighter1_530_618_Open_Image" onclick="this.style.display='none'; Codehighlighter1_530_618_Open_Text.style.display='none'; Codehighlighter1_530_618_Closed_Image.style.display='inline'; Codehighlighter1_530_618_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_530_618_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_530_618_Closed_Text.style.display='none'; Codehighlighter1_530_618_Open_Image.style.display='inline'; Codehighlighter1_530_618_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 id="Codehighlighter1_530_618_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_530_618_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;PropertyConfigurator.configure(prefix</span><span style="color: #000000">+</span><span style="color: #000000">file);<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;System.out.println(prefix</span><span style="color: #000000">+</span><span style="color: #000000">file);<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/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_691_694_Open_Image" onclick="this.style.display='none'; Codehighlighter1_691_694_Open_Text.style.display='none'; Codehighlighter1_691_694_Closed_Image.style.display='inline'; Codehighlighter1_691_694_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_691_694_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_691_694_Closed_Text.style.display='none'; Codehighlighter1_691_694_Open_Image.style.display='inline'; Codehighlighter1_691_694_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;doGet(HttpServletRequest&nbsp;req,&nbsp;HttpServletResponse&nbsp;res)&nbsp;</span><span id="Codehighlighter1_691_694_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_691_694_Open_Text"><span style="color: #000000">{<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/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
普通应用程序中的Log4jInit<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 id="Codehighlighter1_23_180_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_180_Open_Text.style.display='none'; Codehighlighter1_23_180_Closed_Image.style.display='inline'; Codehighlighter1_23_180_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_23_180_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_23_180_Closed_Text.style.display='none'; Codehighlighter1_23_180_Open_Image.style.display='inline'; Codehighlighter1_23_180_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Log4jInit&nbsp;</span><span id="Codehighlighter1_23_180_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_23_180_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;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;serialVersionUID&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 id="Codehighlighter1_115_177_Open_Image" onclick="this.style.display='none'; Codehighlighter1_115_177_Open_Text.style.display='none'; Codehighlighter1_115_177_Closed_Image.style.display='inline'; Codehighlighter1_115_177_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_115_177_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_115_177_Closed_Text.style.display='none'; Codehighlighter1_115_177_Open_Image.style.display='inline'; Codehighlighter1_115_177_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">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_115_177_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_115_177_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;PropertyConfigurator.configure(</span><span style="color: #000000">"</span><span style="color: #000000">/src/log4j.properties</span><span style="color: #000000">"</span><span style="color: #000000">);<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="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<br />
log4j.properties文件，放到WEB-INF目录下，具体每个参数是什么意思，查一下参考文档
<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">log4j.rootLogger</span><span style="color: #000000">=</span><span style="color: #000000">debug</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;stdout</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;R<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="" />log4j.appender.stdout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.ConsoleAppender<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.stdout.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<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="" />#&nbsp;Pattern&nbsp;to&nbsp;output&nbsp;the&nbsp;caller's&nbsp;file&nbsp;name&nbsp;and&nbsp;line&nbsp;number.<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.stdout.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #000000">%5p&nbsp;</span><span style="font-weight: bold; color: #800000">[</span><span style="color: #800000">%t</span><span style="font-weight: bold; color: #800000">]</span><span style="color: #000000">&nbsp;(%F:%L)&nbsp;-&nbsp;%m%n<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="" />log4j.appender.R</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.RollingFileAppender<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.R.File</span><span style="color: #000000">=</span><span style="color: #000000">example.log<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="" />log4j.appender.R.MaxFileSize</span><span style="color: #000000">=</span><span style="color: #000000">100KB<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;Keep&nbsp;one&nbsp;backup&nbsp;file<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.R.MaxBackupIndex</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000"><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="" />log4j.appender.R.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.R.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #000000">%p&nbsp;%t&nbsp;%c&nbsp;-&nbsp;%m%n<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="" />#log4j.appender.R&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.RollingFileAppender<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#log4j.appender.R.File&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;logs\\test.log<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#log4j.appender.R.MaxFileSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;1MB<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#log4j.appender.R.MaxBackupIndex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#log4j.appender.R.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#log4j.appender.R.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="font-weight: bold; color: #800000">[</span><span style="color: #800000">%d</span><span style="font-weight: bold; color: #800000">]</span><span style="color: #000000">&nbsp;%-4r&nbsp;</span><span style="font-weight: bold; color: #800000">[</span><span style="color: #800000">%t</span><span style="font-weight: bold; color: #800000">]</span><span style="color: #000000">&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m&nbsp;%n<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></div>
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/116725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2007-05-11 13:32 <a href="http://www.blogjava.net/TiGERTiAN/archive/2007/05/11/116725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SSH实际开发中的Manager Service</title><link>http://www.blogjava.net/TiGERTiAN/archive/2007/05/10/116606.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Thu, 10 May 2007 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2007/05/10/116606.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/116606.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2007/05/10/116606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/116606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/116606.html</trackback:ping><description><![CDATA[下面是一个Manager Service(AOP)，她可以提供一些高级方法，例如联合的删除，或者顺便发一封Email等等
<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><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="passwordHintAction"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="com.inpoint.webapp.action.PasswordHintAction"</span><span style="COLOR: #ff0000">&nbsp;scope</span><span style="COLOR: #0000ff">="prototype"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="userManager"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="userManager"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="mailEngine"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="mailEngine"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="message"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="mailMessage"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></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 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">aop:config</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">aop:advisor&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="userManagerTx"</span><span style="COLOR: #ff0000">&nbsp;advice-ref</span><span style="COLOR: #0000ff">="userManagerTxAdvice"</span><span style="COLOR: #ff0000">&nbsp;pointcut</span><span style="COLOR: #0000ff">="execution(*&nbsp;..service.UserManager.(..))"</span><span style="COLOR: #ff0000">&nbsp;order</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">aop:advisor&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="userManagerSecurity"</span><span style="COLOR: #ff0000">&nbsp;advice-ref</span><span style="COLOR: #0000ff">="userSecurityAdvice"</span><span style="COLOR: #ff0000">&nbsp;pointcut</span><span style="COLOR: #0000ff">="execution(*&nbsp;*..service.UserManager.saveUser(..))"</span><span style="COLOR: #ff0000">&nbsp;order</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">aop:advisor&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="managerTx"</span><span style="COLOR: #ff0000">&nbsp;advice-ref</span><span style="COLOR: #0000ff">="txAdvice"</span><span style="COLOR: #ff0000">&nbsp;pointcut</span><span style="COLOR: #0000ff">="execution(*&nbsp;..service.*Manager.(..))"</span><span style="COLOR: #ff0000">&nbsp;order</span><span style="COLOR: #0000ff">="2"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">aop:con