﻿<?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-bob-文章分类-exception</title><link>http://www.blogjava.net/keweibo/category/25676.html</link><description>一专  Java 多能  Delphi,Powerbuilder ... </description><language>zh-cn</language><lastBuildDate>Thu, 22 Dec 2011 02:42:04 GMT</lastBuildDate><pubDate>Thu, 22 Dec 2011 02:42:04 GMT</pubDate><ttl>60</ttl><item><title>java.io.CharConversionException: Not an ISO 8859-1 character: xx</title><link>http://www.blogjava.net/keweibo/articles/366938.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 21 Dec 2011 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/366938.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/366938.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/366938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/366938.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/366938.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<p><span color="#ff0000"><br />
这个问题是因为outputstream输出中文字造成的.换成Writer就好了。outputstream是以字节为单位输出字符串的，需要符合那个ISO 8859-1编码</span></p>
<p><span color="#ff0000"></span></p>
<div>
<pre>
<div>response.setContentType("text/html;charset=UTF-8");<br />
//response.getOutputStream().print("中文字");  //这行会出错<br />
response.getWriter().print("中文字");  //换成这个就好了<br />
response.getWriter().close();</div>
</pre>
</div>
<p><br />
</p><img src ="http://www.blogjava.net/keweibo/aggbug/366938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2011-12-21 15:26 <a href="http://www.blogjava.net/keweibo/articles/366938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Microsoft][ODBC   驱动程序管理器]   驱动程序的   SQLAllocHandle   on   SQL_HANDLE_ENV   失败</title><link>http://www.blogjava.net/keweibo/articles/289716.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 04 Aug 2009 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/289716.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/289716.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/289716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/289716.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/289716.html</trackback:ping><description><![CDATA[弄了好久，原來是環境配置問題！<br />
環境變量path值<br />
<strong><span style="color: red;">%JAVA_HOME%\bin;%CATALINA_HOME%\bin;</span><span style="color: red;">D:\oracle\ora92\bin;</span></strong>D:\oracle\isuite\jdk\jre\bin\classic;D:\oracle\isuite\jdk\jre\bin;D:\oracle\isuite\jdk\jre\bin\client;D:\oracle\isuite\jlib;D:\oracle\isuite\bin;D:\oracle\isuite\jre\1.1.8\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem<br />
因為昨天又安裝了一個Oracle客戶端，今天發現ODBC就無法使用了，老是提示&#8220;[Microsoft][ODBC&nbsp;&nbsp; 驱动程序管理器]&nbsp;&nbsp; 驱动程序的&nbsp;&nbsp; SQLAllocHandle&nbsp;&nbsp; on&nbsp;&nbsp; SQL_HANDLE_ENV&nbsp;&nbsp; 失败&#8221;之類的錯誤信息，把紅色部份調到path值的最前面，成功解決問題！<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/289716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2009-08-04 10:28 <a href="http://www.blogjava.net/keweibo/articles/289716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解決在eclipse项目中使用utf-8字符時导出错误</title><link>http://www.blogjava.net/keweibo/articles/288671.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 28 Jul 2009 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/288671.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/288671.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/288671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/288671.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/288671.html</trackback:ping><description><![CDATA[在eclipse项目中使用utf-8字符可能会造成导出时产生错误，程序不能正常运行
<br />
我以前网上找到的办法都不好，解决的办法其实十分简单
<br />
在build.properties文件中加入
<br />
<br />
javacDefaultEncoding.. = UTF-8
<img src ="http://www.blogjava.net/keweibo/aggbug/288671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2009-07-28 09:17 <a href="http://www.blogjava.net/keweibo/articles/288671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>getOutputStream() has already been called for this response</title><link>http://www.blogjava.net/keweibo/articles/287882.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 22 Jul 2009 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/287882.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/287882.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/287882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/287882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/287882.html</trackback:ping><description><![CDATA[<div class="postTitle">
<a id="viewpost1_TitleUrl" class="postTitle2" href="../../honghongw/articles/197893.html"><br />
</a>
</div>
<span style="font-family: Arial;"><span style="font-size: 10pt;">朋友在處理Jsp時, 希望能夠將產生好的excel檔案能夠下載到Client 端<br />
但要將產生好的file利用 SmartUpload 下載時, 發生以下問題<br />
getOutputStream() has already been called for this response<br />
後來找到了解決方法如下:<br />
&lt;範例&gt; <br />
</span></span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">@page&nbsp;contentType</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">text/html;&nbsp;charset=big5</span><span style="color: #000000;">"</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;<br />
@page&nbsp;session</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;errorPage</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">error.jsp</span><span style="color: #000000;">"</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;<br />
@page&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">com.jspsmart.upload.*</span><span style="color: #000000;">"</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;<br />
String&nbsp;ret&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">ret</span><span style="color: #000000;">"</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(ret&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">)&nbsp;{&nbsp;<br />
ret&nbsp;</span><span style="color: #000000;">=</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;java.net.URLDecoder.decode(ret);<br />
ret&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(ret.getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">8859_1</span><span style="color: #000000;">"</span><span style="color: #000000;">),</span><span style="color: #000000;">"</span><span style="color: #000000;">Big5</span><span style="color: #000000;">"</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">);<br />
}<br />
</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;ret&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">;<br />
String&nbsp;file&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.getParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">file</span><span style="color: #000000;">"</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(file&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">)&nbsp;{<br />
file&nbsp;</span><span style="color: #000000;">=</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;java.net.URLDecoder.decode(file);<br />
file&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(file.getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">8859_1</span><span style="color: #000000;">"</span><span style="color: #000000;">),</span><span style="color: #000000;">"</span><span style="color: #000000;">Big5</span><span style="color: #000000;">"</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">);<br />
}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;file&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">;<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;新建一個SmartUpload對象&nbsp;</span></span></span><span style="color: #008000;"><br />
</span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">SmartUpload&nbsp;su1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;SmartUpload();<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;初始化</span></span></span><span style="color: #008000;"><br />
</span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">su1.initialize(pageContext);<br />
</span><span style="color: #008000;">//</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #008000;">&nbsp;設定contentDisposition為null以禁止瀏覽器自動打開文件，<br />
</span><span style="color: #008000;">//</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #008000;">保證點擊鏈接後是下載文件。若不設定，則下載的文件擴展名為&nbsp;<br />
</span><span style="color: #008000;">//</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #008000;">doc時，瀏覽器將自動用word打開它。擴展名為pdf時，&nbsp;<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">瀏覽器將用acrobat打開。</span></span></span><span style="color: #008000;"><br />
</span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">su1.setContentDisposition(</span><span style="color: #0000ff;">null</span></span></span><span style="font-family: Arial;"><span style="font-size: 10pt;"><span style="color: #000000;">);<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;下載文件</span></span></span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><span style="font-family: Arial;"><span style="font-size: 10pt;">su1.downloadFile(file);<br />
</span></span></span></div>
<br />
<span style="font-family: Arial;">問題原因：Tomcat首先執行.jsp,
Tomcat準備好session, out等object。 而在&lt; % ... %
&gt;段中，HttpServerletResponse的getOutputStream()方法已被呼叫。但在JSP規中定義此方法只能被使用一
次，這樣在產生out時會在使用一次, 因此會出錯。<br />
網路上建議方法: 不要使用Jsp, 改使用Servlet就不會有此問題<br />
後來有人回應在最後加入兩行<br />
out.clear(); <br />
out = pageContext.pushBody(); <br />
果然解決了這個問題!!</span>
<img src ="http://www.blogjava.net/keweibo/aggbug/287882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2009-07-22 17:14 <a href="http://www.blogjava.net/keweibo/articles/287882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of XXX</title><link>http://www.blogjava.net/keweibo/articles/186597.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 16 Mar 2008 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/186597.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/186597.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/186597.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/186597.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/186597.html</trackback:ping><description><![CDATA[exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of XXX<br />
&nbsp;&nbsp;&nbsp; （XXX为某个set方法名）<br />
&nbsp;&nbsp;&nbsp;&nbsp; 当查询结果中某列值为null，而持久类中对应的属性为primitive类型时，则会抛出此异常。
<img src ="http://www.blogjava.net/keweibo/aggbug/186597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-03-16 12:41 <a href="http://www.blogjava.net/keweibo/articles/186597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.lang.IllegalAccessError: tried to access method net.sf.ehcache.CacheManager.&lt;init&gt;()V from class org.hibernate.cache.EhCacheProvider</title><link>http://www.blogjava.net/keweibo/articles/175619.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 16 Jan 2008 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/175619.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/175619.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/175619.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/175619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/175619.html</trackback:ping><description><![CDATA[今天把项目从Tomcat下转移到JBOSS了,启动JBOSS服务器之后出了,控制台输出了<br />
java.lang.IllegalAccessError: tried to access method net.sf.ehcache.CacheManager.&lt;init&gt;()V from class org.hibernate.cache.EhCacheProvider<br />
此类错误错误信息,上网上查了一下.大概了解了下,原来是JAR文件版本问题,<br />
<div id="post_message_65747">The latest hibernate uses ehcache 1.2 - you seem to be using an older version (1.1 maybe). Upgrade your ehcache library and report back if you still have problems.</div>
<!-- / message --><!-- sig --><br />
原来项目中使用了ehcache-1.1.jar文件,<br />
把它换成<span style="color: #3366ff"><strong>ehcache-1.2.3.jar</strong></span>文件后,<br />
重新启动JBOSS服务器,问题解决~~~~
 <img src ="http://www.blogjava.net/keweibo/aggbug/175619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-16 10:36 <a href="http://www.blogjava.net/keweibo/articles/175619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j:ERROR A "org.jboss.logging.util.OnlyOnceErrorHandler" object is not assignable to a "org.apache.log4j.spi.ErrorHandler" variable的异常</title><link>http://www.blogjava.net/keweibo/articles/175618.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 16 Jan 2008 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/175618.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/175618.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/175618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/175618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/175618.html</trackback:ping><description><![CDATA[<p><font size="3">log4j是一个很好的开源的日志项目，下面就我在实际中使用的一些情况作一个小结（我所写的是以spring为框架的运用，之所以要提到这点，是因为在spring中专门有处理log4j的地方，而我也用到了这些地方）。</font></p>
<p><font size="3">&nbsp;在使用的第一步你要明白你所发布的web项目所使用的服务器，因为不同的服务器对于使用log4j是有些不同的，我在实际使用中主要是用tomcat和jboss两类，对于tomcat,它本身是没有配置log4j的，所以使用起来和常规的一样；而在jboss中它是本身配置了log4j的，所以有时候我们在看项目代码时，其整个项目并没有log4j的配置文件，而在一些类中仍然定义了Logger,例如static Logger log = org.apache.log4j.Logger.getLogger(UserDaoImple.class);，这就表明开发者打算使用jboss默认的log4j的配置，我们可以在jboss下的对应的log目录下的server.log中看到日志，jboss本身的log4j的配置是将debug,info级的日志写在server.log中，而像error等级别比较高的日志打印到控制台上，而写到server.log中的日志比较多，并不方便查看。于是我们想到使用自己的log4j配置写到某个具体的文件中（注意文件要先建立，才能忘里面写东西，log4j自己不能建立文件），但这里因为jboss有它自己的log4j配置，所以如果我们配置的log4j包含Console的Appender时，就会出错，错误类似于</font></p>
<p><font size="3"><font color="#ff0000">ERROR: invalid console appender config detected, console stream is looping.</font><br />
解决方法一是不用Console的Appender,或者改jboss的配置文件，在jboss-service.xml文件里,把<br />
&lt;mbean code="org.jboss.logging.Log4jService" name="jboss.system:type=Log4jService,service=Logging"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;attribute name="ConfigurationURL"&gt;resource:log4j.xml&lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>&lt;attribute name="CatchSystemOut"&gt;false&lt;/attribute&gt;</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;attribute name="Log4jQuietMode"&gt;true&lt;/attribute&gt;<br />
&lt;/mbean&gt;。</font></p>
<p><font size="3">我建议不用Console的Appender<img alt="" src="http://blog.csdn.net/fckeditor/editor/images/smiley/msn/teeth_smile.gif" />，当然这是对jboss3.2.x是这样，<strong>对于jboss4.0.x如果我们要用自己的log4j配置照上述改还是会有问题，会有类似于</strong></font><font color="#ff0000"><font size="3"><strong>log4j:ERROR A "org.jboss.logging.util.OnlyOnceErrorHandler" object is not assignable to a "org.apache.log4j.spi.ErrorHandler" variable</strong></font><font color="#000000" size="3"><strong>的异常，解决方法是把/server/default/jbossweb-tomcat55.sar/META-INF/jboss-service.xml 中的以下两个熟悉改成true<br />
&lt;attribute name="Java2ClassLoadingCompliance"&gt;<span style="color: red">true</span>&lt;/attribute&gt; <br />
&lt;attribute name="UseJBossWebLoader"&gt;<span style="color: red">true</span>&lt;/attribute&gt; </strong></font></font></p>
<p><font color="#ff0000"><font color="#000000" size="3"><strong>以上就是使用jboss服务器可能出现的问题，解决了这些再来使用log4j就比较简单了。</strong></font></font></p>
<p><font color="#ff0000"><font color="#000000" size="3">下面说说对于采用了spring框架的项目如何使用log4j,在spring中使用log4j，有些方便的地方，</font></font></p>
<p><font color="#ff0000"><font color="#000000" size="3">1. 动态的改变记录级别和策略，即修改log4j.properties,不需要重启Web应用，这需要在web.xml中设置一下。<br />
2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。 <br />
3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ，而不是Class-Path。</font></font></p>
<p><font color="#ff0000"><font color="#000000" size="3">首先我们在web.xml中需要设定一下</font></font></p>
<p><font color="#ff0000"><font color="#000000" size="3">&lt;context-param&gt; <br />
&lt;param-name&gt;log4jConfigLocation&lt;/param-name&gt; <br />
&lt;param-value&gt;WEB-INF/log4j.properties&lt;/param-value&gt; <br />
&lt;/context-param&gt; <br />
<br />
&lt;context-param&gt; <br />
&lt;param-name&gt;log4jRefreshInterval&lt;/param-name&gt; <br />
&lt;param-value&gt;60000&lt;/param-value&gt; <br />
&lt;/context-param&gt; <br />
<br />
&lt;listener&gt; <br />
&lt;listener-class&gt;org.springframework.web.util.Log4jConfigListener&lt;/listener-class&gt; <br />
&lt;/listener&gt;&nbsp;<br />
其中第二部分就是能够动态修改log4j.properties的关键，容器会每60秒扫描log4j的配置文件&nbsp;。</font></font><font color="#ff0000"><font color="#000000" size="3">对于log4j的配置文件如何写，这就不多说了，大家可以去google，有一点就是我们如果用RollingFileAppender或者FileAppender时，可以通过${webapp.root}来定位到服务器的发布的该项目下，这是spring把web目录的路径压入到了webapp.root的系统变量。然后，在log4j.properties 里就可以这样定义logfile位置 <br />
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log <br />
如果有多个web应用，怕webapp.root变量重复，可以在context-param里定义webAppRootKey。</font></font></p>
<p><font color="#ff0000"><font color="#000000" size="3"><font size="3">当我们定义完log4j.properties后，剩下的就是在需要记录的class中new 出Logger了<img alt="" src="http://blog.csdn.net/fckeditor/editor/images/smiley/msn/teeth_smile.gif" /><br />
<br />
</font></font></font></p>
<br />
<br />
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1067141</p>
 <img src ="http://www.blogjava.net/keweibo/aggbug/175618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-16 10:30 <a href="http://www.blogjava.net/keweibo/articles/175618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2中使用displayTags的问题(ParametersInterceptor - [setParameters]: Unexpected Exception)</title><link>http://www.blogjava.net/keweibo/articles/161226.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 17 Nov 2007 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/161226.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/161226.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/161226.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/161226.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/161226.html</trackback:ping><description><![CDATA[今天在struts2中使用了displayTags,没想到控制台却输出以下错误信息:<br />
<span style="color: red;">ERROR - ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'd-49653-p' on 'class dgut.ke.actions.SubjectAction: Error setting expression 'd-49653-p' with value '[Ljava.lang.String;@d73256'<br />
<span style="color: #060000;"><br />
在网上的搜了一下,在一些中文网页上几乎都找不到相关的信息,结果在一个英语网站上看到了以下信息:<br />
</span></span><br />
I use struts2.0.9 and displaytag,xwork-2.0.4.jar,when I click next page of
<br />
displaytag,it will raise flowing warning:
<br />
<br />
Warn: ParametersInterceptor - [setParameters]: Unexpected Exception caught
<br />
setting 'd-1332698-p' on 'class Test.TestAction: Error setting expression
<br />
'd-1332698-p' with value '[Ljava.lang.String;@14bf534'
<br />
RE:<br />
<span style="color: #ff0000;">It's a warning that occurs because you're using displaytags.
</span><br />
<br />
Don't worry about it, it won't hurt you, and messing with it will just make
<br />
bad things happen (you know the kind of thing, long nights trying to work
<br />
out things like why table sorting isn't working, why data isn't being
<br />
displayed, and why the world is so unfair).
<br />
<br />
In the words of a nice policeman; "Move along, there's nothing to see here"
<br />
<br />
-----Original Message-----
<br />
From: red phoenix [mailto:<a href="http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=12905032&amp;i=0" target="_top" rel="nofollow">rodphoenix@...</a>]
<br />
Sent: 26 September 2007 16:29
<br />
To: Struts Users Mailing List
<br />
Subject: Error: ParametersInterceptor - [setParameters]
<br />
<br />
<br />
I use struts2.0.9 and displaytag,xwork-2.0.4.jar,when I click next page of
<br />
displaytag,it will raise flowing warning:
<br />
<br />
Warn: ParametersInterceptor - [setParameters]: Unexpected Exception caught
<br />
setting 'd-1332698-p' on 'class Test.TestAction: Error setting expression
<br />
'd-1332698-p' with value '[Ljava.lang.String;@14bf534'
<br />
<br />
Why raise above waring? <span style="color: #ff0000;">How to solve it</span>?
<br />
Thanks!
<br />
Add the following line to your struts.xml file.
<br />
d-.*-p
<br />
<br />
Example:
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-stack name="creditDefaultStack"&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="creditException" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="alias" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="servlet-config" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="prepare" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="i18n" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="chain" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="debugging" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="profiling" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="scoped-model-driven" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="model-driven" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="checkbox" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="static-params" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="params"&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dojo\..*
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d-.*-p		&lt;/interceptor-ref&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="conversionError" /&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="validation"&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<br />
&nbsp;		cancel,execute,delete,edit,list,start
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/interceptor-ref&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;interceptor-ref name="workflow"&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; input,back,cancel,browse
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/interceptor-ref&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/interceptor-stack&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/interceptors&gt;
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;default-interceptor-ref name="creditDefaultStack" /&gt;
<br />
照上面的说法去做,由于本人能力有限,还是未能解决.去下个高点的版本试试看,期待能解决!<br />
<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/161226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-11-17 15:21 <a href="http://www.blogjava.net/keweibo/articles/161226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>申明式事务和OpenSessionInView </title><link>http://www.blogjava.net/keweibo/articles/161067.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 16 Nov 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/161067.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/161067.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/161067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/161067.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/161067.html</trackback:ping><description><![CDATA[<p><span style="color: red">Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.</span><br />
</p>
今天在做事务测试的时候,控制台输出了以上的错误信息,在网上找了一下,原来是我在web.xml<br />
文件中设置了<span style="color: red">OpenSessionInView .&nbsp;<span style="color: #000000">&nbsp;将设置去掉就可以了.<br />
&lt;!-- OpenSessionInView --&gt;<br />
&nbsp; &lt;filter&gt;<br />
&nbsp; &nbsp;&lt;filter-name&gt;OpenSessionInViewFilter&lt;/filter-name&gt;<br />
&nbsp; &nbsp;&lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt;<br />
&nbsp; &lt;/filter&gt;<br />
&nbsp; &lt;filter-mapping&gt;<br />
&nbsp; &nbsp;&lt;filter-name&gt;OpenSessionInViewFilter&lt;/filter-name&gt;<br />
&nbsp; &nbsp;&lt;url-pattern&gt;*.action&lt;/url-pattern&gt;<br />
&nbsp; &lt;/filter-mapping&gt;<br />
或者加上事务设置<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;beans<br />
&nbsp;xmlns="http://www.springframework.org/schema/beans"<br />
&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;xmlns:aop="http://www.springframework.org/schema/aop"<br />
&nbsp;&nbsp;&nbsp; xmlns:tx="http://www.springframework.org/schema/tx"<br />
&nbsp;xsi:schemaLocation="<br />
&nbsp;http://www.springframework.org/schema/beans <br />
&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd<br />
&nbsp;http://www.springframework.org/schema/tx<br />
&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/tx/spring-tx-2.0.xsd<br />
&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/aop<br />
&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"<br />
&nbsp;&gt;<br />
&nbsp;&lt;bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&gt;<br />
&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&nbsp;<br />
&nbsp;&lt;tx:advice id="txAdvice" transaction-manager="transactionManager"&gt;<br />
&nbsp;&nbsp;&lt;tx:attributes&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;tx:method name="create*" propagation="REQUIRED"/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;tx:method name="update*" propagation="REQUIRED"/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;tx:method name="delete*" propagation="REQUIRED"/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;tx:method name="find*" propagation="REQUIRED" read-only="true"/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;tx:method name="*" read-only="true"/&gt;<br />
&nbsp;&nbsp;&lt;/tx:attributes&gt;<br />
&nbsp;&lt;/tx:advice&gt;<br />
&nbsp;<br />
&nbsp;&lt;aop:config&gt;<br />
&nbsp;&nbsp;&lt;aop:pointcut id="daoOperation" expression="execution(* dgut.ke.dao.*.*(..))"/&gt;<br />
&nbsp;&nbsp;&lt;aop:advisor advice-ref="txAdvice" pointcut-ref="daoOperation"/&gt;<br />
&nbsp;&lt;/aop:config&gt;<br />
&nbsp;<br />
&lt;/beans&gt;<br />
<p>网上又说<br />
尽管Open Session In View看起来还不错，其实副作用不少。看回上面OpenSessionInViewFilter的doFilterInternal方法代码，这个方法实际上是被父类的doFilter调用的，因此，我们可以大约了解的OpenSessionInViewFilter调用流程: request(请求)-&gt;open session并开始transaction-&gt;controller-&gt;View(Jsp)-&gt;结束transaction并close session. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 一切看起来很正确，尤其是在本地开发测试的时候没出现问题，但试想下如果流程中的某一步被阻塞的话，那在这期间connection就一直被占用而不释放。最有可能被阻塞的就是在写Jsp这步，一方面可能是页面内容大，response.write的时间长，另一方面可能是网速慢，服务器与用户间传输时间久。当大量这样的情况出现时，就有连接池连接不足，造成页面假死现象。</p>
<p>Open Session In View是个双刃剑，放在公网上内容多流量大的网站请慎用。</p>
<br />
</span></span>
<img src ="http://www.blogjava.net/keweibo/aggbug/161067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-11-16 16:51 <a href="http://www.blogjava.net/keweibo/articles/161067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>表字段使用了关键字导致数据插入发生异常</title><link>http://www.blogjava.net/keweibo/articles/160270.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 13 Nov 2007 09:07:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/160270.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/160270.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/160270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/160270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/160270.html</trackback:ping><description><![CDATA[Hibernate: insert into book (catalogId, publishId, subjectId, bookNO, bookName, synopsis, price, discount, publishTime, picture, hit, show, updateTime, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)<br />
WARN - SQL Error: 1064, SQLState: 42000<br />
ERROR - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'show, updateTime, id) values ('2c9ab2d51637c2ca0116380396f80009', '2c9ab2d516382' at line 1<br />
ERROR - Could not synchronize database state with session<br />
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update<br />
&nbsp;&nbsp;&nbsp; at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65)<br />
&nbsp;&nbsp;&nbsp; at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)<br />
&nbsp;&nbsp;&nbsp; at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)<br />
&nbsp;&nbsp;&nbsp; at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)<br />
&nbsp;&nbsp;&nbsp; at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)<br />
&nbsp;&nbsp;&nbsp; ... 144 more<br />
ERROR - Servlet.service() for servlet default threw exception<br />
java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'show, updateTime, id) values ('2c9ab2d51637c2ca0116380396f80009', '2c9ab2d516382' at line 1<br />
&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1103)<br />
&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:853)<br />
&nbsp;&nbsp;&nbsp; at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)<br />
&nbsp;&nbsp; ........<br />
&nbsp;&nbsp;&nbsp; at java.lang.Thread.run(Thread.java:595)<br />
<br />
<strong><span style="color: red;">原因:show 在mysql数据中为关键字</span></strong><br />
<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/160270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-11-13 17:07 <a href="http://www.blogjava.net/keweibo/articles/160270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>document.getelementbyid has no properties</title><link>http://www.blogjava.net/keweibo/articles/156247.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 26 Oct 2007 13:04:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/156247.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/156247.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/156247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/156247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/156247.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/keweibo/articles/156247.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/156247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-26 21:04 <a href="http://www.blogjava.net/keweibo/articles/156247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts + spring + hibernate整合事务配置的问题(请教高手)</title><link>http://www.blogjava.net/keweibo/articles/150830.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 07 Oct 2007 05:36:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/150830.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/150830.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/150830.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/150830.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/150830.html</trackback:ping><description><![CDATA[<p>一个关于struts + spring + hibernate整合事务配置的问题(请教高手)<br />
... ...<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;beans<br />
&nbsp;xmlns="http://www.springframework.org/schema/beans"<br />
&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"&gt;</p>
<p>&nbsp;&lt;bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&gt;<br />
&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&nbsp;<br />
&nbsp;&lt;bean id="txProxyTemplate" abstract="true"<br />
&nbsp;&nbsp;&nbsp; class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"&gt;<br />
&nbsp;&nbsp;&lt;property name="transactionManager" ref="transactionManager"&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&lt;property name="transactionAttributes"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;props&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="create*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="update*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="delete*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="find*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/props&gt;<br />
&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&nbsp;<br />
&nbsp;&lt;bean id="userDAO" class="dgut.ke.dao.impl.UserDAO"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&lt;bean id="userService"&nbsp; parent="txProxyTemplate"&nbsp;&nbsp;class="dgut.ke.service.impl.UserService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="userDAO" ref="userDAO" /&gt;<br />
&lt;/bean&gt;<br />
... ....<br />
启动Tomecat时出了错.之前没有添加事务处理时.上面的代码是可以正常运行的.添加事务之后却出现以下错误<br />
<span style="color: red">ERROR - Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener<br />
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService' defined in ServletContext resource [/WEB-INF/applicationContext-hibernate.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManager' of bean class [dgut.ke.service.impl.UserService]: Bean property 'transactionManager' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?<br />
Caused by: <br />
org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManager' of bean class [dgut.ke.service.impl.UserService]: Bean property 'transactionManager' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?<br />
</span>解决办法<br />
把<br />
&lt;bean id="userService"&nbsp; parent="txProxyTemplate"&nbsp;&nbsp;class="dgut.ke.service.impl.UserService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="userDAO" ref="userDAO" /&gt;<br />
&lt;/bean&gt;<br />
换成以下代码就可以正常运行了<br />
<span style="color: red">&nbsp;&lt;bean id="userService" parent="txProxyTemplate"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="target"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean class="dgut.ke.service.impl.UserService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="userDAO" ref="userDAO"&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/bean&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;</span></p>
请教一下为什么会出现这种情况?<br />
哪位高手解释下,谢谢!!! 
<img src ="http://www.blogjava.net/keweibo/aggbug/150830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-07 13:36 <a href="http://www.blogjava.net/keweibo/articles/150830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 interceptor 问题(请教高手)</title><link>http://www.blogjava.net/keweibo/articles/150747.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 06 Oct 2007 13:54:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/150747.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/150747.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/150747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/150747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/150747.html</trackback:ping><description><![CDATA[<p>今天写了一个自定义拦截器.却遇到了以下问题</p>
<p>package dgut.ke.interceptors;</p>
<p>import java.util.ArrayList;<br />
import java.util.List;</p>
<p>import javax.servlet.http.HttpServletRequest;</p>
<p>import org.apache.struts2.ServletActionContext;</p>
<p>import com.opensymphony.xwork2.Action;<br />
import com.opensymphony.xwork2.ActionContext;<br />
import com.opensymphony.xwork2.ActionInvocation;<br />
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;</p>
<p>import dgut.ke.model.Catalog;<br />
import dgut.ke.model.Publish;<br />
import dgut.ke.model.Subject;<br />
import dgut.ke.service.ICatalogService;<br />
import dgut.ke.service.IPublishService;<br />
import dgut.ke.service.ISubjectService;</p>
<p>public class AddBookInterceptor extends MethodFilterInterceptor {</p>
<p>&nbsp;/**<br />
&nbsp; * <br />
&nbsp; */<br />
&nbsp;private static final long serialVersionUID = 1135497226250835266L;</p>
<p>&nbsp;private ISubjectService subjectService ;<br />
&nbsp;private ICatalogService catalogService ;<br />
&nbsp;private IPublishService publishService ;</p>
<p>&nbsp;public ICatalogService getCatalogService() {<br />
&nbsp;&nbsp;return catalogService;<br />
&nbsp;}</p>
<p>&nbsp;public IPublishService getPublishService() {<br />
&nbsp;&nbsp;return publishService;<br />
&nbsp;}</p>
<p>&nbsp;public ISubjectService getSubjectService() {<br />
&nbsp;&nbsp;return subjectService;<br />
&nbsp;}</p>
<p>&nbsp;public void setCatalogService(ICatalogService catalogService) {<br />
&nbsp;&nbsp;this.catalogService = catalogService;<br />
&nbsp;}</p>
<p>&nbsp;public void setPublishService(IPublishService publishService) {<br />
&nbsp;&nbsp;this.publishService = publishService;<br />
&nbsp;}</p>
<p>&nbsp;public void setSubjectService(ISubjectService subjectService) {<br />
&nbsp;&nbsp;this.subjectService = subjectService;<br />
&nbsp;}</p>
<p>&nbsp;@Override<br />
&nbsp;protected String doIntercept(ActionInvocation invoation) throws Exception {<br />
&nbsp;&nbsp;// TODO 自动生成方法存根<br />
&nbsp;&nbsp;System.out.println("-------- 拦截器开始执行 ----------");<br />
&nbsp;&nbsp;List&lt;Subject&gt; subject_list = (ArrayList&lt;Subject&gt;)subjectService.findAll();<br />
&nbsp;&nbsp;List&lt;Catalog&gt; catalog_list = (ArrayList&lt;Catalog&gt;)catalogService.findAll();<br />
&nbsp;&nbsp;List&lt;Publish&gt; pubish_list =&nbsp; (ArrayList&lt;Publish&gt;)publishService.findAll();<br />
<br />
&nbsp;&nbsp;//ActionContext act = ActionContext.getContext() ;<br />
&nbsp;&nbsp;ActionContext act = invocation.getInvocationContext() ;<br />
&nbsp;&nbsp;HttpServletRequest request = (HttpServletRequest) act.get(ServletActionContext.HTTP_REQUEST) ;<br />
&nbsp;&nbsp;request.setAttribute("subject_list", subject_list) ;<br />
&nbsp;&nbsp;request.setAttribute("catalog_list", catalog_list) ;<br />
&nbsp;&nbsp;request.setAttribute("publish_list", pubish_list) ;<br />
&nbsp;&nbsp;System.out.println("-------- 拦截器执行结束 ----------");<br />
&nbsp;&nbsp;return Action.INPUT;<br />
&nbsp;}</p>
<p>}<br />
为了实现request.setAttribute(String str, Object obj) ;.最先是让上面的类实现<a title="interface in org.apache.struts2.interceptor" href="http://struts.apache.org/2.0.9/struts2-core/apidocs/org/apache/struts2/interceptor/ServletRequestAware.html" target="classFrame"><em>ServletRequestAware</em></a> 接口.<br />
但是在运行的时候却出现了空指针异常。后来改成以上的代码就可以正常运行，但是还是<br />
不太明白<br />
曾经在一本书上看到一段话：构建interceptor最重要的原则：<span style="color: red">interceptor必须是无状态的，并且不能<br />
够使用任何ActionInvocation提供范围以外的API <br />
</span></p>
   <img src ="http://www.blogjava.net/keweibo/aggbug/150747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-06 21:54 <a href="http://www.blogjava.net/keweibo/articles/150747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一篇不错的讲解Java异常的文章(转载）----感觉很不错，读了以后很有启发 </title><link>http://www.blogjava.net/keweibo/articles/148895.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 27 Sep 2007 13:58:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/148895.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/148895.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/148895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/148895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/148895.html</trackback:ping><description><![CDATA[<div class="postTitle"><span id="ArticleContent1_ArticleContent1_lblContent">&nbsp;</div>
<div class="postText">
<p><font size="2">六种异常处理的陋习</font></p>
<p><font size="2">你觉得自己是一个Java专家吗？是否肯定自己已经全面掌握了Java的异常处理机制？在下面这段代码中，你能够迅速找出异常处理的六个问题吗？ <br />
<br />
</font></p>
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    <tbody>
        <tr>
            <td><font size="2">1 OutputStreamWriter out = ... <br />
            2 java.sql.Connection conn = ... <br />
            3 try { // ⑸ <br />
            4 　Statement stat = conn.createStatement(); <br />
            5 　ResultSet rs = stat.executeQuery( <br />
            6 　　"select uid, name from user"); <br />
            7 　while (rs.next()) <br />
            8 　{ <br />
            9 　　out.println("ID：" + rs.getString("uid") // ⑹ <br />
            10 　　　"，姓名：" + rs.getString("name")); <br />
            11 　} <br />
            12 　conn.close(); // ⑶ <br />
            13 　out.close(); <br />
            14 } <br />
            15 catch(Exception ex) // ⑵ <br />
            16 { <br />
            17 　ex.printStackTrace(); //⑴，⑷ <br />
            18 }</font></td>
        </tr>
    </tbody>
</table>
<p><br />
<font size="2">　　作为一个Java程序员，你至少应该能够找出两个问题。但是，如果你不能找出全部六个问题，请继续阅读本文。 <br />
<br />
　　本文讨论的不是Java异常处理的一般性原则，因为这些原则已经被大多数人熟知。我们要做的是分析各种可称为&#8220;反例&#8221;（anti-pattern）的违背优秀编码规范的常见坏习惯，帮助读者熟悉这些典型的反面例子，从而能够在实际工作中敏锐地察觉和避免这些问题。 <br />
<br />
　　<strong>反例之一：丢弃异常 </strong><br />
<br />
　　代码：15行-18行。 <br />
<br />
　　这段代码捕获了异常却不作任何处理，可以算得上Java编程中的杀手。从问题出现的频繁程度和祸害程度来看，它也许可以和C/C++程序的一个恶名远播的问题相提并论??不检查缓冲区是否已满。如果你看到了这种丢弃（而不是抛出）异常的情况，可以百分之九十九地肯定代码存在问题（在极少数情况下，这段代码有存在的理由，但最好加上完整的注释，以免引起别人误解）。 <br />
<br />
　　这段代码的错误在于，异常（几乎）总是意味着某些事情不对劲了，或者说至少发生了某些不寻常的事情，我们不应该对程序发出的求救信号保持沉默和无动于衷。调用一下printStackTrace算不上&#8220;处理异常&#8221;。不错，调用printStackTrace对调试程序有帮助，但程序调试阶段结束之后，printStackTrace就不应再在异常处理模块中担负主要责任了。 <br />
<br />
　　丢弃异常的情形非常普遍。打开JDK的ThreadDeath类的文档，可以看到下面这段说明：&#8220;特别地，虽然出现ThreadDeath是一种&#8216;正常的情形&#8217;，但ThreadDeath类是Error而不是Exception的子类，因为许多应用会捕获所有的Exception然后丢弃它不再理睬。&#8221;这段话的意思是，虽然ThreadDeath代表的是一种普通的问题，但鉴于许多应用会试图捕获所有异常然后不予以适当的处理，所以JDK把ThreadDeath定义成了Error的子类，因为Error类代表的是一般的应用不应该去捕获的严重问题。可见，丢弃异常这一坏习惯是如此常见，它甚至已经影响到了Java本身的设计。 <br />
<br />
　　那么，应该怎样改正呢？主要有四个选择： <br />
<br />
　　1、处理异常。针对该异常采取一些行动，例如修正问题、提醒某个人或进行其他一些处理，要根据具体的情形确定应该采取的动作。再次说明，调用printStackTrace算不上已经&#8220;处理好了异常&#8221;。 <br />
<br />
　　2、重新抛出异常。处理异常的代码在分析异常之后，认为自己不能处理它，重新抛出异常也不失为一种选择。 <br />
<br />
　　3、把该异常转换成另一种异常。大多数情况下，这是指把一个低级的异常转换成应用级的异常（其含义更容易被用户了解的异常）。 <br />
<br />
　　4、不要捕获异常。 <br />
<br />
　　结论一：既然捕获了异常，就要对它进行适当的处理。不要捕获异常之后又把它丢弃，不予理睬。 <br />
<br />
　　<strong>反例之二：不指定具体的异常 </strong><br />
<br />
　　代码：15行。 <br />
<br />
　　许多时候人们会被这样一种&#8220;美妙的&#8221;想法吸引：用一个catch语句捕获所有的异常。最常见的情形就是使用catch(Exception ex)语句。但实际上，在绝大多数情况下，这种做法不值得提倡。为什么呢？ <br />
<br />
　　要理解其原因，我们必须回顾一下catch语句的用途。catch语句表示我们预期会出现某种异常，而且希望能够处理该异常。异常类的作用就是告诉Java编译器我们想要处理的是哪一种异常。由于绝大多数异常都直接或间接从java.lang.Exception派生，catch(Exception ex)就相当于说我们想要处理几乎所有的异常。 <br />
<br />
　　再来看看前面的代码例子。我们真正想要捕获的异常是什么呢？最明显的一个是SQLException，这是JDBC操作中常见的异常。另一个可能的异常是IOException，因为它要操作OutputStreamWriter。显然，在同一个catch块中处理这两种截然不同的异常是不合适的。如果用两个catch块分别捕获SQLException和IOException就要好多了。这就是说，catch语句应当尽量指定具体的异常类型，而不应该指定涵盖范围太广的Exception类。 <br />
<br />
　　另一方面，除了这两个特定的异常，还有其他许多异常也可能出现。例如，如果由于某种原因，executeQuery返回了null，该怎么办？答案是让它们继续抛出，即不必捕获也不必处理。实际上，我们不能也不应该去捕获可能出现的所有异常，程序的其他地方还有捕获异常的机会??直至最后由JVM处理。 <br />
<br />
　　结论二：在catch语句中尽可能指定具体的异常类型，必要时使用多个catch。不要试图处理所有可能出现的异常。 <br />
<br />
　　<strong>反例之三：占用资源不释放 </strong><br />
<br />
　　代码：3行-14行。 <br />
<br />
　　异常改变了程序正常的执行流程。这个道理虽然简单，却常常被人们忽视。如果程序用到了文件、Socket、JDBC连接之类的资源，即使遇到了异常，也要正确释放占用的资源。为此，Java提供了一个简化这类操作的关键词finally。 <br />
<br />
　　finally是样好东西：不管是否出现了异常，Finally保证在try/catch/finally块结束之前，执行清理任务的代码总是有机会执行。遗憾的是有些人却不习惯使用finally。 <br />
<br />
　　当然，编写finally块应当多加小心，特别是要注意在finally块之内抛出的异常??这是执行清理任务的最后机会，尽量不要再有难以处理的错误。 <br />
<br />
　　结论三：保证所有资源都被正确释放。充分运用finally关键词。</font></p>
<p><font size="2"><strong>反例之四：不说明异常的详细信息 <br />
<br />
</strong>　　代码：3行-18行。 <br />
<br />
　　仔细观察这段代码：如果循环内部出现了异常，会发生什么事情？我们可以得到足够的信息判断循环内部出错的原因吗？不能。我们只能知道当前正在处理的类发生了某种错误，但却不能获得任何信息判断导致当前错误的原因。 <br />
<br />
　　printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程，但只提供了一些最基本的信息，未能说明实际导致错误的原因，同时也不易解读。 <br />
<br />
　　因此，在出现异常时，最好能够提供一些文字信息，例如当前正在执行的类、方法和其他状态信息，包括以一种更适合阅读的方式整理和组织printStackTrace提供的信息。 <br />
<br />
　　结论四：在异常处理模块中提供适量的错误原因信息，组织错误信息使其易于理解和阅读。 <br />
<br />
　　<strong>反例之五：过于庞大的try块 </strong><br />
<br />
　　代码：3行-14行。 <br />
<br />
　　经常可以看到有人把大量的代码放入单个try块，实际上这不是好习惯。这种现象之所以常见，原因就在于有些人图省事，不愿花时间分析一大块代码中哪几行代码会抛出异常、异常的具体类型是什么。把大量的语句装入单个巨大的try块就象是出门旅游时把所有日常用品塞入一个大箱子，虽然东西是带上了，但要找出来可不容易。 <br />
<br />
　　一些新手常常把大量的代码放入单个try块，然后再在catch语句中声明Exception，而不是分离各个可能出现异常的段落并分别捕获其异常。这种做法为分析程序抛出异常的原因带来了困难，因为一大段代码中有太多的地方可能抛出Exception。 <br />
<br />
　　结论五：尽量减小try块的体积。 <br />
<br />
　　<strong>反例之六：输出数据不完整</strong> <br />
<br />
　　代码：7行-11行。 <br />
<br />
　　不完整的数据是Java程序的隐形杀手。仔细观察这段代码，考虑一下如果循环的中间抛出了异常，会发生什么事情。循环的执行当然是要被打断的，其次，catch块会执行??就这些，再也没有其他动作了。已经输出的数据怎么办？使用这些数据的人或设备将收到一份不完整的（因而也是错误的）数据，却得不到任何有关这份数据是否完整的提示。对于有些系统来说，数据不完整可能比系统停止运行带来更大的损失。 <br />
<br />
　　较为理想的处置办法是向输出设备写一些信息，声明数据的不完整性；另一种可能有效的办法是，先缓冲要输出的数据，准备好全部数据之后再一次性输出。 <br />
<br />
　　结论六：全面考虑可能出现的异常以及这些异常对执行流程的影响。 <br />
<br />
　　<strong>改写后的代码</strong> <br />
<br />
　　根据上面的讨论，下面给出改写后的代码。也许有人会说它稍微有点?嗦，但是它有了比较完备的异常处理机制。 <br />
<br />
</font>
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    <tbody>
        <tr>
            <td><font size="2">OutputStreamWriter out = ... <br />
            java.sql.Connection conn = ... <br />
            try { <br />
            　Statement stat = conn.createStatement(); <br />
            　ResultSet rs = stat.executeQuery( <br />
            　　"select uid, name from user"); <br />
            　while (rs.next()) <br />
            　{ <br />
            　　out.println("ID：" + rs.getString("uid") + "，姓名: " + rs.getString("name")); <br />
            　} <br />
            } <br />
            catch(SQLException sqlex) <br />
            { <br />
            　out.println("警告：数据不完整"); <br />
            　throw new ApplicationException("读取数据时出现SQL错误", sqlex); <br />
            } <br />
            catch(IOException ioex) <br />
            { <br />
            　throw new ApplicationException("写入数据时出现IO错误", ioex); <br />
            } <br />
            finally <br />
            { <br />
            　if (conn != null) { <br />
            　　try { <br />
            　　　conn.close(); <br />
            　　} <br />
            　　catch(SQLException sqlex2) <br />
            　　{ <br />
            　　　System.err(this.getClass().getName() + ".mymethod - 不能关闭数据库连接: " + sqlex2.toString()); <br />
            　　} <br />
            　} <br />
            <br />
            　if (out != null) { <br />
            　　try { <br />
            　　　out.close(); <br />
            　　} <br />
            　　catch(IOException ioex2) <br />
            　　{ <br />
            　　　System.err(this.getClass().getName() + ".mymethod - 不能关闭输出文件" + ioex2.toString()); <br />
            　　} <br />
            　} <br />
            } </font></td>
        </tr>
    </tbody>
</table>
<br />
<font size="2">　　本文的结论不是放之四海皆准的教条，有时常识和经验才是最好的老师。如果你对自己的做法没有百分之百的信心，务必加上详细、全面的注释。 <br />
<br />
　　另一方面，不要笑话这些错误，不妨问问你自己是否真地彻底摆脱了这些坏习惯。即使最有经验的程序员偶尔也会误入歧途，原因很简单，因为它们确确实实带来了&#8220;方便&#8221;。所有这些反例都可以看作Java编程世界的恶魔，它们美丽动人，无孔不入，时刻诱惑着你。也许有人会认为这些都属于鸡皮蒜毛的小事，不足挂齿，但请记住：勿以恶小而为之，勿以善小而不为。<br />
<br />
<br />
<br />
<br />
<br />
------------------------------------------------------------------下面是一些java异常集-------------------------------------------------------------------------------------------</font></span></p>
<br />
<p>算术异常类：ArithmeticExecption</p>
<p>空指针异常类：NullPointerException</p>
<p>类型强制转换异常：ClassCastException</p>
<p>数组负下标异常：NegativeArrayException</p>
<p>数组下标越界异常：ArrayIndexOutOfBoundsException</p>
<p>违背安全原则异常：SecturityException</p>
<p>文件已结束异常：EOFException</p>
<p>文件未找到异常：FileNotFoundException</p>
<p>字符串转换为数字异常：NumberFormatException</p>
<p><br />
操作数据库异常：SQLException</p>
<p><br />
输入输出异常：IOException</p>
<p><br />
方法未找到异常：NoSuchMethodException</p>
<p>java.lang.AbstractMethodError</p>
<p>抽象方法错误。当应用试图调用抽象方法时抛出。</p>
<p>java.lang.AssertionError</p>
<p>断言错。用来指示一个断言失败的情况。</p>
<p>java.lang.ClassCircularityError</p>
<p>类循环依赖错误。在初始化一个类时，若检测到类之间循环依赖则抛出该异常。</p>
<p>java.lang.ClassFormatError</p>
<p>类格式错误。当Java虚拟机试图从一个文件中读取Java类，而检测到该文件的内容不符合类的有效格式时抛出。</p>
<p>java.lang.Error</p>
<p>错误。是所有错误的基类，用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。</p>
<p>java.lang.ExceptionInInitializerError</p>
<p>初始化程序错误。当执行一个类的静态初始化程序的过程中，发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。</p>
<p>java.lang.IllegalAccessError</p>
<p>违法访问错误。当一个应用试图访问、修改某个类的域（Field）或者调用其方法，但是又违反域或方法的可见性声明，则抛出该异常。</p>
<p>java.lang.IncompatibleClassChangeError</p>
<p>不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时，抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下，容易引发该错误。</p>
<p>java.lang.InstantiationError</p>
<p>实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.</p>
<p>java.lang.InternalError</p>
<p>内部错误。用于指示Java虚拟机发生了内部错误。</p>
<p>java.lang.LinkageError</p>
<p>链接错误。该错误及其所有子类指示某个类依赖于另外一些类，在该类编译之后，被依赖的类改变了其类定义而没有重新编译所有的类，进而引发错误的情况。</p>
<p>java.lang.NoClassDefFoundError</p>
<p>未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类，而找不到该类的定义时抛出该错误。</p>
<p>java.lang.NoSuchFieldError</p>
<p>域不存在错误。当应用试图访问或者修改某类的某个域，而该类的定义中没有该域的定义时抛出该错误。</p>
<p>java.lang.NoSuchMethodError</p>
<p>方法不存在错误。当应用试图调用某类的某个方法，而该类的定义中没有该方法的定义时抛出该错误。</p>
<p>java.lang.OutOfMemoryError</p>
<p>内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。</p>
<p>java.lang.StackOverflowError</p>
<p>堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。</p>
<p>java.lang.ThreadDeath</p>
<p>线程结束。当调用Thread类的stop方法时抛出该错误，用于指示线程结束。</p>
<p>java.lang.UnknownError</p>
<p>未知错误。用于指示Java虚拟机发生了未知严重错误的情况。</p>
<p>java.lang.UnsatisfiedLinkError</p>
<p>未满足的链接错误。当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。</p>
<p>java.lang.UnsupportedClassVersionError</p>
<p>不支持的类版本错误。当Java虚拟机试图从读取某个类文件，但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候，抛出该错误。</p>
<p>java.lang.VerifyError</p>
<p>验证错误。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。</p>
<p>java.lang.VirtualMachineError</p>
<p>虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。</p>
<p><br />
java.lang.ArithmeticException</p>
<p>算术条件异常。譬如：整数除零等。</p>
<p>java.lang.ArrayIndexOutOfBoundsException</p>
<p>数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。</p>
<p>java.lang.ArrayStoreException</p>
<p>数组存储异常。当向数组中存放非数组声明类型对象时抛出。</p>
<p>java.lang.ClassCastException</p>
<p>类造型异常。假设有类A和B（A不是B的父类或子类），O是A的实例，那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。</p>
<p>java.lang.ClassNotFoundException</p>
<p>找不到类异常。当应用试图根据字符串形式的类名构造类，而在遍历CLASSPAH之后找不到对应名称的class文件时，抛出该异常。</p>
<p>java.lang.CloneNotSupportedException</p>
<p>不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。</p>
<p>java.lang.EnumConstantNotPresentException</p>
<p>枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象，但该枚举对象并不包含常量时，抛出该异常。</p>
<p>java.lang.Exception</p>
<p>根异常。用以描述应用程序希望捕获的情况。</p>
<p>java.lang.IllegalAccessException</p>
<p>违法的访问异常。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法，而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。</p>
<p>java.lang.IllegalMonitorStateException</p>
<p>违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象（O）的监控器或者通知其他线程等待该对象（O）的监控器时，抛出该异常。</p>
<p>java.lang.IllegalStateException</p>
<p>违法的状态异常。当在Java环境和应用尚未处于某个方法的合法调用状态，而调用了该方法时，抛出该异常。</p>
<p>java.lang.IllegalThreadStateException</p>
<p>违法的线程状态异常。当县城尚未处于某个方法的合法调用状态，而调用了该方法时，抛出异常。</p>
<p>java.lang.IndexOutOfBoundsException</p>
<p>索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时，抛出该异常。</p>
<p>java.lang.InstantiationException</p>
<p>实例化异常。当试图通过newInstance()方法创建某个类的实例，而该类是一个抽象类或接口时，抛出该异常。</p>
<p>java.lang.InterruptedException</p>
<p>被中止异常。当某个线程处于长时间的等待、休眠或其他暂停状态，而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。</p>
<p>java.lang.NegativeArraySizeException</p>
<p>数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。</p>
<p>java.lang.NoSuchFieldException</p>
<p>属性不存在异常。当访问某个类的不存在的属性时抛出该异常。</p>
<p>java.lang.NoSuchMethodException</p>
<p>方法不存在异常。当访问某个类的不存在的方法时抛出该异常。</p>
<p>java.lang.NullPointerException</p>
<p>空指针异常。当应用试图在要求使用对象的地方使用了null时，抛出该异常。譬如：调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。</p>
<p>java.lang.NumberFormatException</p>
<p>数字格式异常。当试图将一个String转换为指定的数字类型，而该字符串确不满足数字类型要求的格式时，抛出该异常。</p>
<p>java.lang.RuntimeException</p>
<p>运行时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的父类。</p>
<p>java.lang.SecurityException</p>
<p>安全异常。由安全管理器抛出，用于指示违反安全情况的异常。</p>
<p>java.lang.StringIndexOutOfBoundsException</p>
<p>字符串索引越界异常。当使用索引值访问某个字符串中的字符，而该索引值小于0或大于等于序列大小时，抛出该异常。</p>
<p>java.lang.TypeNotPresentException</p>
<p>类型不存在异常。当应用试图以某个类型名称的字符串表达方式访问该类型，但是根据给定的名称又找不到该类型是抛出该异常。该异常与ClassNotFoundException的区别在于该异常是unchecked（不被检查）异常，而ClassNotFoundException是checked（被检查）异常。</p>
<p>java.lang.UnsupportedOperationException</p>
<p>不支持的方法异常。指明请求的方法不被支持情况的异常。</p>
<p>异常<br />
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login （/Login是你的action名字）&nbsp;&nbsp; </p>
<p>可能原因<br />
action没有再struts-config.xml 中定义，或没有找到匹配的action，例如在JSP文件中使用 &lt;html:form action="Login.do".将表单提交给Login.do处理，如果出现上述异常，请查看struts-config.xml中的定义部分，有时可能是打错了字符或者是某些不符合规则，可以使用strutsconsole工具来检查。<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
org.apache.jasper.JasperException: Cannot retrieve definition for form bean null</p>
<p>可能原因&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
这个异常是因为Struts根据struts-config.xml中的mapping没有找到action期望的form bean。大部分的情况可能是因为在form-bean中设置的name属性和action中设置的name属性不匹配所致。换句话说，action和form都应该各自有一个name属性，并且要精确匹配，包括大小写。这个错误当没有name属性和action关联时也会发生，如果没有在action中指定name属性，那么就没有name属性和action相关联。当然当action制作某些控制时，譬如根据参数值跳转到相应的jsp页面，而不是处理表单数据，这是就不用name属性，这也是action的使用方法之一。<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
No action instance for path /xxxx could be created</p>
<p>可能原因<br />
特别提示：因为有很多中情况会导致这个错误的发生，所以推荐大家调高你的web服务器的日志/调试级别，这样可以从更多的信息中看到潜在的、在试图创建action类时发生的错误，这个action类你已经在struts-config.xml中设置了关联（即添加了&lt;action&gt;标签）。</p>
<p>在struts-config.xml中通过action标签的class属性指定的action类不能被找到有很多种原因，例如：定位编译后的.class文件失败。Failure to place compiled .class file for the action in the classpath (在web开发中，class的的位置在r WEB-INF/classes，所以你的action class必须要在这个目录下。例如你的action类位于WEB-INF/classes/action/Login.class,那么在struts-config.xml中设置action的属性type时就是action.Login).<br />
拼写错误，这个也时有发生，并且不易找到，特别注意第一个字母的大小写和包的名称。 <br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
javax.servlet.jsp.JspException: No getter method for property username of bean org.apache.struts.taglib.html.BEAN</p>
<p>可能原因<br />
没有位form bean中的某个变量定义getter 方法</p>
<p>这个错误主要发生在表单提交的FormBean中，用struts标记&lt;html:text property=&#8221;username&#8221;&gt;时，在FormBean中必须有一个getUsername()方法。注意字母&#8220;U&#8221;。<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm</p>
<p>可能原因<br />
这个错误主要发生在在classpath中找不到相应的Java .class文件。如果这个错误发生在web应用程序的运行时，主要是因为指定的class文件不在web server的classpath中（/WEB-INF/classes 和 /WEB-INF/lib）。在上面的错误中，原因是找不到ActionForm类。<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
javax.servlet.jsp.JspException: Exception creating bean of class org.apache.struts.action.ActionForm: {1}</p>
<p>可能原因<br />
Instantiating Struts-provided ActionForm class directly instead of instantiating a class derived off ActionForm. This mightoccur implicitly if you specify that a form-bean is this Struts ActionForm class rather than specifying a child of this classfor the form-bean.</p>
<p>Not associating an ActionForm-descended class with an action can also lead to this error.<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection</p>
<p>可能原因<br />
不是标识Struts actionServlet的&lt;servlet&gt;标记就是映射.do扩展名的&lt;sevlet-mapping&gt;标记或者两者都没有在web.xml中声明。</p>
<p>在struts-config.xml中的打字或者拼写错误也可导致这个异常的发生。例如缺少一个标记的关闭符号/&gt;。最好使用struts console工具检查一下。</p>
<p>另外，load-on-startup必须在web.xml中声明，这要么是一个空标记，要么指定一个数值，这个数值用来表servlet运行的优先级，数值越大优先级越低。</p>
<p>还有一个和使用load-on-startup有关的是使用Struts预编译JSP文件时也可能导致这个异常。<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
java.lang.NullPointerException at org.apache.struts.util.RequestUtils.forwardURL(RequestUtils.java:1223)</p>
<p>可能原因<br />
在struts-config.xml中的forward元素缺少path属性。例如应该是如下形式：<br />
&lt;forward name="userhome" path="/user/userhome.jsp"/&gt;<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
javax.servlet.jsp.JspException: Cannot find bean org.apache.struts.taglib.html.BEAN in any scope</p>
<p><br />
&nbsp; </p>
<p>Probable Causes<br />
试图在Struts的form标记外使用form的子元素。这常常发生在你在&lt;/html:form&gt;后面使用Struts的html标记。另外要注意可能你不经意使用的无主体的标记，如&lt;html:form &#8230; /&gt;，这样web 服务器解析时就当作一个无主体的标记，随后使用的所有&lt;html&gt;标记都被认为是在这个标记之外的，如又使用了&lt;html:text property=&#8221;id&#8221;&gt;还有就是在使用taglib引入HTML标记库时，你使用的prefix的值不是html。<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
javax.servlet.jsp.JspException: Missing message for key xx.xx.xx</p>
<p>Probable Causes<br />
这个key的值对没有在资源文件ApplicationResources.properties中定义。如果你使用eclipse时经常碰到这样的情况，当项目重新编译时，eclipse会自动将classes目录下的资源文件删除。</p>
<p>资源文件ApplicationResources.properties 不在classpath中应将资源文件放到 WEB-INF/classes 目录下，当然要在struts-config.xml中定义)<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
Cannot find message resources under key org.apache.struts.action.MESSAGE</p>
<p>可能原因<br />
很显然，这个错误是发生在使用资源文件时，而Struts没有找到资源文件。</p>
<p>Implicitly trying to use message resources that are not available (such as using empty html:options tag instead of specifyingthe options in its body -- this assumes options are specified in ApplicationResources.properties file)</p>
<p>XML parser issues -- too many, too few, incorrect/incompatible versions<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
Strange and seemingly random characters in HTML and on screen, but not in original JSP or servlet.</p>
<p>可能原因<br />
混和使用Struts的html:form标记和标准的HTML标记不正确。</p>
<p>使用的编码样式在本页中不支持。<br />
-----------------------------------------------------------------------------------------------------------------<br />
异常<br />
"Document contained no data" in Netscape</p>
<p>No data rendered (completely empty) page in Microsoft Internet Explorer</p>
<p>可能原因<br />
使用一个Action的派生类而没有实现perform()方法或execute()方法。在Struts1.0中实现的是perform()方法，在Struts1.1中实现的是execute()方法，但Struts1.1向后兼容perform()方法。但你使用Struts1.1创建一个Action的派生类，并且实现了execute()方法，而你在Struts1.0中运行的话，就会得到"Document contained nodata" error message in Netscape or a completely empty (no HTML whatsoever) page rendered in Microsoft Internet Explorer.&#8221;的错误信息。</p>
<p>---------------------------------------------------------------------------------------------------------------------------<br />
异常<br />
ServletException: BeanUtils.populate<br />
解决方案<br />
在用Struts上传文件时,遇到了javax.servlet.ServletException: BeanUtils.populate异常。<br />
我的ActionServlet并没有用到BeanUtils这些工具类。后来仔细检查代码发现是在jsp文件里的form忘了加enctype=&amp;quot;multipart/form-data&amp;quot; 了。所以写程序遇到错误或异常应该从多方面考虑问题存在的可能性，想到系统提示信息以外的东西。<br />
----------------------------------------------------------------------------------------------------------------------------<br />
1. 定义Action后, 如果指定了name, 那么必须要定义一个与它同名的FormBean才能进行form映射.2. 如果定义Action后, 提交页面时出现 "No input attribute for mapping path..." 错误, 则需要在其input属性中定义转向的页面.3. 如果插入新的数据时出现 "Batch update row count wrong:..." 错误, 则说明XXX.hbm.xml中指定的key的类型为原始类型(int, long),因为这种类型会自动分配值, 而这个值往往会让系统认为已经存在该记录, 正确的方法是使用java.lang.Integer或java.lang.Long对象.4. 如果插入数据时出现 "argument type mismatch" 错误, 可能是你使用了Date等特殊对象, 因为struts不能自动从String型转换成Date型,所以, 你需要在Action中手动把String型转换成Date型.5. Hibernate中, Query的iterator()比list()方法快很多.6. 如果出现 "equal symbol expected" 错误, 说明你的strtus标签中包含另一个标签或者变量, 例如:<br />
&lt;html:select property="test" onchange="&lt;%=test%&gt;"/&gt;<br />
或者<br />
&lt;html:hidden property="test" value="&lt;bean:write name="t" property="p"/&gt;"/&gt;<br />
这样的情况... <br />
---------------------------------------------------------------------------------------------------------------------------<br />
错误：Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update原因与解决：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为Hibernate Tools（或者Eclipse本身的Database Explorer）生成*.hbn.xml工具中包含有catalog="***"（*表示数据库名称）这样的属性,将该属性删除就可以了<br />
---------------------------------------------------------------------------------------------------------------------------<br />
错误：org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)<br />
原因与解决：<br />
方法1 删除Set方的cascade<br />
方法2 解决关联关系后，再删除<br />
方法3 在many-to-one方增加cascade 但值不能是none<br />
最后一招：<br />
检查一下hashCode equals是否使用了id作为唯一标示的选项了；我用uuid.hex时是没有问题的；但是用了native，就不行了，怎么办？删除啊！<br />
----------------------------------------------------------------------------------------------------------------------------<br />
问题：今天用Tomcat 5.5.12，发现原来很好用的系统不能用了，反复测试发现页面中不能包含 taglib，否则会出现以下提示：HTTP Status 500 -type Exception reportMessage description The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: /index.jsp(1,1) Unable to read TLD "META-INF/tlds/struts-bean.tld" from JAR file"file:*****/WEB-INF/lib/struts.jar":原因：更新了工程用的lib文件夹下的jar，发布时也发布了servlet.jar和jsp-api.jar。解决：把jsp-api.jar删除就解决这个问题了。-----------------------------------------------------------------------------------------------------------------------------<br />
错误： java.lang.NullPointerException<br />
原因： 发现 dao 实例、 manage 实例等需要注入的东西没有被注入（俗称空指针异常）解决：这个时候，你应该查看日志文件；默认是应用服务器的 log 文件，比如 Tomcat 就是 [Tomcat 安装目录 ]/logs ；你会发现提示你：可能是：org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sf' defined in ServletContextresource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception isorg.hibernate.HibernateException: could not configure from URL: file:src/hibernate.cfg.xmlorg.hibernate.HibernateException: could not configure from URL: file:src/hibernate.cfg.xml&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.Caused by: java.io.FileNotFoundException: src\hibernate.cfg.xml可能是：org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined inServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception isorg.hibernate.MappingException: Resource: com/mcc/coupon/model/UserRole.hbm.xml not foundorg.hibernate.MappingException: Resource: com/mcc/coupon/model/UserRole.hbm.xml not found然后你就知道原因是因为配置文件的解析出了错误，这个通过 Web 页面是看不出来的。更多的是持久化影射文件出的错误；导致了没有被解析；当然你需要的功能就无法使用了。<br />
----------------------------------------------------------------------------------------------------------------------------<br />
错误：StandardWrapperValve[action]: Servlet.service() for servlet action threw exception<br />
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /settlementTypeManage<br />
或者：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type Status report&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message Servlet action is not available&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; description The requested resource (Servlet action is not available) is not available.<br />
原因： 同 上<br />
----------------------------------------------------------------------------------------------------------------------------<br />
错误StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exceptionjava.lang.ClassNotFoundException: org.apache.struts.taglib.bean.CookieTei界面错误具体描述：<br />
org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: org.apache.struts.taglib.bean.CookieTei<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原因与解决：&nbsp;&nbsp;&nbsp; &lt;方案一&gt;你的&#8220;html:&#8221;开头的标签没有放在一个&lt;html:form&gt;中&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;方案二&gt;重新启动你的应用服务器，自动就没有这个问题<br />
</p>
</div>
<img src ="http://www.blogjava.net/keweibo/aggbug/148895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-09-27 21:58 <a href="http://www.blogjava.net/keweibo/articles/148895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required</title><link>http://www.blogjava.net/keweibo/articles/145545.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 16 Sep 2007 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/145545.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/145545.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/145545.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/145545.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/145545.html</trackback:ping><description><![CDATA[<p><img style="border-left-color: #999999; border-bottom-color: #999999; width: 529px; border-top-color: #999999; height: 632px; border-right-color: #999999" height="632" alt="" src="http://www.blogjava.net/images/blogjava_net/keweibo/ssh.jpg" width="529" border="0" /><br />
昨天在做一个SSH的例子时.启动TOMCAT服务器时就老是报错.<br />
<span style="color: red">.........<br />
java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required</span><br />
根据提示在配置文件中为这个类添加一个property属性<br />
&lt;property name="sessionFactory"&gt;<br />
&lt;ref bean="sessionFactory" /&gt;<br />
&lt;/property&gt;<br />
就不会报错.但是其它的Service类并不需要这么做,让我感觉很奇怪.最终发现原来是我让CataogService&nbsp; extends HibernateDaoSupport .改正后运行正常,goood <br />
牢记....</p>
<img src ="http://www.blogjava.net/keweibo/aggbug/145545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-09-16 16:45 <a href="http://www.blogjava.net/keweibo/articles/145545.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>传参数时id=${user.id }和id='${user.id }'</title><link>http://www.blogjava.net/keweibo/articles/143565.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 08 Sep 2007 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/143565.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/143565.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/143565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/143565.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/143565.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
&nbsp;&lt;font color="red"&gt;&lt;html:errors property="org.apache.struts.action.GLOBAL_MESSAGE"/&gt;&lt;/font&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;form action="browseUser" method="post"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;table border="1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;th&gt;用户名&lt;/th&gt;&lt;th&gt;密码&lt;/th&gt;&lt;th&gt;真实姓名&lt;/th&gt;&lt;th&gt;出生日期&lt;/th&gt;&lt;th&gt;电子邮件&lt;/th&gt;&lt;th&gt;删除&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:forEach items="${browse_user_list}" var="user"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;td&gt;${user.username}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;td&gt;${user.password}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;td&gt;${user.truename}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;td&gt;${user.birthday}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;td&gt;${user.email}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;a onclick="return confirm('确实要删除?')" href="deleteUser.do?<span style="color: red">id=${user.id }"&gt;</span>删除&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/c:forEach&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/table&gt;<br />
昨天晚上由于把id=${user.id }写成了id=<span style="color: #ff0000">'</span>${user.id }<span style="color: #ff0000">'</span>.结果在action里.接收到的id参数的值的形式为 <span style="color: red">' </span>5424ga54g5a4fgafasf <span style="color: red"><strong>' </strong></span>,多了一对单引号,老是报空指针异常.这样写<br />
导致了在查询数据库时查不到相应的对象,因为在数据库里根本就没有id=<strong style="color: red">' </strong>5424ga54g5a4fgafasf <strong style="color: #ff0000">'</strong> <span style="color: #000000">这样的记录存在.<br />
</span>
 <img src ="http://www.blogjava.net/keweibo/aggbug/143565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-09-08 10:18 <a href="http://www.blogjava.net/keweibo/articles/143565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javax.servlet.ServletException: DispatchMapping[XXX] does not define a handler property </title><link>http://www.blogjava.net/keweibo/articles/143543.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 07 Sep 2007 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/143543.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/143543.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/143543.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/143543.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/143543.html</trackback:ping><description><![CDATA[<div class="cnt">
<p>错误 ：javax.servlet.ServletException: DispatchMapping[0] does not define a handler property <br />
原因： action参数配置不全 <br />
解决方法：在 config文件中 添加 parameter="method"等 <br />
<br />
错误： 表单数据验证失败时发生错误，&#8220;No input attribute for mapping path&#8221; <br />
原因：action中表单验证 validate="true" ，如果validate()返回非空的ActionErrors，将会被转到input属性指定的URI，而action中未指定input时会报此错 <br />
解决方法：添加 input="url" 或者 validate="false" <br />
<br />
错误：jsp页面中，一个form有隐藏的method属性，&lt;input type="hidden" name="method" value="&lt;bean:message key="button.deleteall"/&gt;"&gt; ，当其他的button使用 method时会默认为使用该属性，则达不到程序员预期的操作 <br />
解决方法：实用javascript写一个function,改变该method值 <br />
function{ <br />
document.forms[0].elements.value="你要的操作名"; </p>
<p>} <br />
<br />
错误：Action里无法解析 导入的包，Form里的方法，但是代码没错 <br />
原因：不明，我是改变了validation.xml后重新发布而出了错的 <br />
解决方法：将工程关了，再打开，myeclipse会将工程重新构建，这样问题就解决了 <br />
ps：重启Tomcat是没有用滴&#8230;&#8230;</p>
<p>错误：Struts:HTTP Status 404 - Servlet action is not available</p>
<p>&nbsp;&nbsp; 原因 1.、web.xml文件中未配置ActionServlet。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 2、struts-config.xml文件未配置你要访问的Action。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 3、你的jsp文件form标记中action属性的路径名称错误。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 4、非以上三种情况。</p>
<p>针对以上4种情况相应的解决方案如下：&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 1、在web.xml文件中加上ActionServlet的配置信息&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; &lt;servlet&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;action&lt;/servlet-name&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;config&lt;/param-name&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;debug&lt;/param-name&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;0&lt;/param-value&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;detail&lt;/param-name&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;0&lt;/param-value&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;2&lt;/load-on-startup&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 2、在struts-config.xml文件检查你要访问的Action配置文件。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 3、检查jsp文件form标记中action属性的路径名称是否与struts-config.xml文件中action标记的path属性的路径名称一致。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 4、非以上情况的解决办法就是检查web容器的log日志，如果时tomcat则检查下logs目录下的localhost_log文件，看里边是否记录有错误信息，然后根据错误信息提示将其纠正。</p>
</div>
<img src ="http://www.blogjava.net/keweibo/aggbug/143543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-09-08 00:37 <a href="http://www.blogjava.net/keweibo/articles/143543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse 开发 SSH 整合时 java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit 解决方案 </title><link>http://www.blogjava.net/keweibo/articles/140086.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 27 Aug 2007 10:43:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/140086.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/140086.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/140086.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/140086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/140086.html</trackback:ping><description><![CDATA[<div class=postTitle><a class=postTitle2 id=viewpost1_TitleUrl href="http://www.blogjava.net/beansoft/archive/2007/08/27/139890.html"><u><font color=#800080>MyEclipse 开发 SSH 整合时 java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit 解决方案</font></u></a> </div>
<p>这篇文章解决了问题, 核心提示:</p>
<p>2007-08-08 发现用 MyEclipse 5.5 做 Struts 1.2 + Spring 2.0 + Hibernate 3.1 整合时启动过程中报如下的错误:</p>
<p><br>2007-08-08 15:36:17,406 ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User<br>java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V<br>&nbsp;at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)</p>
<p>Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启 Tomcat.</p>
<p>asm-2.2.3.jar<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asm.jar<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asm-attrs.jar<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asm-commons-2.2.3.jar<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asm-util-2.2.3.jar</p>
<p>原文参考:　<a href="http://heweiya.javaeye.com/blog/101575"><u><font color=#0000ff>http://heweiya.javaeye.com/blog/101575</font></u></a></p>
 <img src ="http://www.blogjava.net/keweibo/aggbug/140086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-08-27 18:43 <a href="http://www.blogjava.net/keweibo/articles/140086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool异常的解决办法</title><link>http://www.blogjava.net/keweibo/articles/139377.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 26 Aug 2007 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/139377.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/139377.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/139377.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/139377.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/139377.html</trackback:ping><description><![CDATA[今天做了webwork+spring+hibernate框架的集成,<br>一启动Tomcat服务器就出了一大堆异常<br>报的错误是java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool<br>在网上查找错误的原因,说是缺少了一个commons-pool.jar文件<br>在myeclipse的安装目录下搜索,得到这个文件.放进lib文件夹.<br>问题解决!
 <img src ="http://www.blogjava.net/keweibo/aggbug/139377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-08-26 09:31 <a href="http://www.blogjava.net/keweibo/articles/139377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>