<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<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>hbs' blog - {JavaEE开发}</title><link>http://www.hb4.org/</link><description>fuck by fuck! - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><copyright>Copyright 2007-2010 Your WebSite. Some Rights Reserved.</copyright><pubDate>Tue, 07 Sep 2010 07:12:04 +0800</pubDate><item><title>uploadify+struts2实现文件批量异步上传</title><author>a@b.com (hbslover)</author><link>http://www.hb4.org/Article/24.htm</link><pubDate>Mon, 24 May 2010 17:15:10 +0800</pubDate><guid>http://www.hb4.org/Article/24.htm</guid><description><![CDATA[<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;搞了一下Ajax文件上传的控件,贴一个整合Struts2的例子:下面是图例,</p><p><img onload="ResizeImage(this,520)" src="http://www.hb4.org/upload/2010/5/201005241719077086.jpg" alt="" title="" /></p><p>&nbsp;</p><p><span style="background-color: rgb(51, 153, 102); "><strong><span style="font-size: x-large; ">upload.jsp &nbsp; &nbsp;</span></strong>&nbsp;</span></p><hr /><p>﻿&lt;%@ page language=&quot;java&quot; import=&quot;java.util.*&quot; pageEncoding=&quot;UTF-8&quot;%&gt;</p><p>&lt;%</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>String path = request.getContextPath();</p><p>%&gt;</p><p>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;</p><p>&lt;html&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>&lt;head&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;script type=&quot;text/javascript&quot; src=&quot;scripts/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;script type=&quot;text/javascript&quot; src=&quot;scripts/swfobject.js&quot;&gt;&lt;/script&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;script type=&quot;text/javascript&quot;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>src=&quot;scripts/jquery.uploadify.v2.1.0.min.js&quot;&gt;&lt;/script&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;link href=&quot;css/uploadify.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;link href=&quot;css/default.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;</p><p>&nbsp;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;script type=&quot;text/javascript&quot;&gt;&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$(document).ready(function() {&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$(&quot;#fileupload&quot;).uploadify({&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'uploader' &nbsp; &nbsp; &nbsp; : 'scripts/uploadify.swf',&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'script' &nbsp; &nbsp; &nbsp; &nbsp; : '&lt;%=path%&gt;/Up_upload.action?uid=&lt;%out.print(new Random().nextDouble());%&gt;',&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'cancelImg' &nbsp; &nbsp; &nbsp;: 'scripts/cancel.png',&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'queueID' &nbsp; &nbsp; &nbsp; &nbsp;: 'fileQueue',</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'fileDataName' &nbsp; : 'fileupload',&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'auto' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : false,</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'multi' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: true,&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'buttonText' &nbsp; &nbsp; : 'BROWE',</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'fileDesc' &nbsp; &nbsp; &nbsp; : '支持格式:jpg/gif/jpeg/png/bmp.',</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'fileExt' &nbsp; &nbsp; &nbsp; &nbsp;: '*.jpg;*.gif;*.jpeg;*.png;*.bmp',</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">	</span>onComplete: function (event, queueID, fileObj, response, data) {&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">		</span>var scriptStr='&lt;%=path%&gt;/Up_upload.action?uid='+Math.random();</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">		</span>$('#fileupload').uploadifySettings('script',scriptStr);</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$('#retpanel').append('&lt;li id=\''+response+'\'&gt;'+response+'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'+</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>'&lt;img src=&quot;&lt;%=path%&gt;/admin/upload/scripts/cancel.png&quot; onclick=&quot;deletePic(\''+response+'\');&quot;/&gt;&lt;/li&gt;');</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>},&nbsp;</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>onError: function(event, queueID, fileObj) {&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">		</span> alert(&quot;文件:&quot; + fileObj.name + &quot;上传失败&quot;);&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; <span class="Apple-tab-span" style="white-space:pre">			</span>}</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;});&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//删除文件</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;function deletePic(name){</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">	</span>$.ajax({</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;url : '&lt;%=path%&gt;/Up_deleteFile.action?fileName='+name+'&amp;uuid='+Math.random(),</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cache : false,&nbsp;</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;async : true,</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;type : &quot;POST&quot;,</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;success : function (result){</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(result!=null &amp;&amp; result=='ok'){</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">	</span>var oDl = document.getElementById(name);</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">				</span>oDl.parentNode.removeChild(oDl);</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}else{</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">	</span>alert(result);</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;error : function(){</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">	</span>alert('提交请求失败,删除文件失败!');</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&lt;/script&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>&lt;/head&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>&lt;body bgcolor=&quot;white&quot;&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;h3&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>文件上传</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;/h3&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;div id=&quot;fileQueue&quot; style=&quot;&quot;&gt;&lt;/div&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;br&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;p&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;input type=&quot;file&quot; name=&quot;fileupload&quot; id=&quot;fileupload&quot; /&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;a href=&quot;javascript:jQuery('#fileupload').uploadifyUpload()&quot;&gt;开始上传&lt;/a&gt;|</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;a href=&quot;javascript:jQuery('#fileupload').uploadifyClearQueue()&quot;&gt;取消所有上传&lt;/a&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;/p&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;ol class=files id=&quot;retpanel&quot;&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;/ol&gt;</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>&lt;/body&gt;</p><p>&lt;/html&gt;</p><hr /><div><div><span style="background-color: rgb(51, 153, 102); "><strong><span style="font-size: x-large; ">UploadAction.java的代码,&nbsp;fileupload的名字必须跟file控件的name一致</span></strong></span></div><div>/**</div><div>&nbsp;* Ajax文件上传Action</div><div>&nbsp;*&nbsp;</div><div>&nbsp;* @author hbs</div><div>&nbsp;* @version 1.0 测试兼容IE8,firefox,google浏览器</div><div>&nbsp;*&nbsp;</div><div>&nbsp;*/</div><div>public class UploadAction {</div><div>&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>private File fileupload;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>private String fileuploadFileName;</div><div>&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>/**</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> * 上传文件</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> *&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> * @return</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> * @throws IOException</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> */</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>public String upload() throws IOException {</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>String extName = &quot;&quot;, newFileName = &quot;&quot;, nowTimeStr = &quot;&quot;, saveFloder = &quot;/uploads/&quot;;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>String savePath = ServletActionContext.getServletContext().getRealPath(</div><div><span class="Apple-tab-span" style="white-space:pre">				</span>&quot;&quot;)</div><div><span class="Apple-tab-span" style="white-space:pre">				</span>+ saveFloder;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>File floder = new File(savePath);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>if (!floder.exists())</div><div><span class="Apple-tab-span" style="white-space:pre">			</span>floder.mkdir();</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>HttpServletResponse response = ServletActionContext.getResponse();</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>response.setCharacterEncoding(&quot;utf-8&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>int rannum = (int) (new Random().nextDouble() * (99999 - 10000 + 1)) + 10000;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>nowTimeStr = new SimpleDateFormat(&quot;yyyyMMddHHmmss&quot;).format(new Date());</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>if (fileuploadFileName.lastIndexOf(&quot;.&quot;) &gt;= 0) {</div><div><span class="Apple-tab-span" style="white-space:pre">			</span>extName = fileuploadFileName.substring(fileuploadFileName</div><div><span class="Apple-tab-span" style="white-space:pre">					</span>.lastIndexOf(&quot;.&quot;));</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>newFileName = nowTimeStr + rannum + extName;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>fileupload.renameTo(new File(savePath + newFileName));</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>response.getWriter().print(saveFloder + newFileName);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>return null;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div>&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>/**</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> * 删除文件</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> *&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> * @return</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> * @throws IOException</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> */</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>public String deleteFile() throws IOException {</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>HttpServletResponse response = ServletActionContext.getResponse();</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>response.setCharacterEncoding(&quot;utf-8&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>String savePath = ServletActionContext.getServletContext().getRealPath(</div><div><span class="Apple-tab-span" style="white-space:pre">				</span>&quot;&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>savePath += ServletActionContext.getRequest().getParameter(&quot;fileName&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>File pic = new File(savePath);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>if (pic.exists()) {</div><div><span class="Apple-tab-span" style="white-space:pre">			</span>response.getWriter().print(pic.delete() ? &quot;ok&quot; : &quot;删除失败!&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">			</span>response.getWriter().print(&quot;没有找到相应的文件,删除失败!&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>return null;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div>&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>public void setFileupload(File fileupload) {</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>this.fileupload = fileupload;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div>&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>public void setFileuploadFileName(String fileuploadFileName) {</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>this.fileuploadFileName = fileuploadFileName;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div>&nbsp;</div><div>}</div><hr /><div>&nbsp;</div></div><blockquote><p>&nbsp;</p></blockquote>]]></description><category>{JavaEE开发}</category><comments>http://www.hb4.org/Article/24.htm#comment</comments><wfw:comment>http://www.hb4.org/</wfw:comment><wfw:commentRss>http://www.hb4.org/feed.asp?cmt=24</wfw:commentRss><trackback:ping>http://www.hb4.org/cmd.asp?act=tb&amp;id=24&amp;key=30e449b1</trackback:ping></item><item><title>关于JavaEE项目性能问题</title><author>a@b.com (hbslover)</author><link>http://www.hb4.org/Article/23.htm</link><pubDate>Fri, 07 May 2010 16:14:48 +0800</pubDate><guid>http://www.hb4.org/Article/23.htm</guid><description><![CDATA[<p>　　　　症状:</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基于Struts2+Spring+Hibernate架构的项目,hibernate开二级缓存.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用tomcat跑,最大200线程,默认64M内存,开40线程性能测试,出现堆内存溢出</p><p>&nbsp;</p><p>　　　&nbsp;&nbsp; 解决方案:</p><p>　　　　&nbsp; 调高Tomcat虚拟内存到512M,继续测试.内存未溢出,但导致整个应用卡死,</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看tomcat线程,出现线程死锁</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分析死锁原因:</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.资源未释放</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.线程池原因</p><p>　　　　 3.request的操作代码耗时较长.</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后新建测试项目:Action内Thread.sleping(1000);继续测试,未出现死锁现象</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hibernate查10000条数据,第一次耗时&gt;2000ms,第二次耗时&gt;800ms,继续测试出现死锁现象</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hibernate 查1000条,第一次耗时&lt;100ms,第二次&lt;50ms,测试,未出现死锁,但程序反应过慢</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBC查10000条数据,第一次耗时&gt;16ms,第二次&lt;16ms,继续测试,未出现死锁</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 得出结论:用户操作比较频繁的页面数据库操作耗时不能超过50ms (CPU:赛扬D双核,内存1G)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然,测试的并发线程数40,根据硬件以及测试条件变动</p>]]></description><category>{JavaEE开发}</category><comments>http://www.hb4.org/Article/23.htm#comment</comments><wfw:comment>http://www.hb4.org/</wfw:comment><wfw:commentRss>http://www.hb4.org/feed.asp?cmt=23</wfw:commentRss><trackback:ping>http://www.hb4.org/cmd.asp?act=tb&amp;id=23&amp;key=41abd937</trackback:ping></item><item><title>IIS+Resin整合遇到的问题</title><author>a@b.com (hbslover)</author><link>http://www.hb4.org/Article/19.htm</link><pubDate>Fri, 05 Mar 2010 08:55:04 +0800</pubDate><guid>http://www.hb4.org/Article/19.htm</guid><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 闲着无聊,想配置一下支持ASP,ASPX,PHP,JSP的全能的WEB环境.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面三种的配置十分正常,配置JSP支持我用的是Resin3.2</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只要一加上Resin3.2的isapi,整个IIS所有网站都报404错误,网上搜到很多类似的问题</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据网上给出的方式都无法解决,重装IIS,错误依然,最后只有去掉Resin的ISAPI</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除服务拓展,恢复正常...这个问题记下,有待深入了解&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>]]></description><category>{JavaEE开发}</category><comments>http://www.hb4.org/Article/19.htm#comment</comments><wfw:comment>http://www.hb4.org/</wfw:comment><wfw:commentRss>http://www.hb4.org/feed.asp?cmt=19</wfw:commentRss><trackback:ping>http://www.hb4.org/cmd.asp?act=tb&amp;id=19&amp;key=78fc24f1</trackback:ping></item><item><title>元旦大奉献--JSmart2.0_hbs完善版[+部分源码]</title><author>a@b.com (hbslover)</author><link>http://www.hb4.org/Article/JSmart_2_0_fix_by_hbs.htm</link><pubDate>Fri, 01 Jan 2010 08:42:41 +0800</pubDate><guid>http://www.hb4.org/Article/JSmart_2_0_fix_by_hbs.htm</guid><description><![CDATA[<p><span style="font-size: x-large"><strong>强大的代码生成功能</strong></span></p><p>1.自动生成基于SSH,SSH2,SSI架构的代码</p><p>2.自动生成JSP页面及后台代码</p><p>3.自动生成增、删、改、查相关代码及存储过程</p><p>4.自动生成验证代码</p><p>5.生成的代码直接可以发布运行</p><p><strong><span style="font-size: x-large">灵活的代码生成方式定义</span></strong></p><p>1.可以自由设定命名规则及相关包名</p><p>2.根据列注释自动生成相应页面的列头，属性的注释等</p><p>3.JSP页面风格多样性，支持自定义模板生成</p><p>4.支持单表及多表一键生成</p><p>5.框架技术可以切换，如数据访问层可以在Hibernate和iBatis之间切换</p><p>&nbsp;</p><p><u><font color="#810081"><a href="http://www.hb4.org/upload/jsmart/JSamrt2.0.2-hbslover.jar"><span style="color: #ff0000"><span style="font-size: large">http://www.hb4.org/upload/jsmart/JSamrt2.0.2-hbslover.jar</span></span></a></font></u><a href="http://www.hb4.org/jsmart/JSamrt2.0.2-hbslover.jar"></a></p>]]></description><category>{JavaEE开发}</category><comments>http://www.hb4.org/Article/JSmart_2_0_fix_by_hbs.htm#comment</comments><wfw:comment>http://www.hb4.org/</wfw:comment><wfw:commentRss>http://www.hb4.org/feed.asp?cmt=15</wfw:commentRss><trackback:ping>http://www.hb4.org/cmd.asp?act=tb&amp;id=15&amp;key=9b836b65</trackback:ping></item><item><title>基于SOA的JavaEE企业管理系统设计思路</title><author>a@b.com (hbslover)</author><link>http://www.hb4.org/Article/JavaEE_soa_system.htm</link><pubDate>Sat, 28 Nov 2009 10:17:03 +0800</pubDate><guid>http://www.hb4.org/Article/JavaEE_soa_system.htm</guid><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近构思了一个JavaEE+MySQL的企业管理系统,此系统将作为组件化设计</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将一个一个功能作为子系统组件设计,主系统将只提供容器级别的服务</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目的是为容纳各个功能组件,各个组件之间可以独立运行,不过也需要协同工作~</p><p>&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我的想法是基于Web Services,由主系统来提供高效率的组件管理调度系统,</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使各个组件相对独立,又能协同功能~,主系统还要有严格的权限控制系统,</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 和高度的可拓展性,这是大体思路:遇到了一些瓶颈问题:路过的朋友请指教一下:</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.怎么才能使组件之间相对独立又能紧密协同呢???(Web Services可以解决这样的问题,不过使得组件之间的独立性相对减弱,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有没有更加好的方法基于Web Services使得组件相对独立呢&gt;????)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.怎样才能是系统具体高度的拓展性呢&gt;&gt;???有没有比较成熟的解决方案呢????</p>]]></description><category>{JavaEE开发}</category><comments>http://www.hb4.org/Article/JavaEE_soa_system.htm#comment</comments><wfw:comment>http://www.hb4.org/</wfw:comment><wfw:commentRss>http://www.hb4.org/feed.asp?cmt=13</wfw:commentRss><trackback:ping>http://www.hb4.org/cmd.asp?act=tb&amp;id=13&amp;key=b86aed02</trackback:ping></item><item><title>简述一下本人在SSH整合开发时的习惯</title><author>a@b.com (hbslover)</author><link>http://www.hb4.org/Article/6.htm</link><pubDate>Fri, 13 Nov 2009 23:51:42 +0800</pubDate><guid>http://www.hb4.org/Article/6.htm</guid><description><![CDATA[<div style="font-size: 16px" id="blogDetailDiv"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 装逼一下:因为刚学完了Struts,Spring也弄了一下以来注入,Hibernate还没正式上课,</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不过本人自己看了提前看了一下!所以没事,要玩玩JavaEE界顶顶大名的SSH整合开发!</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS:这样做的原因是为了避免讨嫌的整合不成功 Action的404错误</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有难搞的java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor&nbsp;&nbsp;异常</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有一些闻所未闻的异常或者错误...</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然咱们伟大的java老师杨说过:struts好学好用,Spring难学好用,Hibernate好学难用</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是本人在整合的时候,已经受了无数次摧残,不知道是人品问题还是习惯问题</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以啊,养成良好的开发习惯是必要的!</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大体按照咱们伟大领袖邓小平的理论,实现三步走:</p><p>　　<strong><font color="#990000">&lt;!--创建项目,搭好架子,解决人民温饱问题:--&gt;</font></strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.打开MyEclipse6.5新建一个JavaEE的Web Project项目,当然填写项目名称之后</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我会豪爽的选择javaEE 5的支持..</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.先右键,对项目添加Structs1.3的支持</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.再右键,对项目添加Spring2.5的支持</p><p>　</p><p>&nbsp;&nbsp;&nbsp; 　<font color="#990000"><strong>&lt;!--对struts和Spring进行整合,带领小部分人民进入小康:--&gt;</strong></font></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.新建一个ActionForm和一个Action外加上一个jsp页面</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.新建一个类继承ActionServlet,然后再process里面对request和response设定编码为UTF-8</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (为了后来不无缘无故出现乱码,所以,我早早的把编码改一下!)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.在struts-config.xml配置文件中添加Spring的插件&nbsp;</p><p><font color="#990000"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong></font><font color="#000000">(这样做的原因是:迟早要添加,还不如早点添加)</font></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.在Spring的配置文件中注册一个Bean,Bean一定要使用name属性,而且name属性的值一定要与Action的Path一致</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.像一般人都喜欢把struts和spring和hibernate都搞好,再来搞配置,可是我不喜欢</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我的习惯是测试一下Action是否可访问,如果Spring注入成功,代表可访问,不成功呢,那就404</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#990000"><strong>&lt;!--对Hibernate和Spring再加上Struts的整合,使人民全面小康:--&gt;</strong></font>&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8.添加对Hibernate的支持.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9.删除hibernate的asm.jar/asm-attr.jar/cglib.2.2.3.jar3个包.不然会产生冲突</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.自动去生成pojo和Dao类</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11.注册Dao,为Dao类注入所需是属性,一般给SessionFactory就好,但是我喜欢用HibernateTemlate</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12.然后把Dao注入给Action,再在Action里面做你丫邪恶的事情吧!</p></div><p>&nbsp;</p>]]></description><category>{JavaEE开发}</category><comments>http://www.hb4.org/Article/6.htm#comment</comments><wfw:comment>http://www.hb4.org/</wfw:comment><wfw:commentRss>http://www.hb4.org/feed.asp?cmt=6</wfw:commentRss><trackback:ping>http://www.hb4.org/cmd.asp?act=tb&amp;id=6&amp;key=427ae6bc</trackback:ping></item><item><title>SSH整合开发ASM包冲突的问题</title><author>a@b.com (hbslover)</author><link>http://www.hb4.org/Article/ssh_question.htm</link><pubDate>Fri, 13 Nov 2009 23:46:18 +0800</pubDate><guid>http://www.hb4.org/Article/ssh_question.htm</guid><description><![CDATA[<h3 title=""><a href="#">java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisito</a></h3><div class="blog_content"><p>错误：java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor的解决方法</p><div class="postText"><div>在使用Spring的AOP编程时，会用到这几个lib：<br />asm-2.2.2.jar<br />asm-commons-2.2.2.jar<br />asm-util-2.2.2.jar</div><div>Hibernate使用如下lib：</div><div>asm.jar<br />asm-attrs.jar</div><div>其中asm-2.2.2.jar与asm.jar存在类上的冲突！！！<br />使用其中之一或两者都使用，可能会出现如下错误：<br />java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor<br />java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor<br />java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。<br />解决办法是：<br />1.去掉类路径上的关于Hibernate的3个lib<br /><span style="font-size: medium"><span style="color: #ff0000">asm.jar<br />asm-attrs.jar<br />cglib-2.1.3.jar</span></span><br />2.加入Spring中的以下4个lib<br /><span style="color: #ff0000"><span style="font-size: medium">asm-2.2.2.jar<br />asm-commons-2.2.2.jar<br />asm-util-2.2.2.jar<br />cglib-nodep-2.1_3.jar</span></span></div></div></div>]]></description><category>{JavaEE开发}</category><comments>http://www.hb4.org/Article/ssh_question.htm#comment</comments><wfw:comment>http://www.hb4.org/</wfw:comment><wfw:commentRss>http://www.hb4.org/feed.asp?cmt=5</wfw:commentRss><trackback:ping>http://www.hb4.org/cmd.asp?act=tb&amp;id=5&amp;key=4b09f42a</trackback:ping></item></channel></rss>
