﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-有个空间-文章分类-Java技术</title><link>http://www.blogjava.net/unilobster/category/41364.html</link><description>有个标题</description><language>zh-cn</language><lastBuildDate>Sat, 01 Dec 2012 11:59:48 GMT</lastBuildDate><pubDate>Sat, 01 Dec 2012 11:59:48 GMT</pubDate><ttl>60</ttl><item><title>Oracle 迭代查询</title><link>http://www.blogjava.net/unilobster/articles/392136.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Wed, 28 Nov 2012 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/392136.html</guid><description><![CDATA[<p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">connect by prior start with 经常会被用到一个表中存在递归关系的时候。比如我们经常会将一个比较复杂的目录树存储到一个表中。或者将一些部门存储到一个表中，而这些部门互相有隶属关系。这个时候你就会用到connect by prior start with。</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;表结构：</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">create table TB_ORG<br />(<br />&nbsp;&nbsp;ORGID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(50) not null,<br />&nbsp; ORGNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(100),<br />&nbsp;&nbsp;ORGPARENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(50),<br />)</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">SQL&gt; select orgid,ORGPARENT from tb_org order by ORGid desc;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">ORGID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORGPARENT<br />-----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;--------------------------------------------------<br />top_org&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />newsroom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top_org</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">sjgt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newsroom<br />bgjsyj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newsroom<br />bgjs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newsroom<br />test52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgjsyj<br />test36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgjsyj<br />test3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bgjs<br />test2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sjgt<br />test1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sjgt<br />tes4t1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bgjs</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">--子取父<br />select * from tb_org CONNECT BY PRIOR orgparent=orgid START WITH orgid='newsroom'<br />-----子取父变形 （）<br />select * from tb_org CONNECT BY PRIOR orgparent=orgid START WITH orgparent='newsroom'<br />--父取子（结果中没有父这条记录）<br />select * from tb_org CONNECT BY PRIOR orgid=orgparent START WITH orgparent='newsroom'<br />-----父取子变形（多了父这一级）<br />select * from tb_org connect by prior orgid=orgparent start with orgid ='newsroom'</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">注意orgid=orgparent 和orgparent=orgid<br /><br /><br />ref:http://blog.csdn.net/kenny1985/article/details/3980583</p><img src ="http://www.blogjava.net/unilobster/aggbug/392136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2012-11-28 14:13 <a href="http://www.blogjava.net/unilobster/articles/392136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在Oracle中复制表结构和表数据</title><link>http://www.blogjava.net/unilobster/articles/390083.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Tue, 23 Oct 2012 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/390083.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/390083.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/390083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/390083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/390083.html</trackback:ping><description><![CDATA[<h1><div>如何在Oracle中复制表结构和表数据</div></h1><div id="cnblogs_post_body" style="word-break: normal !important; color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><p style="margin-top: 10px; margin-bottom: 10px; ">1. 复制表结构及其数据：</p><p style="margin-top: 10px; margin-bottom: 10px; ">create table table_name_new as select * from table_name_old</p><p style="margin-top: 10px; margin-bottom: 10px; ">&nbsp;</p><p style="margin-top: 10px; margin-bottom: 10px; ">2. 只复制表结构：</p><p style="margin-top: 10px; margin-bottom: 10px; ">create table table_name_new as select * from table_name_old where 1=2;</p><p style="margin-top: 10px; margin-bottom: 10px; ">或者：</p><p style="margin-top: 10px; margin-bottom: 10px; ">create table table_name_new like table_name_old</p><p style="margin-top: 10px; margin-bottom: 10px; ">&nbsp;</p><p style="margin-top: 10px; margin-bottom: 10px; ">3. 只复制表数据：</p><p style="margin-top: 10px; margin-bottom: 10px; ">如果两个表结构一样：</p><p style="margin-top: 10px; margin-bottom: 10px; ">insert into table_name_new&nbsp;select * from&nbsp;table_name_old</p><p style="margin-top: 10px; margin-bottom: 10px; ">如果两个表结构不一样：</p><p style="margin-top: 10px; margin-bottom: 10px; ">insert into table_name_new(column1,column2...)&nbsp;select&nbsp;column1,column2... from&nbsp;table_name_old<br /><br />Ref:<a href="http://www.cnblogs.com/youxinqiang/archive/2008/12/26/1363030.html">http://www.cnblogs.com/youxinqiang/archive/2008/12/26/1363030.html</a></p></div><img src ="http://www.blogjava.net/unilobster/aggbug/390083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2012-10-23 10:11 <a href="http://www.blogjava.net/unilobster/articles/390083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下如何启动和关闭weblogic</title><link>http://www.blogjava.net/unilobster/articles/389735.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Wed, 17 Oct 2012 06:52:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/389735.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/389735.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/389735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/389735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/389735.html</trackback:ping><description><![CDATA[linux下如何启动和关闭weblogic<br /><br /><span style="color: #2a2a2a; font-family: Tahoma, Helvetica, Arial, sans-serif; line-height: 25px; background-color: #ffffff; ">在你定义的域中可以找到如下命令：<br /> /[youHome]/domains/[yourDomain]/startWebLogic.sh <br />/[youHome]/domains/[yourDomain]/stopWebLogic.sh &nbsp; <br /><br />启动weblogic，可以参考如下命令： <br /></span><span style="background-color: #ffffff; color: #2a2a2a; font-family: Tahoma, Helvetica, Arial, sans-serif; line-height: 25px; ">nohup ./startWebLogic.sh &amp;<br /><br /></span><span style="color: #2a2a2a; font-family: Tahoma, Helvetica, Arial, sans-serif; line-height: 25px; background-color: #ffffff; ">查看后台（nohup 会在当前目录下生成一个nohup.out文件作为输出） <br />tail -f nohup.out <br />或者： nohup ./startWebLogic.sh &gt;日志文件名 &amp; <br /><br />查看后台 tail -f 日志文件名 &nbsp; <br />关闭weblogic，我们更倾向于直接杀掉weblogic进程： <br />ps -ef|grep java <br />查找到进程ID之后，直接运行如下命令： <br />kill -9 ID<br /><br />Ref:</span><a href="http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0822/12969.html">http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0822/12969.html</a><br /><span style="color: #2a2a2a; font-family: Tahoma, Helvetica, Arial, sans-serif; line-height: 25px; background-color: #ffffff; "><br /></span><img src ="http://www.blogjava.net/unilobster/aggbug/389735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2012-10-17 14:52 <a href="http://www.blogjava.net/unilobster/articles/389735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 时间加减综合</title><link>http://www.blogjava.net/unilobster/articles/389732.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Wed, 17 Oct 2012 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/389732.html</guid><description><![CDATA[<div>oracle 时间加减综合<br /><br /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">加法&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,add_months(sysdate,12) from dual;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --加1年&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,add_months(sysdate,1) from dual;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --加1月&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp;&nbsp; --加1星期&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp;&nbsp; --加1天&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp; --加1小时&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp; --加1分钟&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp; --加1秒&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">减法&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,add_months(sysdate,-12) from dual;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --减1年&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,add_months(sysdate,-1) from dual;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --减1月&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp;&nbsp; --减1星期&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp;&nbsp; --减1天&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp; --减1小时&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp; --减1分钟&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;&nbsp; --减1秒&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">日期与日期之间不能相加&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; 日期与数字就可相加&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; SQL&gt;&nbsp;&nbsp; select&nbsp;&nbsp; sysdate+1&nbsp;&nbsp; from&nbsp;&nbsp; dual;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; 日期与日期可以相减&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; SQL&gt;&nbsp;&nbsp; select&nbsp;&nbsp; sysdate-sysdate&nbsp;&nbsp; from&nbsp;&nbsp; dual;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">Add_Months（D，X）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回D日期加上X个月后的日期&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last_Day（D）&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回包含日期D的月份的最后一天的日期&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">add_months(sysdate,1)加一个月&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; add_months(sysdate,-1)减一个月&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; sysdate+1&nbsp;&nbsp; 加一天&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">-------------------------------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; Months_Between（D1，D2）&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回D1、D2之间的月份数目&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; New_Time（D，Z1，Z2）&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回时区Z1里时间为D时Z2时区的时间&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; Next_Day（D，S）&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回满足条件S的下一天&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; S为星期几&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; Round（D，F）&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日期D按照格式F进行舍入&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; Sysdate&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回数据库当前时间&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; Trunc（D，F）&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 按照格式F截断时间D&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; 另外：日期可以直接加减&nbsp;&nbsp;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">&nbsp; 如：sysdate&nbsp;&nbsp; +1,sysdate&nbsp;&nbsp; -1&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">------------------------------------------------------------&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">sysdate+1 加一天&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">sysdate+1/24 加1小时&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">sysdate+1/(24*60) 加1分钟&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">sysdate+1/(24*60*60) 加1秒钟&nbsp;</span><br /><br /><br />Ref:<a href="http://elvishehai.iteye.com/blog/1153601">http://elvishehai.iteye.com/blog/1153601</a></div><img src ="http://www.blogjava.net/unilobster/aggbug/389732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2012-10-17 14:45 <a href="http://www.blogjava.net/unilobster/articles/389732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iOS开发入门－01</title><link>http://www.blogjava.net/unilobster/articles/369960.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Tue, 14 Feb 2012 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/369960.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/369960.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/369960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/369960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/369960.html</trackback:ping><description><![CDATA[已经开始iOS的开发有段时间了，这一阶段主要是熟悉iOS mobile开发模式的过程。到现在为止算是写出一个小软件的雏形，是以做个小节。<br />刚开始接触iOS，从接触的资料看，都指向了Xcode。但是Xcode的上手不是很容易，虽然写个HelloWorld很快。因为Xcode需要Object C的灵活应用，这需要很长一段时间去学习。上头的目的是需要短平快的出东西，因此我们转头寻找另外的开发工具。<br /><br />综合了BA的调研，我们有两个备选:PhoneGap和Titanium。说实话PhoneGap到现在我也不是很熟，只知道用jQuery Mobile完全可以完成在上面的开发。需要熟悉jQuery Mobile 的控件库和CSS和使用方法。<br /><br />待续...<img src ="http://www.blogjava.net/unilobster/aggbug/369960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2012-02-14 16:56 <a href="http://www.blogjava.net/unilobster/articles/369960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 导出导入数据及数据结构</title><link>http://www.blogjava.net/unilobster/articles/354335.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Thu, 14 Jul 2011 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/354335.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/354335.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/354335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/354335.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/354335.html</trackback:ping><description><![CDATA[<font class="Apple-style-span" face="Simsun"><span class="Apple-style-span" style="line-height: 24px;">导出导出数据及数据结构：</span></font><br /><font class="Apple-style-span" face="Simsun"><span class="Apple-style-span" style="line-height: 24px;">&nbsp; &nbsp; &nbsp;在控制台 mysql/bin</span></font><br /><div><div><br />Export: mysqldump -u root -p DATABASE &gt;fil2.sql</div><div></div><div>Import: mysql -u root -p DATABASE &lt;fil2.sql</div></div><div></div><font class="Apple-style-span" face="Simsun"><span class="Apple-style-span" style="line-height: 24px;"><br /></span><span class="Apple-style-span" style="line-height: 24px; "></span><span class="Apple-style-span" style="line-height: 24px; "></span><span class="Apple-style-span" style="line-height: 24px; "></span></font><img src ="http://www.blogjava.net/unilobster/aggbug/354335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2011-07-14 16:49 <a href="http://www.blogjava.net/unilobster/articles/354335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring+Hibernate：在applicationContext.xml中配置C3P0参数说明</title><link>http://www.blogjava.net/unilobster/articles/341148.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Mon, 20 Dec 2010 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/341148.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/341148.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/341148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/341148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/341148.html</trackback:ping><description><![CDATA[<strong>背景：</strong><br />
在项目中遇到下面这个exception<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">Exception&nbsp;occurred&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;logging&nbsp;on<br />
<br />
Hibernate&nbsp;operation:&nbsp;Cannot&nbsp;open&nbsp;connection;&nbsp;uncategorized&nbsp;SQLException&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;SQL&nbsp;[</span><span style="color: #000000;">???</span><span style="color: #000000;">]; <br />
SQL&nbsp;state&nbsp;[</span><span style="color: #0000ff;">null</span><span style="color: #000000;">];&nbsp;error&nbsp;code&nbsp;[</span><span style="color: #000000;">0</span><span style="color: #000000;">];&nbsp;An&nbsp;SQLException&nbsp;was&nbsp;provoked&nbsp;by&nbsp;the&nbsp;following&nbsp;failure: <br />
com.mchange.v2.resourcepool.ResourcePoolException:&nbsp;Attempted&nbsp;to&nbsp;use&nbsp;a&nbsp;closed&nbsp;or <br />
broken&nbsp;resource&nbsp;pool;&nbsp;nested&nbsp;exception&nbsp;is&nbsp;java.sql.SQLException:&nbsp;An&nbsp;SQLException&nbsp;was<br />
&nbsp;provoked&nbsp;by&nbsp;the&nbsp;following&nbsp;failure:&nbsp;com.mchange.v2.resourcepool.ResourcePoolException: <br />
Attempted&nbsp;to&nbsp;use&nbsp;a&nbsp;closed&nbsp;or&nbsp;broken&nbsp;resource&nbsp;pool</span></div>
<br />
<strong>分析：</strong><br />
看字面的意思，是连接池出问题。因为对spring的连接池配置不熟，所以就找到下面的文章。<br />
&lt;引用：<a href="http://hi.baidu.com/javazyw/blog/item/4e668fc7e3557ac039db49c3.html">http://hi.baidu.com/javazyw/blog/item/4e668fc7e3557ac039db49c3.html</a>&gt;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">beans&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.springframework.org/schema/beans"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff;">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:jee</span><span style="color: #0000ff;">="http://www.springframework.org/schema/jee"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000ff;">="http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd<br />
</span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/jee&nbsp;http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff;">="com.mchange.v2.c3p0.ComboPooledDataSource"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destroy-method</span><span style="color: #0000ff;">="close"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="driverClass"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">com.mysql.jdbc.Driver</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="jdbcUrl"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">jdbc:mysql://192.168.3.110:3306/DBName?useUnicode=true</span><span style="color: #ff0000;">&amp;amp;</span><span style="color: #000000;">characterEncoding=GBK</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="user"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">root</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="password"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">root</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">连接池中保留的最小连接数。</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="minPoolSize"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">5</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">连接池中保留的最大连接数。Default:&nbsp;15&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="maxPoolSize"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">30</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">初始化时获取的连接数，取值应在minPoolSize与maxPoolSize之间。Default:&nbsp;3&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="initialPoolSize"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">10</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default:&nbsp;0&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="maxIdleTime"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">60</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:&nbsp;3&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="acquireIncrement"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">5</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">JDBC的标准参数，用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements<br />
</span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #008000;">属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。<br />
</span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #008000;">如果maxStatements与maxStatementsPerConnection均为0，则缓存被关闭。Default:&nbsp;0</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="maxStatements"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">0</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">每60秒检查所有连接池中的空闲连接。Default:&nbsp;0&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="idleConnectionTestPeriod"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">60</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">定义在从数据库获取新连接失败后重复尝试的次数。Default:&nbsp;30&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="acquireRetryAttempts"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">30</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效<br />
</span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #008000;">保留，并在下次调用getConnection()的时候继续尝试获取连接。如果设为true，那么在尝试<br />
</span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #008000;">获取连接失败后该数据源将申明已断开并永久关闭。Default:&nbsp;false</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="breakAfterAcquireFailure"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">true</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #008000;">&lt;!--</span><span style="color: #008000;">因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的<br />
</span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #008000;">时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable<br />
</span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #008000;">等方法来提升连接测试的性能。Default:&nbsp;false&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="testConnectionOnCheckout"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">false</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;Hibernate&nbsp;SessionFactory&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="sessionFactory"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff;">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ref&nbsp;</span><span style="color: #ff0000;">local</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="mappingResources"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">com/xh/hibernate/vo/User.hbm.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernateProperties"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">props</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prop&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="hibernate.dialect"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.hibernate.dialect.MySQLDialect</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prop</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prop&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="hibernate.show_sql"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">true</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prop</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prop&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="hibernate.generate_statistics"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">true</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prop</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prop&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="hibernate.connection.release_mode"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">auto</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prop</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prop&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="hibernate.autoReconnect"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">true</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prop</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">props</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">100</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">beans</span><span style="color: #0000ff;">&gt;</span></div>
<br />
应该是配置的原因。然后有找到这篇个说明<br />
&lt;引用：http://home.bendixinwen.cn:8080/blog/2010/01/27/1264560312821.html&gt;<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">解决这个异常需要修改设置成如下：<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="acquireRetryAttempts"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">30</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="acquireRetryDelay"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">100</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="breakAfterAcquireFailure"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><strong><span style="color: #000000;">false</span></strong><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
-&nbsp;acquireRetryAttempts&nbsp;<br />
Default:&nbsp;30&nbsp;<br />
Defines&nbsp;how&nbsp;many&nbsp;times&nbsp;c3p0&nbsp;will&nbsp;try&nbsp;to&nbsp;acquire&nbsp;a&nbsp;new&nbsp;Connection&nbsp;from&nbsp;the&nbsp;database&nbsp;before&nbsp;giving&nbsp;up.<br />
&nbsp;If&nbsp;this&nbsp;value&nbsp;is&nbsp;less&nbsp;than&nbsp;or&nbsp;equal&nbsp;to&nbsp;zero,&nbsp;c3p0&nbsp;will&nbsp;keep&nbsp;trying&nbsp;to&nbsp;fetch&nbsp;a&nbsp;Connection&nbsp;indefinitely&nbsp;<br />
<br />
-&nbsp;acquireRetryDelay&nbsp;<br />
Default:&nbsp;1000&nbsp;<br />
Milliseconds,&nbsp;time&nbsp;c3p0&nbsp;will&nbsp;wait&nbsp;between&nbsp;acquire&nbsp;attempts.&nbsp;<br />
<br />
-&nbsp;breakAfterAcquireFailure&nbsp;<br />
Default:&nbsp;false&nbsp;<br />
If&nbsp;true,&nbsp;a&nbsp;pooled&nbsp;DataSource&nbsp;will&nbsp;declare&nbsp;itself&nbsp;broken&nbsp;and&nbsp;be&nbsp;permanently&nbsp;closed <br />
if&nbsp;a&nbsp;Connection&nbsp;cannot&nbsp;be&nbsp;obtained&nbsp;from&nbsp;the&nbsp;database&nbsp;after&nbsp;making&nbsp;acquireRetryAttempts&nbsp;to&nbsp;acquire&nbsp;one. <br />
If&nbsp;false,&nbsp;failure&nbsp;to&nbsp;obtain&nbsp;a&nbsp;Connection&nbsp;will&nbsp;cause&nbsp;all&nbsp;Threads&nbsp;waiting&nbsp;for&nbsp;the&nbsp;pool&nbsp;to&nbsp;acquire&nbsp;a&nbsp;Connection <br />
to&nbsp;throw&nbsp;an&nbsp;Exception,&nbsp;but&nbsp;the&nbsp;DataSource&nbsp;will&nbsp;remain&nbsp;valid,&nbsp;and&nbsp;will&nbsp;attempt&nbsp;to&nbsp;acquire&nbsp;again&nbsp;following&nbsp;a <br />
call&nbsp;to&nbsp;getConnection().</span></div>
<br />
<strong>再分析：</strong><br />
为什么会说<span style="color: #000000;">Attempted&nbsp;to&nbsp;use&nbsp;a&nbsp;closed&nbsp;or&nbsp;broken&nbsp;resource&nbsp;pool，应该是有链接没关闭。因为一直对&lt;session.save&gt;和&lt;geHibernateTemplate().save&gt; 这两种DAO实现方式不理解。找到下面这篇文章<br />
&lt;引用：http://jeoff.blog.51cto.com/186264/133434&gt;<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">自动生成hibernate配置文件的时候，会在dao层用到getSession()方法来操作数据库记录，但是他还有个方法getHibernateTemplate()，这两个方法究竟有什么区别呢？<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">1.使用getSession()方法你只要继承sessionFactory，而使用getHibernateTemplate()方法必须继承&nbsp;HibernateDaoSupport当然包括sessionFactory，这点区别都不是特别重要的，下面这些区别就很重要了<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">2.getSession()方法是没有经过spring包装的，spring会把最原始的session给你，<strong>在使用完之后必须自己调用相应的&nbsp;close方法，而且也不会对声明式事务进行相应的管理，一旦没有及时关闭连接，就会导致数据库连接池的连接数溢出，</strong>getHibernateTemplate()方法是经过spring封装的，例如添加相应的声明式事务管理，由spring管理相应的连接。<br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">在实际的使用过程中发现的确getHibernateTemplate()比getSession()方法要好很多，但是有些方法在getHibernateTemplate()并没有提供，这时我们用HibernateCallback&nbsp;回调的方法管理数据库.</span></div>
<br />
看看黑体标注的那句话，再看看程序代码会发现确实有很多使用session方式的DAO在最后没有关闭。root cause应该就是他了。<br />
<strong><br />
总结：</strong><br />
1. 是用session实现DAO，必须要在最后关闭session，不然会导致连接池链接溢出<br />
2.可以使用 set <span style="color: #0000ff;">breakAfterAcquireFailure </span>=false 来规避这个问题。<br />
<br />
<strong>尾巴：</strong><br />
set <span style="color: #0000ff;">breakAfterAcquireFailure </span>=false 能不能解决问题 还需要进一步检验。下回分解。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/341148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2010-12-20 11:49 <a href="http://www.blogjava.net/unilobster/articles/341148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate Restrictions用法</title><link>http://www.blogjava.net/unilobster/articles/332688.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Thu, 23 Sep 2010 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/332688.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/332688.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/332688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/332688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/332688.html</trackback:ping><description><![CDATA[<table dir="ltr" border="0" cellpadding="0" cellspacing="0" width="499">
    <tbody>
        <tr>
            <td width="220" height="24">
            <p>方法 </p>
            </td>
            <td width="281" height="24">
            <p>说明 </p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.eq </p>
            </td>
            <td width="281" height="24">
            <p>＝ </p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.allEq </p>
            </td>
            <td width="281" height="24">
            <p>利用Map来进行多个等于的限制 </p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.gt </p>
            </td>
            <td width="281" height="24">
            <p>＞ </p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.ge </p>
            </td>
            <td width="281" height="24">
            <p>＞＝ </p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.lt </p>
            </td>
            <td width="281" height="24">
            <p>＜</p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.le </p>
            </td>
            <td width="281" height="24">
            <p>＜＝ </p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.between </p>
            </td>
            <td width="281" height="24">
            <p>BETWEEN</p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.like </p>
            </td>
            <td width="281" height="24">
            <p>LIKE</p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.in </p>
            </td>
            <td width="281" height="24">
            <p>in</p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.and </p>
            </td>
            <td width="281" height="24">
            <p>and</p>
            </td>
        </tr>
        <tr>
            <td width="220" height="24">
            <p>Restrictions.or </p>
            </td>
            <td width="281" height="24">
            <p>or</p>
            </td>
        </tr>
        <tr>
            <td width="220" height="47">
            <p>Restrictions.sqlRestriction </p>
            </td>
            <td width="281" height="47">
            <p>用SQL限定查询 </p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p> </p>
<p><strong><em>QBC常用限定方法</em> </strong></p>
<p>Restrictions.eq --&gt; equal,等于.</p>
<p>Restrictions.allEq --&gt; 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq 的效果</p>
<p>Restrictions.gt --&gt; great-than &gt; 大于</p>
<p>Restrictions.ge --&gt; great-equal &gt;= 大于等于</p>
<p>Restrictions.lt --&gt; less-than, &lt; 小于</p>
<p>Restrictions.le --&gt; less-equal &lt;= 小于等于</p>
<p>Restrictions.between --&gt; 对应SQL的between子句</p>
<p>Restrictions.like --&gt; 对应SQL的LIKE子句</p>
<p>Restrictions.in --&gt; 对应SQL的in子句</p>
<p>Restrictions.and --&gt; and 关系</p>
<p>Restrictions.or --&gt; or 关系</p>
<p>Restrictions.isNull --&gt; 判断属性是否为空,为空则返回true</p>
<p>Restrictions.isNotNull --&gt; 与isNull相反</p>
<p>Restrictions.sqlRestriction --&gt; SQL限定的查询</p>
<p>Order.asc --&gt; 根据传入的字段进行升序排序</p>
<p>Order.desc --&gt; 根据传入的字段进行降序排序</p>
<p>MatchMode.EXACT --&gt; 字符串精确匹配.相当于"like 'value'"</p>
<p>MatchMode.ANYWHERE --&gt; 字符串在中间匹配.相当于"like '%value%'"</p>
<p>MatchMode.START --&gt; 字符串在最前面的位置.相当于"like 'value%'"</p>
<p>MatchMode.END --&gt; 字符串在最后面的位置.相当于"like '%value'"</p>
<img src ="http://www.blogjava.net/unilobster/aggbug/332688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2010-09-23 16:50 <a href="http://www.blogjava.net/unilobster/articles/332688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java开发WebService实例--计数器</title><link>http://www.blogjava.net/unilobster/articles/331512.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Thu, 09 Sep 2010 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/331512.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/331512.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/331512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/331512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/331512.html</trackback:ping><description><![CDATA[文章来源：http://www.blogjava.net/supercrsky/articles/196012.html<br />
<br />
&nbsp; 如果使用GOOGLE、BAIDU等搜索工具，搜索WebService的相关知识，可以查到N多的网页，我就是通过这些网页的学习，逐渐掌握了些WebService的相关知识。这里对那些无私奉献知识的人一并表示感谢。
<p>
网上关于WebService的例子，多是一些简单得不能再简单的hello
world的例子，简单得以至于你对WebService没有什么感觉。有了WebService的基本知识后，我一直再想，可以把什么样的即简单又实用
的东东做成WebService，开展示一下其功能特点。今天终于想到一个：计数器，计数器用得比较多，功能比较独立，做成WebService可以一劳
永逸为不同系统（不管是JSP还ASP，这是WebService的突出优点）、不同应用节省此类编码工作，可以说以后再也不用写计数器了。只要用就行
了。 <br />
<br />
&nbsp; 说了这么多废话，下面我们开始。本教程介绍一下WebService环境搭建、服务部署的相关知识，然后介绍一个计数器的开发。   <br />
<br />
运行图：</p>
<p><span><strong><img src="http://www.java3z.com/cwbwebhome/article/article5/img/9725623.gif" alt="" width="483" height="347" /><br />
<br />
二、基础工作</strong></span><br />
<br />
1.开发环境<br />
我使用axis做为Web
Service引擎，它是Apache的一个开源web service引擎。它目前最为成熟的开源web
service引擎之一。下面我主要介绍一下如何使用Axis搭建web service 服务的环境。 <br />
①安装tomcat5.0应用服务器（也可以装5.5，不过我一直在用5.0）;   <br />
②解压下载（
http://ws.apache.org/Axis）后的axis包，将包中axis目录复制到tomcat目录下的webapps目录下；　　   <br />
③将axis/WEB-INF/lib目录下类文件复制到tomcat目录下的common/lib目录下；   <br />
④重新启动tomcat,访问http://localhost:8080/axis/happyaxis.jsp,如果能访问，表示安装成功；   <br />
注意，axis有几个可选的包，如email.jar....，你可以找来放到tomcat目录下的common/lib目录下，如果不使用相关的功能也可以不用。   <br />
这样，开发环境就搭建好了。   <br />
<br />
<br />
2.如何部署Web Service<br />
部署有三种方式：Dynamic Invocation
Interface(DII)、Stubs方式、Dynamic Proxy方式；这里就介绍一下简单，也是我使用的方式：DII。   <br />
DII方式中，先写好服务的JAVA文件（假设名字为helloworld.java），然后把它（注意是源文件）拷贝到webapps/axis目录
中，后缀改成jws(此时文件名为：helloworld.jws)，然后访问连接http://localhost:
8080/Axis/helloworld.jws?wsdl，页面显示Axis自动生成的wsdl，这样一个Web
Service就部署好了。怎么样，是不是很简。 <br />
我的计数器服务就是以这种方式部署的，下文中我会只说将计数器服务部署好，你可不要说：怎么部署，我不会呀。那在古代就要被打手板了。所以我想，古代只学四书五经也是件好事呀。现在要学这么多东西，半天学不会，手要被打烂了。   </p>
<p><strong>三、计数器服务的编写</strong> <br />
计数器大家都知道了，比较简单。我的计数器也同样简单，有以下功能及特点：提供四种计数器（总数器、月计数器、周计数器及日计数器）；考虑到Web
Service要服务于多种应用，这个计数器还支持多个用户；使用XML文件来记录数据。<br />
记录文件名为：d:"counter.xml。注意，此文件在服务里是硬编码，如果修改名字，请在服务程序中也进行相应的修改。文件内容格式如下：   <br />
&lt;?xml version="1.0"
encoding="UTF-8"?&gt;<br />
&lt;counter&gt;<br />
&lt;item&gt;<br />
&lt;name&gt;wallimn&lt;/name&gt;<br />
&lt;password&gt;123&lt;/password&gt;<br />
&lt;dc&gt;59&lt;/dc&gt;<br />
&lt;wc&gt;59&lt;/wc&gt;<br />
&lt;mc&gt;59&lt;/mc&gt;<br />
&lt;tc&gt;59&lt;/tc&gt;<br />
&lt;rt&gt;2007-4-16
16:01:29&lt;/rt&gt;<br />
&lt;/item&gt;<br />
&lt;counter&gt;<br />
说是计数器服务，其实跟编写普通的JAVA应用没有什么两样。我的计数器代码比较简单，我就不做过多的介绍了，把它贴在下面，源码中有少量注释，相信大家不看注释也看得懂。服务有只有一个接口：Counter(String
name, String
password),以后在客户端拿来用就可以了。还多说一句，我和程序使用到了dom4j解析xml包，要调试的请自行准备好jar包。部署方法请参照上文。   <br />
import java.io.File;<br />
import java.io.FileWriter;<br />
import
java.io.IOException;<br />
import java.text.DateFormat;<br />
import
java.text.ParseException;<br />
import java.util.Calendar;<br />
import
java.util.Date;<br />
import java.util.Iterator;<br />
import
org.dom4j.Document;<br />
import org.dom4j.DocumentException;<br />
import
org.dom4j.Element;<br />
import org.dom4j.io.SAXReader;<br />
import
org.dom4j.io.XMLWriter;<br />
/**<br />
*功能：提供计数器服务的WebService，可以为多用户提供服务。&lt;br/&gt;<br />
*
@version : V1.0<br />
* @author : 王力猛(Email: wallimn@sohu.com QQ: 54871876)<br />
*
@date : 2007-4-16 下午04:32:45<br />
*/<br />
public class WsCounterByWallimn
{<br />
//计数器文档，注意名字名路径。<br />
private final String FileN =
"d:/counter.xml";<br />
private final static DateFormat DATEFORMATER =
DateFormat.getDateTimeInstance();<br />
//出错的情况下返回的值<br />
private final static String
ERRORINFO="-1;-1;-1;-1";<br />
public WsCounterByWallimn(){
}<br />
<br />
<br />
/**<br />
*功能：打开计数器文档&lt;br/&gt;<br />
*编码：王力猛 时间：2007-4-16
下午04:44:29&lt;br/&gt;<br />
*/<br />
private Document openDocument(){<br />
Document
doc=null;<br />
SAXReader reader = new SAXReader();<br />
try {<br />
File xmlfile = new
File(FileN);<br />
doc = reader.read(xmlfile);<br />
xmlfile=null;<br />
} <br />
catch
(DocumentException e) {<br />
e.printStackTrace();<br />
}<br />
return
doc;<br />
}<br />
<br />
<br />
/**<br />
*功能：取指定名称计数器的详细信息，并设置计数器加1。&lt;br/&gt;<br />
*编码：王力猛
时间：2007-4-16 下午04:49:57&lt;br/&gt;<br />
*/<br />
private synchronized String
countertick( String name, String password){<br />
Document doc =
openDocument();<br />
Date currdt = new java.util.Date();<br />
//mc:month
counter(月计数器); dc: day counter(日计数器); <br />
//tc: total counter(总计数器); wc: week
counter(周计数器);<br />
//rt: registe time登记时间<br />
String
mc="-1",dc="-1",tc="-1",wc="-1",rt="-1";<br />
Element root =
doc.getRootElement();<br />
Element selitem=null,item=null;<br />
for(Iterator it =
root.elementIterator("item"); it.hasNext();){<br />
item =
(Element)it.next();<br />
if(name.equals(item.element("name").getText())){ <br />
selitem=item;<br />
String pwd =
item.elementText("password");<br />
if(!password.equals(pwd)){<br />
return
ERRORINFO;//密码不对，直接返回<br />
}<br />
mc=item.element("mc").getText();<br />
dc=item.element("dc").getText();<br />
tc=item.element("tc").getText();<br />
wc=item.element("wc").getText();<br />
rt=item.element("rt").getText();<br />
break;<br />
}<br />
}<br />
<br />
//如果selitem为空，说明没有个名字的计数器。则添加一个。<br />
if(selitem==null){<br />
//System.out.println("没有找到这个名字的计数器："+name);<br />
rt=DATEFORMATER.format(currdt);<br />
selitem
=
doc.getRootElement().addElement("item");<br />
selitem.addElement("name").setText(name);<br />
selitem.addElement("tc").setText("0");<br />
selitem.addElement("mc").setText("0");<br />
selitem.addElement("wc").setText("0");<br />
selitem.addElement("dc").setText("0");<br />
selitem.addElement("rt").setText(rt);<br />
selitem.addElement("password").setText(password);<br />
mc="0";<br />
wc="0";<br />
dc="0";<br />
tc="0";<br />
}<br />
<br />
//处理计数器加一操作。<br />
Calendar
currcr=Calendar.getInstance();<br />
//总数器总是加1。<br />
tc
=String.valueOf(Integer.parseInt(tc)+1);<br />
selitem.element("tc").setText(tc);<br />
Date
lastdt = null;<br />
try {<br />
lastdt = DATEFORMATER.parse(rt);<br />
} <br />
catch
(ParseException e) {<br />
lastdt = new java.util.Date();<br />
}<br />
Calendar lastcr =
Calendar.getInstance();<br />
lastcr.setTime(lastdt);<br />
currcr.setTime(currdt);<br />
//System.out.println("上次登记时间："+DATEFORMATER.format(lastdt));<br />
//System.out.println("本次登记时间："+DATEFORMATER.format(currdt));<br />
if(lastcr.get(Calendar.YEAR)==currcr.get(Calendar.YEAR)){<br />
//月相同，月计数加1<br />
if(lastcr.get(Calendar.MONTH)==currcr.get(Calendar.MONTH)){<br />
mc
=
String.valueOf(Integer.parseInt(mc)+1);<br />
}<br />
else{<br />
mc="1";<br />
}<br />
//日相同，日计数加1<br />
if(lastcr.get(Calendar.DAY_OF_YEAR)==currcr.get(Calendar.DAY_OF_YEAR))<br />
dc
= String.valueOf(Integer.parseInt(dc)+1);<br />
else<br />
dc =
"1";<br />
<br />
if(lastcr.get(Calendar.WEEK_OF_YEAR)==currcr.get(Calendar.WEEK_OF_YEAR))<br />
wc
= String.valueOf(Integer.parseInt(wc)+1);<br />
else<br />
wc = "1";<br />
} <br />
else{//年不一样，则月计数器、周计数器日计数器肯定也不一样。<br />
mc="1"; dc="1"; wc="1"; <br />
}<br />
selitem.element("mc").setText(mc);<br />
selitem.element("wc").setText(wc);<br />
selitem.element("dc").setText(dc);<br />
//登记记录时间<br />
selitem.element("rt").setText(DATEFORMATER.format(currdt)); </p>
<p>try {<br />
XMLWriter xw = new XMLWriter(new
FileWriter(FileN));<br />
xw.write(doc);<br />
xw.close();<br />
} <br />
catch (IOException
e) {<br />
e.printStackTrace();<br />
} <br />
return
tc+";"+mc+";"+wc+";"+dc;<br />
}<br />
/**<br />
*功能：服务暴露的接口，也就是指定名称、密码，返回指定的计数，并将计数器加1。&lt;br/&gt;<br />
*编码：王力猛
时间：2007-4-17 上午10:05:22&lt;br/&gt;<br />
*/<br />
public String Counter(String name,
String password){<br />
if(password==null || name==null)return ERRORINFO;<br />
return
countertick(name, password);<br />
}<br />
}</p>
<p><strong>四、客户端编写</strong><br />
客户端是个页面，为了条理清晰，我先写个调用Web
Service的类，其内容如下：<br />
package com.wallimn.WebService;//调试请注意包名</p>
<p>import org.apache.axis.client.Call;<br />
import
org.apache.axis.client.Service;</p>
<p>public class CounterServiceClient {<br />
private String counterarr[];</p>
<p>public boolean getCounter(String CounterName, String password) {<br />
boolean
res = false;<br />
try {<br />
String endpoint =
"http://localhost:8080/axis/WsCounterByWallimn.jws";//此处注意，请与你的开发环境匹配<br />
Service
service = new Service();<br />
Call call = (Call)
service.createCall();<br />
call.setTargetEndpointAddress(new
java.net.URL(endpoint));<br />
call.setOperationName("Counter");<br />
//
填写你要调用的方法名称<br />
String counter = (String) call.invoke(new Object[] { CounterName,
password });<br />
counterarr = counter.split(";");<br />
res = (counterarr != null
&amp;&amp; counterarr.length == 4);<br />
} <br />
catch (Exception e)
{<br />
}<br />
return res;<br />
}</p>
<p>public String getDc() {<br />
return counterarr[3];<br />
}</p>
<p>public String getMc() {<br />
return counterarr[1];<br />
}</p>
<p>public String getTc() {<br />
return counterarr[0];<br />
}</p>
<p>public String getWc() {<br />
return counterarr[2];<br />
}<br />
}</p>
<p>　　到页面(test.jsp)上就简单了，我也把它贴在下面：<br />
&lt;%@ page language="java"
import="com.wallimn.WebService.CounterServiceClient"
pageEncoding="GB18030"%&gt;<br />
&lt;%<br />
CounterServiceClient client = new
CounterServiceClient();<br />
client.getCounter("hello","123");<br />
%&gt;</p>
<p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;计数器测试页面&lt;/title&gt;<br />
<br />
&lt;meta
http-equiv="pragma" content="no-cache"&gt;<br />
&lt;meta
http-equiv="cache-control" content="no-cache"&gt;<br />
&lt;meta
http-equiv="expires" content="0"&gt; <br />
&lt;meta http-equiv="keywords"
content="wallimn,计数器,WebService"&gt;<br />
&lt;meta http-equiv="description"
content="计数器使用示例"&gt;<br />
&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;h2
align="center"&gt;计数器详情&lt;/h2&gt;<br />
&lt;hr/&gt; <br />
总访问量:&lt;%=client.getTc()%&gt;
&lt;br/&gt;<br />
今天访问量:&lt;%=client.getDc()%&gt;
&lt;br/&gt;<br />
本周访问量:&lt;%=client.getWc()%&gt;
&lt;br/&gt;<br />
本月访问量:&lt;%=client.getMc()%&gt; &lt;br/&gt; <br />
&lt;hr/&gt; <br />
&lt;p&gt;欢迎交流&lt;br/&gt;博客：http://blog.csdn.net/wallimn&lt;br/&gt;电邮：wallimn@sohu.com&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>五、结束语</p>
至此一个完整计数器的Web
Service开发、使用的程序的全部完成了。将上面的类、及页面部署到任意的一个上下文中，通过浏览器打开test.jsp，就可以看了结果了。<br />
欢迎访问我的博客(http://blob.csdn.net/wallimn)留言或发邮件(wallimn@sohu.com)交流。
<br />
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/331512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2010-09-09 14:23 <a href="http://www.blogjava.net/unilobster/articles/331512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux设置环境变量</title><link>http://www.blogjava.net/unilobster/articles/310975.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Wed, 27 Jan 2010 09:19:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/310975.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/310975.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/310975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/310975.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/310975.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em;">(1)用文本编辑器打开/etc/profile</p>
<p style="text-indent: 2em;">(2)在profile文件末尾加入：</p>
<p style="text-indent: 2em;">JAVA_HOME=/usr/share/jdk1.5.0_05</p>
<p style="text-indent: 2em;">PATH=$JAVA_HOME/bin:$PATH</p>
<p style="text-indent: 2em;">CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar</p>
<p style="text-indent: 2em;">export JAVA_HOME</p>
<p style="text-indent: 2em;">export PATH</p>
<p style="text-indent: 2em;">export CLASSPATH</p>
<p style="text-indent: 2em;">(3)重新登录</p>
<p style="text-indent: 2em;">注：修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。</p>
<p style="text-indent: 2em;"><br />
</p>
<p style="text-indent: 2em;">注解：</p>
<p style="text-indent: 2em;">a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录</p>
<p style="text-indent: 2em;">b. linux下用冒号&#8220;:&#8221;来分隔路径</p>
<p style="text-indent: 2em;">c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值,在<a href="javascript:;" onclick="javascript:tagshow(event, '%C9%E8%D6%C3');" target="_self"><u><strong>设置</strong></u></a>环境变量时特别要注意不能把原来的值给覆盖掉了，这是一种常见的错误。</p>
<p style="text-indent: 2em;">d. CLASSPATH中当前目录&#8220;.&#8221;不能丢,把当前目录丢掉也是常见的错误。</p>
<p style="text-indent: 2em;">e. export是把这三个变量导出为全局变量。</p>
<p style="text-indent: 2em;">f. 大小写必须严格区分。</p>
<br />
<p style="text-indent: 2em;"><br />
</p>
<p style="text-indent: 2em;">linux 设置环境变量 http://hi.chinaunix.net/?uid-20290281-action-viewspace-itemid-30027</p>
<p style="text-indent: 2em;">
linux修改系统环境变量是否需要重启机器 http://wenda.tianya.cn/wenda/thread?tid=51757d7d427012bb</p>
<img src ="http://www.blogjava.net/unilobster/aggbug/310975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2010-01-27 17:19 <a href="http://www.blogjava.net/unilobster/articles/310975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts文件下载</title><link>http://www.blogjava.net/unilobster/articles/307146.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Thu, 24 Dec 2009 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/307146.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/307146.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/307146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/307146.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/307146.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;filedown(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Member&nbsp;objMember)</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;Exception{<br />
</span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletOutputStream&nbsp;os&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedOutputStream&nbsp;bos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fromPageId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;request.getAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">frompageid</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fromPageId&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;fromPageId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">frompageid</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fromPageId&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AccessLogWriter.getInstance().writeLockLogFile(<br />
</span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objMember.getMemberID(),&nbsp;request.getSession().getId(),</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">90</span><span style="color: #000000;">"</span><span style="color: #000000;">,fromPageId,</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sfilename&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;stargetFileName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;submit&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">download</span><span style="color: #000000;">"</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;projectid&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;request.getAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">projectid</span><span style="color: #000000;">"</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fileManagerId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;request.getAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">fileManagerId</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fileid&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;request.getAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">fileid</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(submit&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sfilename&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">downloadFileName</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stargetFileName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">targetFileName</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(sfilename</span><span style="color: #000000;">==</span><span style="color: #0000ff;">null</span><span style="color: #000000;">||</span><span style="color: #000000;">sfilename.equals(</span><span style="color: #000000;">""</span><span style="color: #000000;">))&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">点击URL的情况</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sfilename&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;request.getAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">downloadFileName</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stargetFileName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;request.getAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">targetFileName</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(projectid&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;projectid&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">projectid</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fileManagerId&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileManagerId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">fileManagerId</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fileid&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileid&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">fileid</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">文字转换</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;ufilename&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String(sfilename.getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">iso-8859-1</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Shift_JIS</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(ufilename.indexOf(</span><span style="color: #000000;">"</span><span style="color: #000000;">?</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sfilename&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ufilename;<br />
</span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;utargetFileName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String(stargetFileName.getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">iso-8859-1</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Shift_JIS</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(utargetFileName.indexOf(</span><span style="color: #000000;">"</span><span style="color: #000000;">?</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stargetFileName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;utargetFileName;<br />
</span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;saveFileName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String(stargetFileName.getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">Shift_JIS</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">ISO-8859-1</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&amp; ，%26 符号转换</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveFileName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp;toIEParamaterString0to127(saveFileName);<br />
</span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;existFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(sfilename.replace(</span><span style="color: #000000;">'</span><span style="color: #000000;">\\</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">/</span><span style="color: #000000;">'</span><span style="color: #000000;">));<br />
</span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">existFile.exists())&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span style="color: #000000;">"</span><span style="color: #000000;">text/html;&nbsp;charset=SHIFT_JIS</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintWriter&nbsp;out&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;response.getWriter();<br />
</span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(<br />
</span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;file&nbsp;isn't&nbsp;exist!&lt;/BODY&gt;&lt;/HTML&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br />
</span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">Cache-Control</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: #008000;">//</span><span style="color: #008000;">HTTP&nbsp;1.1</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">Pragma</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setDateHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">Expires</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3600</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1000</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span style="color: #000000;">"</span><span style="color: #000000;">application/octet-stream</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">Content-Disposition</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">attachment;filename=</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;saveFileName);<br />
</span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;downloadFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(sfilename);<br />
</span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentLength((</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)&nbsp;downloadFile.length());<br />
</span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(sfilename);<br />
</span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;response.getOutputStream();<br />
</span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedOutputStream(os);<br />
</span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;abyte0&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">2048</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j;<br />
</span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;off&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;len&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;abyte0.length;<br />
</span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;((j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in.read(abyte0,&nbsp;off,&nbsp;len))&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bos.write(abyte0,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;j);<br />
</span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in.close();<br />
</span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bos.close();<br />
</span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.close();<br />
</span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fromPageId&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AccessLogWriter.getInstance().writeLockLogFile(<br />
</span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objMember.getMemberID(),&nbsp;request.getSession().getId(),</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">90</span><span style="color: #000000;">"</span><span style="color: #000000;">,fromPageId,</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
</span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;s<br />
</span><span style="color: #008080;">100</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">101</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">102</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;toIEParamaterString0to127(String&nbsp;s)&nbsp;{<br />
</span><span style="color: #008080;">103</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;sb&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuffer();<br />
</span><span style="color: #008080;">104</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;s.length();&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">105</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;s.charAt(i);<br />
</span><span style="color: #008080;">106</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(c&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;">&amp;&amp;</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">127</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">107</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">108</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(c&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">32</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">109</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">%20</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">110</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">111</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(java.net.URLEncoder.encode(s.substring(i,&nbsp;i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">),</span><span style="color: #000000;">"</span><span style="color: #000000;">Shift_JIS</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br />
</span><span style="color: #008080;">112</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">113</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">114</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(Exception&nbsp;e){<br />
</span><span style="color: #008080;">115</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(c);<br />
</span><span style="color: #008080;">116</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">117</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">118</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(c&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">160</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">223</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">119</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">半角kana 0xA0-0xDF</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">120</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(s.substring(i,&nbsp;i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">));<br />
</span><span style="color: #008080;">121</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">122</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">日语汉字 1个字节：0x80-0x9F、0xE0-0xFC</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">123</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(((&nbsp;c&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">128</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">159</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;(c&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">224</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">252</span><span style="color: #000000;">))&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;s.length())){<br />
</span><span style="color: #008080;">124</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">取两行</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">125</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(s.substring(i,&nbsp;i</span><span style="color: #000000;">+</span><span style="color: #000000;">2</span><span style="color: #000000;">));<br />
</span><span style="color: #008080;">126</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">127</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">128</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">已经是最后一行</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">129</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(s.substring(i,&nbsp;i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">));<br />
</span><span style="color: #008080;">130</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">131</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">132</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">133</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">134</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;sb.toString();<br />
</span><span style="color: #008080;">135</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.blogjava.net/unilobster/aggbug/307146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-12-24 14:14 <a href="http://www.blogjava.net/unilobster/articles/307146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat和weblogic工程发布差异</title><link>http://www.blogjava.net/unilobster/articles/306599.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Fri, 18 Dec 2009 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/306599.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/306599.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/306599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/306599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/306599.html</trackback:ping><description><![CDATA[先把问题列在这里，还没解决<br />
tomcat发布时，someObj.getClass().getResource("/").getPath()得到是的%CATALINA_HOME%下webapps的工程的META-INF根目录<br />
weblogic发布时，someObj.getClass().getResource("/").getPath()得到是的base_domain目录的根目录。<br />
这样取配置文件时，会出错。<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/306599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-12-18 17:38 <a href="http://www.blogjava.net/unilobster/articles/306599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>远程调试Tomcat,Weblogic</title><link>http://www.blogjava.net/unilobster/articles/306595.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Fri, 18 Dec 2009 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/306595.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/306595.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/306595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/306595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/306595.html</trackback:ping><description><![CDATA[最近小玩Weblogic<br />
试下Tomcat和Weblogic的远程调试。<br />
<br />
===============打酱油的分割线========================<br />
Tomcat远程调试<br />
1 将war包拷贝到<span style="background-color: #efe8ff;">%CATALINA_HOME%/webapps</span>下，<br />
ps：注意在环境变量中设置CATALINA_HOME<br />
<br />
2 修改<span style="background-color: #efe8ff;">%CATALINA_HOME%<span style="background-color: #efe8ff;"><span style="background-color: #efe8ff;">/</span>bin/catalina.bat文件，</span></span><br />
在这段代码之后<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">set&nbsp;_EXECJAVA</span><span style="color: #000000;">=%</span><span style="color: #000000;">_RUNJAVA</span><span style="color: #000000;">%</span><span style="color: #000000;"><br />
set&nbsp;MAINCLASS</span><span style="color: #000000;">=</span><span style="color: #000000;">org.apache.catalina.startup.Bootstrap<br />
set&nbsp;ACTION</span><span style="color: #000000;">=</span><span style="color: #000000;">start<br />
set&nbsp;SECURITY_POLICY_FILE</span><span style="color: #000000;">=</span><span style="color: #000000;"><br />
set&nbsp;DEBUG_OPTS</span><span style="color: #000000;">=</span><span style="color: #000000;"><br />
set&nbsp;JPDA</span><span style="color: #000000;">=</span></div>
<br />
添加如下代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">set&nbsp;JAVA_OPTS</span><span style="color: #000000;">=-</span><span style="color: #000000;">Xdebug&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Xnoagent&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Djava.compiler</span><span style="color: #000000;">=</span><span style="color: #000000;">NONE <br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">Xrunjdwp:transport</span><span style="color: #000000;">=</span><span style="color: #000000;">dt_socket,address</span><span style="color: #000000;">=</span><strong><span style="color: #000000;"><span style="color: red;"><span style="color: #13141e;"><strong><span style="color: #000000;"><span style="color: red;"><span style="color: #13141e;"><span style="color: #000000;">9999</span></span></span></span></strong></span></span></span></strong><span style="color: #000000;">,suspend</span><span style="color: #000000;">=</span><span style="color: #000000;">n,server</span><span style="color: #000000;">=</span><span style="color: #000000;">y<br />
</span></div>
<br />
<span style="background-color: #80e8ff;">要补充一点，上面是在windows下面的tomcat配置，在linux下，必须修改<strong><span style="color: red;">catalina.sh</span></strong>文件，在相应的位置添加以下代码<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">CATALINA_OPTS</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">-server&nbsp;-Xdebug&nbsp;-Xnoagent&nbsp;-Djava.compiler=NONE<br />
&nbsp;-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999</span><span style="color: #000000;">"</span></div>
<br />
3 运行<span style="background-color: #efe8ff;">%CATALINA_HOME%<span style="background-color: #efe8ff;"><span style="background-color: #efe8ff;">/</span>bin<span style="background-color: #efe8ff;"><span style="background-color: #efe8ff;"><span style="background-color: #efe8ff;">/</span></span>startup.bat<br />
</span></span></span>4 在eclipse里面配置，Run-&gt;Open Run Dialog，点开左边Remote Java Application，配置你工程修改Port 为<strong>9999 ，-</strong>&gt;dubug<br />
5 设置断点，调试<br />
<span style="color: #5f48ff;"><br />
PS：</span>有这样一种情况，一般大家都用eclipse的Tomcat插件进行开发的，这样在<span style="background-color: #efe8ff;"><span style="background-color: #d8f1ff;">%CATALINA_HOME<span style="background-color: #d8f1ff;"><span style="background-color: #efe8ff;"><span style="background-color: #d8f1ff;">%</span></span>conf/server.xml</span></span></span>文件里，就有这样的配置<span style="background-color: #efe8ff;"><span style="background-color: #d8f1ff;"><span style="background-color: #d8f1ff;"><br />
</span></span></span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">Context&nbsp;path</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/myPrj</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;reloadable</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;docBase</span><span style="color: #000000;">=</span><span style="color: #000000;">"XXX</span><span style="color: #000000;">\workspace\myPrj\WebContent</span><span style="color: #000000;">"</span><span style="color: #000000;"> <br />
workDir</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">XXX\workspace\myPrj\work</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span></div>
要把这行去掉，不然调试的还是eclispe工程里面的代码，不是调试的war包。<br />
<br />
===============打酱油的兄弟的分割线====================<br />
Weblogic远程调试<br />
1 修改<span style="background-color: #efe8ff;">your_domain/bin/startWebLogic.cmd文件</span>，<br />
在这段代码之后<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">@REM&nbsp;Call&nbsp;setDomainEnv&nbsp;here.</span></div>
<br />
添加如下代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">set&nbsp;JAVA_OPTIONS</span><span style="color: #000000;">=%</span><span style="color: #000000;">JAVA_OPTIONS</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Xdebug&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Xnoagent&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Djava.compiler</span><span style="color: #000000;">=</span><span style="color: #000000;">NONE </span><span style="color: #000000;"><br />
-</span><span style="color: #000000;">Xrunjdwp:transport</span><span style="color: #000000;">=</span><span style="color: #000000;">dt_socket,address</span><span style="color: #000000;">=</span><strong><span style="color: #000000;">3999</span></strong><span style="color: #000000;">,suspend</span><span style="color: #000000;">=</span><span style="color: #000000;">y,server</span><span style="color: #000000;">=</span><span style="color: #000000;">y<br />
</span></div>
<br />
2 在http://localhost:7001/console下，发布war包<br />
<br />
3 Start你的工程<br />
<br />
4 在eclipse里面配置，Run-&gt;Open Run Dialog，点开左边Remote Java Application，配置你工程修改Port 为<strong>3999 ，-</strong>&gt;dubug<br />
5 设置断点，调试<br />
<br />
<span style="color: #3844ff;">PS：注意先后顺序</span><br />
<img src ="http://www.blogjava.net/unilobster/aggbug/306595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-12-18 17:12 <a href="http://www.blogjava.net/unilobster/articles/306595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 异常 IllegalArgumentException</title><link>http://www.blogjava.net/unilobster/articles/306021.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Tue, 15 Dec 2009 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/306021.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/306021.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/306021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/306021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/306021.html</trackback:ping><description><![CDATA[最近小玩Struts。改造项目。<br />
<br />
在测试时两次发现<br />
<span style="color: red;">
javax.servlet.ServletException: BeanUtils.populate</span>
<br />
<span style="color: red;">
java.lang.IllegalArgumentException: argument type mismatch</span>异常。<br />
<br />
第一次，是由于在Form中定义的是String[] somethingID数组类型，而在jsp中定义的是<br />
<span style="background-color: #98ffec;"><span style="background-color: #c0ffe7;"><span style="background-color: #98ffec;">&lt;html:hidden property="somethingID"/&gt;</span>,</span></span>导致类型不匹配，从而出现异常。<br />
<br />
第二次出现，原因比较隐蔽。容我慢慢道来。<br />
两个画面，SomeList.jsp 和Some.jsp，分别对应SomeListForm，SomeListAction.java 和 SomeForm，SomeChangeAction.java。功能就是打开SomeList.jsp画面，选择某条Some进入SomeChange.jsp，修改好后返回SomeList.jsp。为了修正Session问题，在Some.jsp中添加了&lt;html:hidden property="somethingID"/&gt;，然后上面异常就发生了。<br />
历经挫折，跋山涉水后找到原因。在SomeListForm中有属性String[] somethingID，数组类型，在SomeForm中有属性String somethingID是单值String类型，名字一致类型不一样。<br />
当SomeChangeForm返回SomeListForm的时候，会将somethingID的值传回。这时候就发生类型不匹配异常了。根本原因在于，配置struts-config.xml的时候，<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">action&nbsp;attribute</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">someForm</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;input</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/form/somechange.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">someForm</span><span style="color: #000000;">"</span><span style="color: #000000;"> <br />
path</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/somechange</span><span style="color: #000000;">"</span><span style="color: #000000;"> type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">com.somecorp.struts.action.SomeChangeAction</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">forward&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">display</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;path</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/form/somechange.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red;"><strong><span style="color: #000000;"><span style="color: red;"><span style="color: red;"><span style="color: #000000;">&lt;</span><span style="color: #000000;">forward&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">return</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;p<span style="color: red;"><span style="color: #000000;">ath</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/somelist.</span></span></span><span style="color: #000000;">do</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span></span></span></span></strong></span></span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">action</span><span style="color: #000000;">&gt;<br />
</span></div>
高亮这行没有设置 redirect="true"，这样的话，返回时就会将上个Form的值返回从而导致不匹配异常。
<br />
<ol>
    <li>一般来说，这时候的Form是不需要将值返回的，改成<span style="color: #000000;">&lt;</span><span style="color: #000000;">forward&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">return</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;path</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/somelist.do</span><span style="color: #000000;">"</span><span style="color: red;">&nbsp;<strong>redirect="true"</strong></span><span style="color: #000000;">/&gt;就可以了。<span style="color: red;">要注意其他参数的传递。</span></span></li>
    <li><span style="color: #000000;">还有个改法就是将两个Form中同名不同类型的属性改个名字也可以。</span></li>
</ol>
<br />
==========打酱油的分割线====================<br />
对于redirect="true"不理解的可以参考下面这段：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;"><span style="color: red;"><span style="color: #000000;">在ActionForward中有一个重要的属性redirect，当redirect</span><span style="color: #000000;">=</span><span style="color: #000000;">false时，将保存存储在http请求和请求上下文中的所有内容，仅在同一个应用中可用。当redirect</span><span style="color: #000000;">=</span><span style="color: #000000;">true时，Web客户端进行一次新的http请求，请求的资源可以在同一个应用中，也可以不在，原来的请求参数不再保存，原来的请求上下文也被清除，新的http请求仅包含ActionForward的path属性里所包含的参数。如果在同一个应用中，用户会话的上下文会被维护。</span></span></span></div>
<br />
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/306021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-12-15 14:04 <a href="http://www.blogjava.net/unilobster/articles/306021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts-config.xml中action元素的attribute属性的意义</title><link>http://www.blogjava.net/unilobster/articles/304421.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Tue, 01 Dec 2009 11:09:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/304421.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/304421.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/304421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/304421.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/304421.html</trackback:ping><description><![CDATA[<h3>引用：http://hi.baidu.com/chenying99/blog/item/3bf7645455f6ef52574e00a4.html/cmtid/22ff23f49cfc9665dcc4747d</h3>
<h3><a href="http://zkgale.javaeye.com/blog/153454"><font color="#ff0000">struts-config.xml中action元素的attribute属性的意义 </font></a></h3>
<p><font color="#ff0000">我觉得attribute还是有用的。 <br />
1）应用前提，attribute只有在设置了name后才有意义。 <br />
2）attribute可以实现对象的重用，即如果设置了attribute属性，在创建actionform是，会先去查找相应的scope中是否有此对象，如果有，则重用，否则创建新的对象。 <br />
3）当你将创建的acitonForm保存到相应的scope中时，你想用一个更有意义的名字来访问它时，它就有意义了。例如： <br />
配置form. <br />
&lt;form-bean name="employee" type="Employee"/&gt; <br />
配置action: <br />
&lt;action <br />
attribute="validEmployee" <br />
name="employee" <br />
type="EmployeeAction" <br />
scope="request" <br />
path="/employee"&gt; <br />
..... <br />
这样就可以用validEmployee在JSP页面中访问了，而不是用employee. <br />
这在同一个form 在不同情况下有不同的意义时，意义才很明显。</font></p>
<img src ="http://www.blogjava.net/unilobster/aggbug/304421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-12-01 19:09 <a href="http://www.blogjava.net/unilobster/articles/304421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat启动异常</title><link>http://www.blogjava.net/unilobster/articles/300653.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Mon, 02 Nov 2009 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/300653.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/300653.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/300653.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/300653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/300653.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 背景：Tomcat启动时，从外部启动是正常的，但从eclipse启动就会有下面的异常<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">2009</span><span style="color: #000000;">/</span><span style="color: #000000;">11</span><span style="color: #000000;">/</span><span style="color: #000000;">02</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">:</span><span style="color: #000000;">52</span><span style="color: #000000;">:</span><span style="color: #000000;">25</span><span style="color: #000000;">&nbsp;org.apache.struts.action.ActionServlet&nbsp;initModuleDataSources<br />
SEVERE:&nbsp;Initializing&nbsp;application&nbsp;data&nbsp;source&nbsp;org.apache.struts.action.DATA_SOURCE<br />
Something&nbsp;unusual&nbsp;has&nbsp;occured&nbsp;to&nbsp;cause&nbsp;the&nbsp;driver&nbsp;to&nbsp;fail.&nbsp;Please&nbsp;report&nbsp;</span><span style="color: #0000ff;"><span style="color: #020000;">this</span></span><span style="color: #000000;">&nbsp;exception: <br />
Exception:&nbsp;<strong><span style="color: red;">java.security.AccessControlException</span></strong>:&nbsp;access&nbsp;denied <br />
(java.net.SocketPermission&nbsp;</span><span style="color: #000000;">172.28</span><span style="color: #000000;">.</span><span style="color: #000000;">139.113</span><span style="color: #000000;">:</span><span style="color: #000000;">5432</span><span style="color: #000000;">&nbsp;connect,resolve)<br />
Stack&nbsp;Trace:<br />
<br />
java.security.AccessControlException:&nbsp;access&nbsp;denied&nbsp;(java.net.SocketPermission&nbsp;</span><span style="color: #000000;">172.28</span><span style="color: #000000;">.</span><span style="color: #000000;">139.113</span><span style="color: #000000;">:</span><span style="color: #000000;">5432</span><span style="color: #000000;">&nbsp;connect,resolve)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.security.AccessControlContext.checkPermission(AccessControlContext.java:</span><span style="color: #000000;">264</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.security.AccessController.checkPermission(AccessController.java:</span><span style="color: #000000;">427</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.SecurityManager.checkPermission(SecurityManager.java:</span><span style="color: #000000;">532</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp; ......</span><span style="color: #000000;"><br />
</span></div>
<br />
&nbsp;&nbsp;&nbsp; 为了这个<span style="color: #000000;"><strong><span style="color: red;">java.security.AccessControlException</span></strong></span>摆弄半天也没解决。<br />
&nbsp;&nbsp;&nbsp; 秉承"知之为知之，不知google之"的原则，从网上找原因，还是eclipse的Tomcat参数设置不对。<br />
&nbsp;&nbsp;&nbsp; 进入：Window -&gt;Preference -&gt;Tomcat，在设置Tomcat路径的下面有个复选框"使用security manager启动Tomcat"，把他设置成未选中状态。原来是安全权限不够。<br />
&nbsp;&nbsp;&nbsp; 以上。<br />
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/300653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-11-02 11:04 <a href="http://www.blogjava.net/unilobster/articles/300653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux命令</title><link>http://www.blogjava.net/unilobster/articles/300158.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Thu, 29 Oct 2009 04:29:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/300158.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/300158.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/300158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/300158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/300158.html</trackback:ping><description><![CDATA[最近小玩Linux<br />
照例记录几个命令：<br />
<ol>
    <li>#ntsysv： 查看Linux服务（图形界面）（空格选中取消） <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---ubuntu 启动ssh <span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="color: #333333; font-family: 宋体,Arial; font-size: 14px; line-height: 19px;">sudo apt-get install openssh-server<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="color: #333333; font-family: 宋体,Arial; font-size: 14px; line-height: 19px;">/etc/init.d/ssh start</span></span><br />
    <span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="color: #333333; font-family: 宋体,Arial; font-size: 14px; line-height: 19px;"><br />
    </span></span></li>
    <li>启动服务：#service sshd start<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #service sshd restart（重新启动）</li>
    <li>#rm -rf fileDir：删除文件夹及其子文件夹内容<br />
    </li>
    <li>#mv：移动文件 重命名<br />
    </li>
    <li>#vi：编辑器<br />
    </li>
    <li>#cat：显示文件内容<br />
    </li>
    <li>#mkdir：创建文件夹<br />
    </li>
    <li>#cp：复制文件</li>
    <li>#ll；#ls 查看文件夹内容</li>
    <li>#vi /etc/sysconfig/network-scripts/ifcfg-eth0：配置网卡
    <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
    <br />
    Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
    http://www.CodeHighlighter.com/<br />
    <br />
    --><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">DEVICE</span><span style="color: #000000;">=</span><span style="color: #000000;">eth0<br />
    </span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">ONBOOT</span><span style="color: #000000;">=</span><span style="color: #000000;">yes<br />
    </span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">BOOTPROTO</span><span style="color: #000000;">=</span><span style="color: #0000ff;">static</span><span style="color: #000000;"><br />
    </span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">IPADDR</span><span style="color: #000000;">=</span><span style="color: #000000;">172.28</span><span style="color: #000000;">.</span><span style="color: #000000;">139.113</span><span style="color: #000000;"><br />
    </span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">NETMASK</span><span style="color: #000000;">=</span><span style="color: #000000;">255.255</span><span style="color: #000000;">.</span><span style="color: #000000;">255.128</span><span style="color: #000000;"><br />
    </span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">GATEWAY</span><span style="color: #000000;">=</span><span style="color: #000000;">172.28</span><span style="color: #000000;">.</span><span style="color: #000000;">139.1</span></div>
    </li>
    <li>#/etc/init.d/network restart：网卡重启</li>
    <li>#ifconfig：查看网卡IP</li>
    <li>#grep -lr 'message' 'path'：在path目录下搜索含有"message"字符串的文件，包括该目录下的所有文件和子文件夹。</li>
    <li>df -k /tmp 查看磁盘剩余空间</li>
    <li>ln -s /home/tmp tmp 添加tmp到/home/tmp的软链接，可以解决磁盘剩余空间不足的问题。</li>
    <li>netstat -anp|grep 8080 查看占用8080端口的进程<br />
    kill -9 PID 关闭进程</li>
    <li>chmod 777 file 设置文件权限。在安装postgres的时候，发生了"can note create lock file"异常，原因就是/tmp文件夹对postgres权限不够导致的。</li>
    <li>tar czvf this.tar.gz ./*.txt&nbsp; 打包<br />
    tar xzvf this.tar.gz ./ 解压</li>
    <li>
    <pre># hostname               # 查看计算机名<br />
    # uname -a               # 查看内核/操作系统/CPU信息<br />
    # head -n 1 /etc/issue   # 查看操作系统版本<br />
    # w                      # 查看活动用户<br />
    # id &lt;用户名&gt;            # 查看指定用户信息<br />
    # last                   # 查看用户登录日志<br />
    # cut -d: -f1 /etc/passwd   # 查看系统所有用户</pre>
    </li>
    <li>whoami&nbsp; 查看当前用户</li>
    <li>whereis File 查找文件<br />
    </li>
</ol>
<a href="http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds/" rel="bookmark" title="永久链接: Linux系统信息查看命令大全">Linux系统信息查看命令大全</a><br />
http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds/<br />
<br />
<a title="Linux命令全集" href="http://linux.chinaitlab.com/special/linuxcom/">Linux命令全集</a><br />
http://linux.chinaitlab.com/special/linuxcom/<br />
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/300158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-10-29 12:29 <a href="http://www.blogjava.net/unilobster/articles/300158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lucene使用小记</title><link>http://www.blogjava.net/unilobster/articles/299388.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Thu, 22 Oct 2009 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/299388.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/299388.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/299388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/299388.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/299388.html</trackback:ping><description><![CDATA[几点小体会，先记下，不知道对不对。<br />
网上说lucene是一个半成品，深有体会。<br />
&nbsp;&nbsp;&nbsp; 1.lucene是一种全文搜索技术，词元是一个单词（word）。试图搜索一个单词的一部分或一个字母，是没有意义的，lucene也不能实现。除非你是想搜索一个单词的前缀，用PrefixQuery是可以的。说到底，还是在生成索引的时候的分析器（Analyzer）在作怪。<br />
&nbsp;&nbsp;&nbsp; 下面有四个英文分析器：<br />
<table style="border: medium none ; width: 379.9pt; margin-left: 36.85pt; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0" width="507">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 4cm;" valign="top" width="151">
            <p style="text-align: center;" align="center"><sup>分析器</sup></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 329.4pt;" valign="top" width="439">
            <p style="text-align: center;" align="center"><sup>内部操作步骤</sup></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 4cm;" valign="top" width="151">
            <p><sup>WhitespaceAnalyzer</sup></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 329.4pt;" valign="top" width="439">
            <p style="text-indent: 7.5pt;"><sup>在空格处进行语汇单元的切分</sup></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 4cm;" valign="top" width="151">
            <p><sup>SimpleAnalyzer</sup></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 329.4pt;" valign="top" width="439">
            <p style="text-indent: 7.5pt;"><sup>在非字母字符处切分文本，并将其转换为小写形式</sup></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 4cm;" valign="top" width="151">
            <p><sup>StopAnalyzer</sup></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 329.4pt;" valign="top" width="439">
            <p style="text-indent: 7.5pt;"><sup>在非字母字符处切分文本，然后小写化，再移除停用词</sup></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 4cm;" width="151">
            <p><sup>StandardAnalyzer</sup></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 329.4pt;" valign="top" width="439">
            <p style="text-indent: 7.5pt;"><sup>基于复杂的语法来实现语汇单元化；这种语法规则可以识别</sup><sup>e-mail</sup><sup>地址、首字母缩写词、汉语</sup><sup>-</sup><sup>日语</sup><sup>-</sup><sup>汉语字符、字母数字等；小写化；并移除停用词</sup></p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
&nbsp;&nbsp;&nbsp; 切分出来的就是一个一个词元，也就是你搜索的最小单位了。不难从上面看出，lucene对亚洲字体支持有限。<br />
&nbsp;&nbsp;&nbsp; 2.试过用StandardAnalyzer分析日文英文文本。日文可以正常搜索，英文字母只能按单词搜索。<br />
&nbsp;&nbsp;&nbsp; 3.这里说一个奇怪的现象：搜索的时候，比如文本中有"你好bcc"，我搜"好bcc"可以正常搜索，搜"好a"竟然也可以搜到。debug代码，看到查询的时候，有一个parse方法（下面说明）竟然把后面的"a"去掉了，真正搜的是"好"。但是搜"好b"或"好d"等都搜不到。奇怪奇怪！<br />
&nbsp;&nbsp;&nbsp; 4.索引好之后，就可以搜索（Query）了。至于Query也有好多种：<br />
&nbsp;&nbsp;&nbsp;&nbsp; |_______WildcardQuery &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; （通配符查询）<br />
&nbsp;&nbsp;&nbsp;&nbsp; |______<code>_PhraseQuery&nbsp; &nbsp;&nbsp;&nbsp; (短语查询) 可以限定两个term之间的距离</code><br />
&nbsp;&nbsp;&nbsp;&nbsp; |_______RangeQuery&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (范围查询)<br />
&nbsp;&nbsp;&nbsp;&nbsp; |_______MultiPhraseQuery&nbsp;&nbsp;&nbsp; （多短语查询）<br />
&nbsp;&nbsp;&nbsp;&nbsp; |_______FuzzyQuery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; （模糊查询）<br />
&nbsp;&nbsp;&nbsp;&nbsp; |_______SpanQuery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; （跨度查询）<br />
&nbsp;&nbsp;&nbsp;&nbsp; |_______PrefixQuery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （前缀查询）<br />
&nbsp;&nbsp;&nbsp; 查询的时候，也会用到上面的Analyzer。根据Analyzer的不同会对查询的关键词进行一些处理，比如上面的去掉"a"。然后用处理过的关键词进行查询。<br />
&nbsp;&nbsp;&nbsp; 5.这里再说一个题外话：什么时候生成索引合适。总不能每次检索的时候就来一次从头到尾的生成索引吧，这显然不合人类工程动力学原理，呵呵：） 那初步想法是，先确定你要在那里文件里面搜索，每当你的这些文件有变动时，就触发对这个文件的索引。比如，新添文件或文件更新了。这样检索的时候，就只管检索。看似这样耦合度也低哈：）<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/299388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-10-22 16:34 <a href="http://www.blogjava.net/unilobster/articles/299388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA内置Unicode转换方法</title><link>http://www.blogjava.net/unilobster/articles/299177.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Wed, 21 Oct 2009 04:37:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/299177.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/299177.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/299177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/299177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/299177.html</trackback:ping><description><![CDATA[JAVA中最方便的Unicode转换方法: &nbsp; <br />
&nbsp; 在命令行界面用native2ascii工具（java自带的，在JAVA_HOME\bin下）<br />
&nbsp; 1.将汉字转为Unicode: &nbsp;&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp; C:</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">native2ascii&nbsp;&nbsp;&nbsp;测试</span></div>
&nbsp;&nbsp;&nbsp; 结果：\u6d4b\u8bd5 &nbsp; <br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp; 注：还可以使用：D：&gt;native2ascii 1.txt 2.out<br />
&nbsp;  &nbsp; <br />
&nbsp; 2.将Unicode转换为汉字: &nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp; C:</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">native2ascii&nbsp;&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">reverse&nbsp;&nbsp;&nbsp;\u6d4b\u8bd5</span></div>
&nbsp;&nbsp;&nbsp; 结果：测试<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/299177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-10-21 12:37 <a href="http://www.blogjava.net/unilobster/articles/299177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-01795,in和exists性能</title><link>http://www.blogjava.net/unilobster/articles/294167.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Mon, 07 Sep 2009 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/294167.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/294167.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/294167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/294167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/294167.html</trackback:ping><description><![CDATA[今天，客户那边出来一个问题，出现"<strong>ORA-01795:列表中的最大表达式数为1000</strong> "异常。<br />
<br />
sql文是这样的：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">select</span><span style="color: #000000;"> ENAME</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">from&nbsp; </span><span style="color: #000000;">VIP_EMP <br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">where</span><span style="color: #000000;">&nbsp;GROUP_ID&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">0001</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;SUBGROUP_ID&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">000101</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;"> VIPNO</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;"> </span><span style="color: #808080;">in</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #0000ff;">select </span><span style="color: #000000;">EMPNO</span><br />
<span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;"> </span><span style="color: #000000;">EMP</span><br />
<span style="color: #008080;">8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">where</span><span style="color: #000000;"> </span><span style="color: #000000;">EMPTYPE</span><span style="color: #000000;"> </span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">VIP</span><span style="color: #ff0000;">'</span><span style="color: #000000;">)</span></div>
<br />
调查后发现，在"PLSQL Developer"和"sqldeveloper"中直接运行时，都不会报错，虽然上面子查询的记录大于1000条。<br />
然后，尝试将子查询改成拼接一个大于1000项的数组，结果如愿出现"ORA-01795"异常。<br />
猜想，开发这边的数据库可能将上述sql文优化了，但客户数据库没有经编译器优化，所以出异常。<br />
<br />
可能优化成了以下的形式：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;e1.ENAME </span><span style="color: #0000ff;">from</span><span style="color: #000000;"> </span><span style="color: #000000;">VIP_EMP</span><span style="color: #000000;"> e1, (</span><span style="color: #0000ff;">select</span><span style="color: #000000;"> EMPNO </span><span style="color: #0000ff;">from</span><span style="color: #000000;"> EMP </span><span style="color: #0000ff;">where</span><span style="color: #000000;"> </span><span style="color: #000000;">EMPTYPE</span><span style="color: #808080;">=</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">VIP</span><span style="color: #ff0000;">'</span><span style="color: #000000;">)&nbsp;e2　<br />
</span><span style="color: #008080;">2</span><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; where</span><span style="color: #000000;">&nbsp;e1.</span><span style="color: #000000;">VIPNO</span><span style="color: #000000;"> </span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;e2.EMPNO; <br />
</span><span style="color: #008080;">2</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #808080;">and</span><span style="color: #000000;"> </span><span style="color: #000000;">e1.</span><span style="color: #000000;">GROUP_ID&nbsp;</span><span style="color: #808080;">=</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">0001</span><span style="color: #ff0000;">'<br />
</span><span style="color: #008080;">2</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #808080;">and</span><span style="color: #000000;"> </span><span style="color: #000000;">e1.</span><span style="color: #000000;">SUBGROUP_ID&nbsp;</span><span style="color: #808080;">=</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">000101</span><span style="color: #ff0000;">'</span><br />
</div>
<br />
最终，个人修改意见是，修改成两张表链结的形式，即优化以后的样子。这样修改，性能先不管，至少不会出现异常。<br />
<br />
还有个尾巴留下来了，就是In的性能问题。现将网上查到的东西贴出来。<br />
<br />
1.in和exists的性能差别<br />
<p>&nbsp;在where子句中可以使用两种格式的子查询。 </p>
<p>第一种格式是使用IN操作符，第二种格式是使用EXIST操作符。</p>
<p>修改的exists形式：<br />
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;e1.ENAME<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;VIP_EMP&nbsp;e1<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">where</span><span style="color: #000000;">&nbsp;e1.GROUP_ID&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">0001</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;e1.SUBGROUP_ID&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">000101</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">exists</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;EMP&nbsp;e2<br />
</span><span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">where</span><span style="color: #000000;">&nbsp;e2.EMPTYPE&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">VIP</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;e2.EMPNO&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;e1.VIPNO)</span></div>
<br />
用第一种：Oracle系统在执行IN子查询时，首先执行
子查询，并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前，系统先将主查询挂起，待子查询执行完毕，存放在临时表中以后再执行主查
询。<br />
<br />
用第二种：通过使用
EXIST，Oracle系统会首先检查主查询，然后运行子查询直到它找到第一个匹配项，这就节省了时间。这也就是使用EXISTS比使用IN通常查询速度快的原因。子查询以&#8216;select
'X'开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器就不必遍历整个表而仅根据索引就可完成工作（这里假定
在where语句中使用的列存在索引）。<br />
<br />
相对于IN子句来说，EXISTS使用相连子查询，构造起来要比IN子查询困难一些。
<p><br />
</p>
同时应尽可能使用NOT EXISTS来代替NOT IN，尽管二者都使用了NOT（不能使用索引而降低速度），NOT EXISTS要比NOT IN查询效率更高。<br />
<br />
比较一致的看法是：为了确定在基于规则的最优化中，哪一种子句性能更佳，不妨考虑一下，与外部查询相比，内部查询会返回多少行记录。许多情况下，EXISTS的表现更突出，
这是因为，它需要你指定一个加入条件，这就可以调用一个INDEX扫描。尽管如此，如果该查询的结果很小的话，IN常常表现得更好。你通常都愿意运行那些
能首先返回较少的结果的查询。<br />
<br />
千言万语总结成一句话：<span style="color: red;">如果内表大,外表小用exists或not exists,反之用in或not in;<br />
<br />
个人推荐还是用两张表链结的形式，直观简单，至少不会出现ORA-01795异常<br />
</span>
<p> </p>
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/294167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-09-07 13:54 <a href="http://www.blogjava.net/unilobster/articles/294167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jar打包方法</title><link>http://www.blogjava.net/unilobster/articles/292094.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Fri, 21 Aug 2009 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/292094.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/292094.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/292094.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/292094.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/292094.html</trackback:ping><description><![CDATA[背景：将工程打包成可执行的jar文件<br />
<br />
方法：1.使用eclipse的fatjar插件<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  2.使用jar命令<br />
<br />
方法1 插件<br />
&nbsp;&nbsp;&nbsp; 关于fatjar的下载和安装见另外的文章：<a title="手工制作jar2exe方法" href="http://www.blogjava.net/unilobster/archive/2009/08/20/291978.html">手工制作jar2exe方法</a>。<br />
&nbsp;&nbsp;&nbsp; 具体使用很简单。在eclipse的包视图下，右键你的工程目录，选中"Build Fat jar"，按说明填写就可以了。注意选对你的main class。<br />
fatjar下载：http://dxflygao.javaeye.com/blog/87812<br />
<br />
方法2 命令<br />
&nbsp;&nbsp;&nbsp; 1）在你的工程目录下，新建文件manifest.mf。文件内容是指定你的工程的入口，就是包含main的那个类。类的名字必须包含完整的包路径。<br />
&nbsp;&nbsp;&nbsp; manifest.mf：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;"> 1</span> <span style="color: #000000;">&nbsp;&nbsp;&nbsp; Main</span><span style="color: #000000;">-</span><span style="color: #000000;">Class: <span style="color: red;">org.java.cctv.getStart</span><br />
</span><span style="color: #008080;">2</span>&nbsp;</div>
&nbsp;&nbsp;&nbsp; 注：<span style="color: red;">两个注意的地方：一定要在包名之前加个空格；一定要在第一行的最后换一行！</span><br />
<br />
&nbsp;&nbsp;&nbsp; 2）在控制台进入你的工程目录，如workspace//yourProj，输入以下命令：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;&nbsp;&nbsp; <span style="color: #000000;">jar&nbsp;cvfm&nbsp;yourProj.jar&nbsp;manifest.mf&nbsp;</span><span style="color: #000000;">*</span></div>
<br />
&nbsp;&nbsp;&nbsp; 这样在你的当前目录下就会生成一个新的jar文件。<br />
<br />
<img src ="http://www.blogjava.net/unilobster/aggbug/292094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-08-21 14:25 <a href="http://www.blogjava.net/unilobster/articles/292094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse插件安装</title><link>http://www.blogjava.net/unilobster/articles/292058.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Fri, 21 Aug 2009 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/292058.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/292058.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/292058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/292058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/292058.html</trackback:ping><description><![CDATA[背景：以外挂links形式按转eclipse插件，安装卸载方便。<br />
<br />
PS：网上这样的文章太多，下面是引用，并稍稍有修改。因来源已不可考，所以就没有注明引用来源，若下文作者有异议，可以和我联系...<br />
<br />
<p style="background: rgb(239, 239, 239) none repeat scroll 0% 50%; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);"><span style="color: rgb(38, 0, 0);"><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);"><span style="color: rgb(0, 0, 0);"><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);"><span style="color: rgb(0, 0, 0);"><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);">用</span><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);">links</span><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);">方式安装</span><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);">eclipse</span><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);">插件详细解释</span></span></span></span></span></span></span><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255);"> </span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: SimSun;">当前配置XP SP1，eclipse3.0.1</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">&nbsp;&nbsp;
</span><span style="font-size: 10pt; font-family: SimSun;">现在假设我的eclipse安装目录是D://eclipse，新建两个文件夹目录：</span><span style="font-size: 10pt; font-family: SimSun;">D://</span><span style="font-size: 10pt; font-family: SimSun;">eclipse//</span>myplugins和<span style="font-size: 10pt; font-family: SimSun;">D://</span><span style="font-size: 10pt; font-family: SimSun;">eclipse//links。</span><span style="font-size: 10pt; font-family: SimSun;">待安装插件目录是D://</span><span style="font-size: 10pt; font-family: SimSun;">eclipse//</span>myplugins<span style="font-size: 10pt; font-family: SimSun;"> ，我将要安装LanguagePackFeature（语言包）、emf-sdo-xsd-SDK、GEF-SDK、Lomboz这四个插件。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">&nbsp;&nbsp;
</span><span style="font-size: 10pt; font-family: SimSun;">先把这四个插件程序全部放在</span><span style="font-size: 10pt; font-family: SimSun;">D://</span><span style="font-size: 10pt; font-family: SimSun;">eclipse//</span>myplugins<span style="font-size: 10pt; font-family: SimSun;">目录里，分别解压。如</span><span style="font-size: 10pt; font-family: SimSun;">Lomboz3.0.1.zip</span><span style="font-size: 10pt; font-family: SimSun;">解压成</span><span style="font-size: 10pt; font-family: SimSun;">Lomboz3.0.1</span><span style="font-size: 10pt; font-family: SimSun;">目录，这个目录包含一个</span><span style="font-size: 10pt; font-family: SimSun;">plugins</span><span style="font-size: 10pt; font-family: SimSun;">目录，要先在</span><span style="font-size: 10pt; font-family: SimSun;">Lomboz3.0.1</span><span style="font-size: 10pt; font-family: SimSun;">目录中新建一个子目录</span><span style="font-size: 10pt; font-family: SimSun;">eclipse</span><span style="font-size: 10pt; font-family: SimSun;">，然后把</span><span style="font-size: 10pt; font-family: SimSun;">plugins</span><span style="font-size: 10pt; font-family: SimSun;">目录移动到刚建立的</span><span style="font-size: 10pt; font-family: SimSun;">eclipse</span><span style="font-size: 10pt; font-family: SimSun;">目录中，即目录结构要是这样的：</span><span style="font-size: 10pt; font-family: SimSun;">D://</span><span style="font-size: 10pt; font-family: SimSun;">eclipse//</span>myplugins//<span style="font-size: 10pt; font-family: SimSun;">Lomboz3.0.1//eclipse//plugins&nbsp;</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt; font-family: SimSun;">Eclipse </span><span style="font-size: 10pt; font-family: SimSun;">将会到指定的目录下去查找<span>
eclipse//features </span>目录和eclipse//plugins 目录，看是否有合法的功能部件和（或）插件。</span><span style="font-size: 10pt; font-family: SimSun;">也就是说，目标目录必须包含一个</span><span style="font-size: 10pt; font-family: SimSun;"> eclipse </span><span style="font-size: 10pt; font-family: SimSun;">目录。如果找到，附加的功能部件和插件在运行期配置是将是可用的，如果链接文件是在工作区创建之后添加的，附加的功能部件和插件会作为新的配置变更来处理。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: SimSun;">其它压缩文件解压后若已经包含eclipse//plugins目录，则不需要建立eclipse目录。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt; font-family: SimSun;">然后在</span><span style="font-size: 10pt; font-family: SimSun;">D://</span><span style="font-size: 10pt; font-family: SimSun;">eclipse//links</span><span style="font-size: 10pt; font-family: SimSun;">目录中建立一个link文件，比如 Lomboz3.0.1.link，该文件内容为<span><span style="color: rgb(255, 0, 0);"><span style="font-size: 10pt; font-family: SimSun;">path=</span><span style="font-size: 10pt; font-family: SimSun;">D://</span><span style="font-size: 10pt; font-family: SimSun;">eclipse//</span>myplugins<span style="font-size: 10pt; font-family: SimSun;">//Lomboz3.0.1</span></span></span></span><span style="font-size: 10pt; font-family: SimSun;"><span> </span>即这个link文件要对应一个刚解压后的插件目录。新插件要新建另外的link文件。<br />
</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><strong><span style="font-size: 10pt; font-family: SimSun; color: rgb(51, 102, 255); font-weight: normal;"><span style="color: rgb(0, 0, 0);">说明：</span></span></strong></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">1. </span><span style="font-size: 10pt; font-family: SimSun;">插件可以分别安装在多个自定义的目录中。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">2. </span><span style="font-size: 10pt; font-family: SimSun;">一个自定义目录可以安装多个插件。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">3. link</span><span style="font-size: 10pt; font-family: SimSun;">文件的文件名及扩展名可以取任意名称，比如</span><span style="font-size: 10pt; font-family: SimSun;">ddd.txt</span><span style="font-size: 10pt; font-family: SimSun;">，</span><span style="font-size: 10pt; font-family: SimSun;">myplugin</span><span style="font-size: 10pt; font-family: SimSun;">都可以。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">4. link</span><span style="font-size: 10pt; font-family: SimSun;">文件中</span><span style="font-size: 10pt; font-family: SimSun;">path=</span><span style="font-size: 10pt; font-family: SimSun;">插件目录的</span><span style="font-size: 10pt; font-family: SimSun;">path</span><span style="font-size: 10pt; font-family: SimSun;">路径分隔要用</span><span style="font-size: 10pt; font-family: SimSun;">\\</span><span style="font-size: 10pt; font-family: SimSun;">或是</span><span style="font-size: 10pt; font-family: SimSun;">//</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">5. </span><span style="font-size: 10pt; font-family: SimSun;">在</span><span style="font-size: 10pt; font-family: SimSun;">links</span><span style="font-size: 10pt; font-family: SimSun;">目录也可以有多个</span><span style="font-size: 10pt; font-family: SimSun;">link</span><span style="font-size: 10pt; font-family: SimSun;">文件，每个</span><span style="font-size: 10pt; font-family: SimSun;">link</span><span style="font-size: 10pt; font-family: SimSun;">文件中的</span><span style="font-size: 10pt; font-family: SimSun;">path</span><span style="font-size: 10pt; font-family: SimSun;">参数都将生效。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">6. </span><span style="font-size: 10pt; font-family: SimSun;">插件目录可以使用相对路径(<span style="color: rgb(67, 40, 255);">强烈建议！！因为你的eclipse文件极有可能被拷来拷去</span>)。</span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">&nbsp;&nbsp;&nbsp; <span style="color: red;"><span style="font-size: 10pt; font-family: SimSun;"><span style="color: rgb(6, 0, 0);">这样对应的的link文件中的内容就可以改成</span></span>path=.//myplugins//<span style="font-size: 10pt; font-family: SimSun;">Lomboz3.0.1</span></span></span></p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">7.&nbsp;</span><span style="font-size: 10pt; font-family: SimSun;">可以在</span><span style="font-size: 10pt; font-family: SimSun;">links</span><span style="font-size: 10pt; font-family: SimSun;">目录中建立一个子目录，转移暂时不用的插件到此子目录中，加快</span><span style="font-size: 10pt; font-family: SimSun;">eclipse</span><span style="font-size: 10pt; font-family: SimSun;">启动。</span>&nbsp;</p>
<p style="margin: 0mm 0mm 0.0001pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: SimSun;">8. </span><span style="font-size: 10pt; font-family: SimSun;">如果安装后看不到插件，把<span>eclipse
</span>目录下的configuration目录删除，重启即可。或者添加eclipse启动参数-clean。</span></p>
<img src ="http://www.blogjava.net/unilobster/aggbug/292058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-08-21 10:17 <a href="http://www.blogjava.net/unilobster/articles/292058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手工制作jar2exe方法</title><link>http://www.blogjava.net/unilobster/articles/291978.html</link><dc:creator>游雯</dc:creator><author>游雯</author><pubDate>Thu, 20 Aug 2009 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/unilobster/articles/291978.html</guid><wfw:comment>http://www.blogjava.net/unilobster/comments/291978.html</wfw:comment><comments>http://www.blogjava.net/unilobster/articles/291978.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/unilobster/comments/commentRss/291978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/unilobster/services/trackbacks/291978.html</trackback:ping><description><![CDATA[背景：让java程序转成exe可执行文件。网上关于这个问题的介绍已经很多，自己想了个办法，不排除重复做轮子的嫌疑。<br />
<br />
难点：因为是想用控制台console调命令，怎样不让console 的window显示出来访问了google。<br />
<br />
实现：1.制造工程source<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.打包工程到jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.新建yourProj.vbs, yourProj.bat文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.下载ScriptCryptor（此工具用来将可执行vbs文件转成exe文件）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.将yourProj.vbs转成yourProj.exe<br />
<br />
-------------------我是分割线----------------------------------------<br />
1.制造<br />
&nbsp;&nbsp;&nbsp; 没什么好多说的。<br />
<br />
2.打包<br />
&nbsp;&nbsp;&nbsp; 我是用了eclipse的一个打包插件fatjar打包。主要要注意的是要选好main class，就是你程序 的入口。打包成<span style="color: red;">yourProj.jar</span>。 fatjar下载地址：<a title="http://sourceforge.net/projects/fjep/" href="http://sourceforge.net/projects/fjep/">http://sourceforge.net/projects/fjep/</a> 。至于eclipse的插件怎么安装，见另外帖子(<a title="eclipse插件安装" href="http://www.blogjava.net/unilobster/articles/292058.html">eclipse插件安装</a>)。<br />
<br />
3新建<br />
<span style="color: red;">
yourProj.vbs</span><br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">1</span>&nbsp;<span style="color: rgb(0, 0, 0);">Dim&nbsp;objShell<br />
</span><span style="color: rgb(0, 128, 128);">2</span>&nbsp;<span style="color: rgb(0, 0, 0);">set&nbsp;objShell</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">wscript.createObject(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">wscript.shell</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)<br />
</span><span style="color: rgb(0, 128, 128);">3</span>&nbsp;<span style="color: rgb(0, 0, 0);">iReturn</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">objShell.Run(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">cmd.exe&nbsp;/C <span style="color: red;">yourProj.bat</span></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,&nbsp;False)</span></div>
<br />
<span style="color: red;">
yourProj.bat</span><br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">1</span>&nbsp;<span style="color: rgb(0, 0, 0);">@echo&nbsp;off<br />
</span><span style="color: rgb(0, 128, 128);">2</span>&nbsp;<span style="color: rgb(0, 0, 0);">java&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">jar </span><span style="color: red;">yourProj.jar</span></div>
<br />
4下载<br />
&nbsp;&nbsp;&nbsp; 下载ScriptCryptor，最好是注册的，要不然转好的exe文件打开前会弹出一个提醒你注册的小窗口。下载地址：<a title="http://www.abyssmedia.com/downloads/scriptcryptor.exe " href="http://www.abyssmedia.com/downloads/scriptcryptor.exe ">http://www.abyssmedia.com/downloads/scriptcryptor.exe </a>。 注册码自己去找吧，支持正版。<br />
<br />
5转换<br />
&nbsp;&nbsp;&nbsp; 运行ScriptCryptor，选择你的<span style="color: red;">yourProj.vbs</span>，compile，输入你要转成的exe文件的名字<span style="color: red;">yourProj.exe</span>。大功告成。
<img src ="http://www.blogjava.net/unilobster/aggbug/291978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/unilobster/" target="_blank">游雯</a> 2009-08-20 17:30 <a href="http://www.blogjava.net/unilobster/articles/291978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>