<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>入门讨论论坛最新讨论 - JavaEye</title>
    <description>基础知识，入门问题，简单技术问题交流和讨论版面 - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>死锁如何避免</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fxbird.javaeye.com">fxbird</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193921" style="color:red;">http://www.javaeye.com/topic/193921</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          除了尽量不用多个锁、减少锁的持有时间，如果避免不了一个对象要用多个锁，如何才能保证不死锁。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193921#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 17:30:00 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193921</link>
        <guid>http://www.javaeye.com/topic/193921</guid>
      </item>
          <item>
        <title>Rails 连接 mysql 问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agen-0502.javaeye.com">agen_0502</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193916" style="color:red;">http://www.javaeye.com/topic/193916</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          由于刚接触Ruby , 对于连接数据库这方面没一点经验,我试了好多次,都失败了,JavaEye 也搜索看了,google也找了很久,觉得都没找到我想要的,真是想不出什么办法,才来请教前辈.望有经验者告知,非常感谢!<br /><br />服务器是InstantRails, 我们连接的时候是否要加入数据库驱动? 连接数据库需要哪些配置文件? 如何在代码中连接数据库?  如果您愿意的话,麻烦你告知,尽量详细一点,谢谢!
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193916#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 17:20:31 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193916</link>
        <guid>http://www.javaeye.com/topic/193916</guid>
      </item>
          <item>
        <title>如何实现MSSQL数据表行列转换</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fangbiao23.javaeye.com">fangbiao23</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193879" style="color:red;">http://www.javaeye.com/topic/193879</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p id="blogtitle_fks!083071083083084068083094074065084083082068086081" class="g_w_100 g_t_wrap g_t_center g_t_bold g_t_24 g_c_pdin c07">&nbsp;</p>
<div class="g_blog_list">
<div id="blogtext_fks!083071083083084068083094074065084083082068086081" class="g_t_center g_c_pdin g_p_center c07 content" style="width: 760px;">
<p><img src="http://st.blog.163.com/style/common/htmlEditor/portrait/face/preview/face58.gif" alt="" />在做报表应用时,总是要涉及行行色色的数据操作，如题，就是一个很好的例子：</p>
<p>一、为了实现数据表行列转换，首先我们来创建一个数据表</p>
<p>CREATE TABLE MYTABLE</p>
<p>(</p>
<p>&nbsp;&nbsp; myId int identity(1,1) constraint pk_myId primary&nbsp; key,</p>
<p>&nbsp;&nbsp; bookName varchar(50) not null,</p>
<p>&nbsp;&nbsp; bookAuthor varchar(20) not null,</p>
<p>&nbsp;&nbsp; bookPubDate datetime default getdate(),<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; bookSaleA int ,</p>
<p>&nbsp;&nbsp; bookSaleB int ,<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; bookSaleC int </p>
<p>)</p>
<p>GO</p>
<p>INSERT INTO MYTABLE </p>
<p>&nbsp;&nbsp; SELECT 'Spring入门','小孟',getDate(),54,52,48 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNION ALL<br />&nbsp;&nbsp; SELECT 'Spring进阶','小孟',getDate(),64,62,58<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNION ALL<br />&nbsp;&nbsp; SELECT 'proxool进阶','小刘',getDate(),33,32,28<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNION ALL<br />&nbsp;&nbsp; SELECT '加强oracle','孟进',getDate(),61,58,58<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNION ALL<br />&nbsp;&nbsp; SELECT '中国之象','刘自明',getDate(),133,132,128<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNION ALL<br />&nbsp;&nbsp; SELECT '加强MSSQL','孟进',getDate(),51,48,38</p>
<p>GO</p>
<p>SELECT * FROM MYTABLE</p>
<p>GO</p>
<p>显示的表数据为：</p>
<p>bookName&nbsp;&nbsp;&nbsp; bookAuthor&nbsp;&nbsp;&nbsp;&nbsp; bookPubDate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bookSaleA&nbsp;&nbsp;&nbsp;&nbsp; bookSaleB&nbsp;&nbsp;&nbsp; bookSaleC<br />Spring入门&nbsp;&nbsp;&nbsp; 小孟&nbsp;&nbsp;&nbsp;&nbsp;2007-06-15 17:26:53.793&nbsp;&nbsp; 54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 48&nbsp;<br />Spring进阶&nbsp;&nbsp;&nbsp; 小孟&nbsp;&nbsp;&nbsp; 2007-06-15 17:26:53.793&nbsp;&nbsp; 64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;58&nbsp;<br />proxool进阶&nbsp;&nbsp; 小刘&nbsp;&nbsp;&nbsp; 2007-06-15 17:26:53.793&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28&nbsp;<br />加强oracle&nbsp;&nbsp;&nbsp; 孟进&nbsp;&nbsp;&nbsp; 2007-06-15 17:26:53.793&nbsp;&nbsp; 61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 58&nbsp;<br />中国之象&nbsp;&nbsp;&nbsp;&nbsp; 刘自明&nbsp;&nbsp;&nbsp;2007-06-15 17:26:53.793&nbsp;&nbsp; 133&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 128&nbsp;<br />加强MSSQL&nbsp;&nbsp;&nbsp;&nbsp; 孟进&nbsp;&nbsp;&nbsp; 2007-06-15 17:26:53.793&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;38&nbsp;</p>
<p>二、自问：如果要把bookAuthor的列数据转换为行时，应该如何实现呢？</p>
<p>&nbsp;&nbsp; <br />DECLARE @SQL VARCHAR(8000)&nbsp; --为何要定义这么大呢？当你的列记录多的时候你就知道</p>
<p>SET @SQL = 'SELECT '&nbsp; --SET 用于单行记录</p>
<p>SELECT @SQL = @SQL +&nbsp; ' CASE bookAuthor when '''+bookAuthor+''' THEN 1 END ['+bookAuthor+'] ,' FROM (SELECT DISTINCT bookAuthor FROM MYTABLE)&nbsp; AS TEMPTABLE --SELECT用于单行或者多行记录</p>
<p>SELECT @SQL = LEFT(@SQL,LEN(@SQL)-1) + 'INTO ##MYTABLETEMP FROM MYTABLE'</p>
<p>EXEC(@SQL)</p>
<p>SELECT * FROM ##MYTABLEtEMP</p>
<p>DROP TABLE ##MYTABLETEMP&nbsp;</p>
<p>GO</p>
<p>查询结果：</p>
<p>刘自明&nbsp; 孟进&nbsp; 小刘&nbsp; 小孟</p>
<p>NULL&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp; NULL&nbsp;&nbsp; 1<br />NULL&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp; NULL&nbsp;&nbsp; 1<br />NULL&nbsp;&nbsp; NULL&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL<br />NULL&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL&nbsp;&nbsp; NULL<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL&nbsp;&nbsp; NULL&nbsp;&nbsp; NULL<br />NULL&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL&nbsp;&nbsp; NULL</p>
<p>这样我们就实现了列到行的转换。</p>
<p>三、自问，既然能做到列到行的转换，那反之又如何呢？</p>
<p>我们将用列bookSaleA、bookSaleB、bookSaleC的数据转换为bookSaleAll列</p>
<p>DECLARE @SQL VARCHAR(8000)&nbsp; --为何要定义这么大呢？当你的列记录多的时候你就知道</p>
<p>SET @SQL = '' --记得哦</p>
<p>SELECT @SQL = 'SELECT&nbsp;'''+name+''' AS bookSaleAll&nbsp;FROM MYTABLE UNION ALL ' </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM&nbsp;syscolumns&nbsp;WHERE ColID LIKE 'bookSale%' ORDER BY ColID</p>
<p>SELECT @SQL = LEFT(@SQL,LEN(@SQL)-8) </p>
<p>EXEC(@SQL)</p>
<p>GO</p>
<p>注：</p>
<p>如果在列转为行时要把多行的数据压为一行，则需要使用max函数，如：</p>
<p>DECLARE @SQL VARCHAR(8000)&nbsp; --为何要定义这么大呢？当你的列记录多的时候你就知道</p>
<p>SET @SQL = 'SELECT distinct&nbsp; '&nbsp; --SET 用于单行记录</p>
<p>SELECT @SQL = @SQL +&nbsp; '<span style="color: #ff0000;">max</span>(CASE imgAppPageId when '''+imgAppPageId+''' THEN imgAppPageId else '''' END) ['+imgAppPageId+'] ,'<br />&nbsp; FROM (SELECT DISTINCT imgAppPageId FROM PageImageTable )&nbsp;&nbsp; AS TEMPTABLE --SELECT用于单行或者多行记录</p>
<p>print(@SQL)</p>
<p>SELECT @SQL = LEFT(@SQL,LEN(@SQL)-1) + 'INTO ##MYTABLETEMP FROM&nbsp; PageImageTable '</p>
<p>print(@SQL)</p>
<p>EXEC(@SQL)</p>
<p>print(@SQL)</p>
<p>SELECT *&nbsp; FROM ##MYTABLEtEMP&nbsp; </p>
<p>DROP TABLE ##MYTABLETEMP&nbsp;<br />&nbsp; </p>
</div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193879#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 13:26:43 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193879</link>
        <guid>http://www.javaeye.com/topic/193879</guid>
      </item>
          <item>
        <title>大家帮忙推荐些进阶书籍</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xuehui0423.javaeye.com">xuehui0423</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193870" style="color:red;">http://www.javaeye.com/topic/193870</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          学习了js权威指南（第四版），接下来想买几本拓展书籍来熟悉应用，麻烦大家帮我推荐几本这方面的书，<br />  Ajax,Js,css的都来几本。ajax买了ajax实战。<br />  在就是hibernate和spring 也推荐几本，我现在有深入浅出，和精通spring 2.0<br />  谢谢！
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193870#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 12:13:47 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193870</link>
        <guid>http://www.javaeye.com/topic/193870</guid>
      </item>
          <item>
        <title>netbeans不能抛出Socket异常？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hut.javaeye.com">hut</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193399" style="color:red;">http://www.javaeye.com/topic/193399</a>&nbsp;
          发表时间: 2008年05月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          昨天写个Socket,通过抛出异常来判断是否需要重连。<br />本地没有开启9000端口，<br /><pre name="code" class="java">
	public static void main(String[] args) {
            Socket socket = null;
            try {
                socket = new Socket("127.0.0.1", 9000);
            } catch (UnknownHostException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            System.out.println("socket:" + socket);
	}
</pre><br /><br />在NetBeans6.1中 运行，运行结果如下<br /><br />init:<br />deps-jar:<br />compile-single:<br />run-single:<br />socket:Socket[addr=/127.0.0.1,port=9000,localport=2012]<br />BUILD SUCCESSFUL (total time: 0 seconds)<br /><br />应该会抛出异常啊，为什么 netbeans 中调试 没有抛出异常呢？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193399#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 20:06:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193399</link>
        <guid>http://www.javaeye.com/topic/193399</guid>
      </item>
          <item>
        <title>java 反转uml后如何解释</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://spitcold.javaeye.com">spitcold</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193859" style="color:red;">http://www.javaeye.com/topic/193859</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          想搞懂这些类之间的关系，但是不得其道，有心得的教教我，万分感谢
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193859#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 11:27:39 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193859</link>
        <guid>http://www.javaeye.com/topic/193859</guid>
      </item>
          <item>
        <title>spring+hibernate3+struts2中修改数据，只修改部分数据的问题。</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://benjamin0917.javaeye.com">benjamin0917</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193248" style="color:red;">http://www.javaeye.com/topic/193248</a>&nbsp;
          发表时间: 2008年05月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          各位：<br /><br />   我单独用hibernate3的时候，修改数据的时候，例如一个表有10个字段，但是在页面上只显示5个字段，当修改一行数据的时候，我想达到的效果是：这5个字段的值进行修改，其他的5个字段保持不变。<br />   但是我今天在本地作了测试发现，如果其他5个字段都有值的话，修改得时候会全部设为null。<br />请问有没有解决方法？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193248#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 12:56:43 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193248</link>
        <guid>http://www.javaeye.com/topic/193248</guid>
      </item>
          <item>
        <title>选择那个JMS消息中间件比较好</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ll123456789.javaeye.com">ll123456789</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193851" style="color:red;">http://www.javaeye.com/topic/193851</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          现在正准备开发一个评论系统，由于访问量很大，所以准备用jms处理提交评论的过程。即用户提交评论后，用jms把提交的内容直接发布到队列后，就直接返回，由jms异步的处理向数据库插入的功能。请问大家用那个轻量级的jms中间件比较好。<br /><br /> 紧急望大家多帮忙。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193851#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 10:30:38 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193851</link>
        <guid>http://www.javaeye.com/topic/193851</guid>
      </item>
          <item>
        <title>请教Strust1ActionForm里面定义FormFile出现OutOfMemoryError</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mapgis.javaeye.com">mapgis</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193846" style="color:red;">http://www.javaeye.com/topic/193846</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          因为要做Upload功能，我在ActionForm里面定义了FormFile的属性。<br />这个Form里面还有很多其他的头部信息，明细行信息（我用LazyList还存储它）。<br />在没有加FormFile之前，我可以追加任意行数的明细行做Validation Check。<br />一旦加了FormFile之后，只要我追加20行以上就会出现如下错误：<br />java.lang.OutOfMemoryError: Java heap space<br />java.io.ByteArrayOutputStream.&lt;init>(ByteArrayOutputStream.java:59)<br />org.apache.commons.fileupload.DeferredFileOutputStream.&lt;init>(DeferredFileOutputStream.java:131)<br />org.apache.commons.fileupload.DefaultFileItem.getOutputStream(DefaultFileItem.java:558)<br />org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:406)<br />org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:193)<br />org.apache.struts.util.RequestUtils.populate(RequestUtils.java:442)<br />org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)<br />org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)<br />org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)<br />org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)<br />javax.servlet.http.HttpServlet.service(HttpServlet.java:709)<br />javax.servlet.http.HttpServlet.service(HttpServlet.java:802)<br />org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)<br />org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)<br />org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)<br />org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)<br /><br /><br /><br />请教大伙又没有碰到过这种问题。怎么解决呢？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193846#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 10:08:50 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193846</link>
        <guid>http://www.javaeye.com/topic/193846</guid>
      </item>
          <item>
        <title>struts2 急 配置問題</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xuejunjun0825.javaeye.com">xuejunjun</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193826" style="color:red;">http://www.javaeye.com/topic/193826</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          附件是我的一個簡單的工程，配了log4j，但是點擊登錄按鈕之后報404，action找不到的錯。LOG也出不了。<br />希望哪位大哥能幫忙看下，我自己找不到錯誤點了，頭暈了。謝謝啊。如果跑通了能否告知我錯那里了？我很想知道問題點在哪里。我自己已經搞了很長時間了。謝謝啊。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193826#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 07:29:52 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193826</link>
        <guid>http://www.javaeye.com/topic/193826</guid>
      </item>
          <item>
        <title>请教Tomcat对静态资源，比如html的处理方式</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yethyeth.javaeye.com">yethyeth</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193809" style="color:red;">http://www.javaeye.com/topic/193809</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          如题。<br />江湖传言：Apache对静态资源的处理能力强于Tomcat，所以想知道Tomcat如何处理静态资源的。当然Apache的处理方式也是感兴趣的地方。因为除了代码外，找不到相关资料，所以发帖。或者能提供资源链接亦可。<br /><br />3ks。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193809#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 01:00:47 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193809</link>
        <guid>http://www.javaeye.com/topic/193809</guid>
      </item>
          <item>
        <title>servlet里的dopost和doget是什么模式</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fxbird.javaeye.com">fxbird</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193552" style="color:red;">http://www.javaeye.com/topic/193552</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          是命令模式还是模板模式？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193552#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 10:36:52 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193552</link>
        <guid>http://www.javaeye.com/topic/193552</guid>
      </item>
          <item>
        <title>MyEclips 为什么不能导入一个已经存在的工程？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://deer.javaeye.com">deer</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193779" style="color:red;">http://www.javaeye.com/topic/193779</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          MyEclips 为什么不能导入一个已经存在的工程？ <br />我的操作步骤如下： <br />最后finish 是灰色的！ <br />为什么？ <br />file->import->General/Existing projects into Workspace<br />->Select root directory<br />后，finish 按钮是灰色的！
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193779#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 20:57:24 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193779</link>
        <guid>http://www.javaeye.com/topic/193779</guid>
      </item>
          <item>
        <title>jsp中使用Cookie的疑问?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://freesea.javaeye.com">freesea</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193756" style="color:red;">http://www.javaeye.com/topic/193756</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <pre name="code" class="java">
Cookie c = new Cookie("test","1");	

response.addCookie(c);

Cookie c1 = new Cookie("test2","1");	

response.addCookie(c1);

Cookie c3 = new Cookie("test","0");	

response.addCookie(c3);

</pre><br />c1死活是写不进去,c3更是不能覆盖原来test的值<br /><br />当然把 c去掉 就是1 2行，c1才生效，请问有没有办法在同一个页面中增加多个Cookie?
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193756#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 18:19:58 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193756</link>
        <guid>http://www.javaeye.com/topic/193756</guid>
      </item>
          <item>
        <title>Hibernate异常openSession()与getCurrentSession</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuanyao.javaeye.com">yuanyao</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193750" style="color:red;">http://www.javaeye.com/topic/193750</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          在之前的Hibernate学习中总会在HibernateSessionFactory中实现getSessionFactory(),之后用getCurrentSession()去获取Session.但是,在程序运行的时候抛出了异常:<br /><pre name="code" class="java">org.hibernate.HibernateException:  No  CurrentSessionContext  configured!  </pre><br />   异常信息是没有当前的Session的意思,我又仔细的看了一下代码,感觉没什么错误,一切都OK,重新部署了一下,运行还是不行,GOOGLE了一下,查看了一下Hibernate API Documentaction才知道原来是getCurrentSession()这个方法在搞鬼.之后把getCurrentSession()改成了openSession(),Ok程序跑起来了~!~~<br /><br />这两个方法的区别<br /><br />getCurrentSession():<br />   getCurrentSession()是SessionFactory接口里的一个方法, getCurrentSession()获取当前的Session,return的是当前的Session.<br /><br />openSession():<br />   openSession()也是SessionFactory接口里的一个方法, openSession()是先创建一个数据库连接,之后在这个连接的基础上打开一个Session.return的是打开的这连接.
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193750#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 17:55:50 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193750</link>
        <guid>http://www.javaeye.com/topic/193750</guid>
      </item>
          <item>
        <title>滚动字幕制作手册</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gaijing814.javaeye.com">心似海</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193739" style="color:red;">http://www.javaeye.com/topic/193739</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p>摘自：<a href="http://www.free59.cn/article/sort014/sort017/info-1580.html">http://www.free59.cn/article/sort014/sort017/info-1580.html</a></p>
<p>:滚动字幕会让很多人感到兴奋，特别是第一次使用滚动字幕时，会爱不释手。滚动字幕我也做得不少了，对它也不会兴奋了，所以现在也用得不多了。有不少朋友常问到这是怎么做的，现在做一个详细的专题，让你更全面地了解一下。&nbsp; <br />滚动字幕在FrontPage的组件里有，但是FrontPage这个软件只能支持单行文字，一出现多行文字它就无能为力了，而且它只能支持一行滚动！(如果出现只能滚动一行的情况，解决办法是把这段代码嵌入到JavaScript的document.write里面，请看下面例d的详细说明)Dreamweaver也只能用编写HTML代码的方法。所以强烈建议用记事本打开网页源代码来编辑。&nbsp; <br />1.建立第一个滚动字幕。代码： <br />&lt;marquee&nbsp;scrollAmount=2&nbsp;width=300&gt;我钟意网页树树&lt;/marquee&gt; <br /> <br />2.各参数详解： <br />a)scrollAmount。它表示速度，值越大速度越快。如果没有它，默认为6，建议设为1～3比较好。 <br />b)width和height，表示滚动区域的大小，width是宽度，height是高度。特别是在做垂直滚动的时候，一定要设height的值。 <br />c)direction。表示滚动的方向，默认为从右向左：&larr;&larr;&larr;。可选的值有right、down、up。滚动方向分别为：right表示&rarr;&rarr;&rarr;，up表示&uarr;，down表示&darr;。 <br />d)scrollDelay，这也是用来控制速度的，默认为90，值越大，速度越慢。通常scrollDelay是不需要设置的。 <br />e)behavior。用它来控制属性，默认为循环滚动，可选的值有alternate(交替滚动)、slide(幻灯片效果，指的是滚动一次，然后停止滚动)&nbsp; <br />3.实例： <br />a)如何给滚动字幕加超链接？这跟平时的超链接是完全一样的。只要在文字外面加上&lt;a&nbsp;href=***&gt;和&lt;/a&gt;就可以了。如下效果，代码是&lt;marquee&nbsp;scrollAmount=2&nbsp;width=300&gt;&lt;a&nbsp;href=http://www.cctv.com&gt;中央电视台&lt;/a&gt;&lt;/marquee&gt;，点击中央电视台就可以进入了： <br />中央电视台 <br />b)如何制作当鼠标停留在文字上，文字停止滚动？ <br />代码如： <br />&lt;marquee&nbsp;scrollAmount=2&nbsp;width=300&nbsp;onmouseover=stop()&nbsp;onmouseout=start()&gt;文字内容&lt;/marquee&gt; <br />c)交替效果。代码如： <br />&lt;marquee&nbsp;scrollAmount=2&nbsp;width=99&nbsp;behavior=alternate&gt;文字内容&lt;/marquee&gt; <br /> <br />d)多行文本向上滚动。代码如： <br />&lt;marquee&nbsp;scrollAmount=2&nbsp;width=300&nbsp;height=160&nbsp;direction=up&gt;&middot;早晨好啊！&lt;br&gt;&middot;空气好清新啊&lt;br&gt;&middot;今朝食乜好呢？&lt;p&gt;&middot;&lt;a&nbsp;href=http://www.cctv.com&gt;中央电视台&lt;/a&gt;&lt;/marquee&gt; <br /> <br />&middot;注意：如果你的网页经过了FrontPage编辑，保存之后，只能滚动一行，这时候你发现你原来的代码顺序已经变了，My&nbsp;god！解决的办法是，找出原来的代码，把它嵌入到JavaScript的document.write中即可，上述代码写为： <br />&lt;script&gt;document.write(&rsquo;&lt;marquee&nbsp;scrollAmount=2&nbsp;width=300&nbsp;height=160&nbsp;direction=up&gt;&middot;早晨好啊！&lt;br&gt;&middot;空气好清新啊&lt;br&gt;&middot;今朝食乜好呢？&lt;p&gt;&middot;&lt;a&nbsp;href=http://www.cctv.com&gt;中央电视台&lt;/a&gt;&lt;/marquee&gt;&rsquo;)&lt;/script&gt;&nbsp; <br />e)改变滚动字幕的颜色梢杂醚奖砝纯刂啤Ｈ缦滦Ч胧?lt;marquee&nbsp;scrollAmount=2&nbsp;width=300&gt;&lt;a&nbsp;style=color:CC6600&gt;我钟意网页树树！&lt;/a&gt;&lt;/marquee&gt;。 <br />我钟意网页树树！ <br />由上可以看出，HTML代码是可以随意组合的，功能强大！&lt;SCRIPT&nbsp;src="../js/gd.js"&gt;&lt;/SCRIPT&gt;</p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193739#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 17:30:05 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193739</link>
        <guid>http://www.javaeye.com/topic/193739</guid>
      </item>
          <item>
        <title>jdk+tomcat+mysql+网站(ssh框架做的系统)打包成一个安装文件</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://goby2008.javaeye.com">goby2008</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193337" style="color:red;">http://www.javaeye.com/topic/193337</a>&nbsp;
          发表时间: 2008年05月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          我想把jdk+tomcat+mysql+网站(ssh框架做的系统)打包成一个安装文件,客户只要点击安装程序就可以自动安装,然后在桌面上有一个快捷方式,点击就可以打开网站首页,进行操作. 有没有什么好的软件可以做到这样的效果呢?
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193337#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 17:00:45 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193337</link>
        <guid>http://www.javaeye.com/topic/193337</guid>
      </item>
          <item>
        <title>prototype.js</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hua6884858.javaeye.com">hua6884858</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193713" style="color:red;">http://www.javaeye.com/topic/193713</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          prototype.js 是什么?<br /><br />--------------------------------------------------------------------------------<br /><br />万一你没有使用过大名鼎鼎的 prototype.js，那么让我来告诉你，prototype.js 是由 Sam Stephenson 写的一个 javascript 类库。这个构思奇妙，而且兼容标准的类库，能帮助你轻松建立有高度互动的 Web 2.0 特性的富客户端页面。<br /><br />如果你最近尝试使用它，你大概了解到文档并不是作者的一个强项。和在我以前使用这个类库的不少开发者一样，一开始，我不得不一头扎进阅读 prototype.js 的源代码和实验它的功能中。我想，在我学习完它之后，把我学到的东西分享给大家是件不错的事。<br /><br />同时，在本文中，我也将提供一个关于这个类库提供的 objects, classes, functions, extensions 这些东东的非官方参考。<br /><br />在阅读这个文档时，熟悉 Ruby 的开发者将会注意到 Ruby 的一些内建类和本类库扩展实现之间非常相似。<br /><br /><br /><br />$(): 根据 id 获取元素 <br />$F(): 返回表单输入控件的值 <br />$A(): 转化成数组对象 <br />$H(): 转换成可枚举的 Hash 对象（与联合数组类似） <br />$R(): 构造 ObjectRange 对象 <br />Try.these(): 尝试……直到成功返回 <br />Ajax 对象<br /><br /><br />前面提到的共通方法非常好，但是面对它吧，它们不是最高级的那类东西。它们是吗？你很可能自己编写了这些甚至在你的脚本里面有类似功能的方法。但是这些方法只是冰山一角。<br /><br />我很肯定你对 prototype.js 感兴趣的原因很可能是由于它的 AJAX 能力。所以让我们解释当你需要完成 AJAX 逻辑的时候，这个包如何让它更容易。<br /><br />Ajax 对象是一个预定义对象，由这个包创建，为了封装和简化编写涉及 AJAX 功能的狡猾的代码。 这个对象包含一系列的封装 AJAX 逻辑的类。我们来看看其中几个类。<br /><br />使用 Ajax.Request 类 <br /><br />如果你不使用任何的帮助程序包，你很可能编写了整个大量的代码来创建 XMLHttpRequest 对象并且异步的跟踪它的进程，然后解析响应并处理它。当你不需要支持多于一种类型的浏览器时你会感到非常的幸运。<br /><br />使用 Ajax.Updater 类 <br />如果你的服务器的另一端返回的信息已经是 HTML 了，那么使用这个程序包中 Ajax.Updater 类将使你的生活变得更加得容易。用它你只需提供哪一个元素需要被 AJAX 请求返回的 HTML 填充就可以了，例子比我写说明的更清楚：
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193713#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 16:15:29 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193713</link>
        <guid>http://www.javaeye.com/topic/193713</guid>
      </item>
          <item>
        <title>请问如何动态切换Grid中store的请求url？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://java-mid4.javaeye.com">java_mid4</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193711" style="color:red;">http://www.javaeye.com/topic/193711</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          RT 有这样的需要 但是不知道如何搞<br />请各位指点一下
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193711#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 16:11:08 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193711</link>
        <guid>http://www.javaeye.com/topic/193711</guid>
      </item>
          <item>
        <title>我已经设置了同步．这样的程序为什么还会重复插入!</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kusoft-net.javaeye.com">kusoft.net</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193709" style="color:red;">http://www.javaeye.com/topic/193709</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <pre name="code" class="java">public class SQLMap {

	private static final String resource = "SqlMap.xml";
	private static SqlMapClient sqlMap = null;
	private static final Logger logger = Logger.getLogger(SQLMap.class);
	private static SQLMap sql = null;

	private SQLMap() {
	}

	public static SqlMapClient getSQLMap() throws SQLMapException {
		return sqlMap;
	}
         //设置同步
	public static synchronized SQLMap getInstance() throws SQLMapException {
		if (sqlMap == null) {
			Reader reader = null;
			try {
				reader = Resources.getResourceAsReader(resource);
				sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			} catch (Exception e) {
				logger.error("Create SQLMap Instance is error:" + e.getMessage());
				throw new SQLMapException(e.getMessage());
			}
		}
		if (sql == null)
			sql = new SQLMap();

		return sql;
	}
	

	public static void start() throws SQLMapException {
		try {
			if (sqlMap == null)
				getInstance();
			sqlMap.startTransaction();
		} catch (Exception e) {
			logger.error("start Transaction is error:" + e.getMessage());
			throw new SQLMapException(e.getMessage());
		}

	}

	public static void end() {
		try {
			if (sqlMap != null)
				sqlMap.endTransaction();
		} catch (Exception e) {
			logger.error("end Transaction is error:" + e.getMessage());
		}
	}


	public static Object insert(String id, Object obj) throws SQLMapException {
		try {
			if (sqlMap != null)
				return sqlMap.insert(id, obj);
		} catch (Exception e) {
			logger.error("insert(String id, Object obj) is error:" + id + ":"
					+ e.getMessage());
			throw new SQLMapException(e.getMessage());
		}
		return null;
	}

}</pre><br /><br /><br />（１）我做的自定义表存入sequence<br /><pre name="code" class="java">public final class SequenceUtil {
	
	
	/**
	 * Get next sequence
	 * @param tableName
	 * @return sequence
	 * @throws SQLException 
	 */
	@SuppressWarnings("unchecked")
	public static synchronized long nextVal(String tableName) throws SQLException{
		if(tableName==null || tableName.equals(""))
			throw new SQLException("The name of table is not null!");
		int val = 0;
		try{
			Map map = new HashMap();
			map.put("name", tableName);
			Object obj = SQLMap.queryForObject("tb_sequences.query", map);
			
			if(obj==null){
				map.put("val", 1);
				SQLMap.insert("tb_sequences.insert", map);
			}else{
				SQLMap.update("tb_sequences.update",map);
				val = (Integer)obj;
			}
			SQLMap.commit();
		}catch(SQLException e){
			throw new SQLException(e.getMessage());
		}
		return (val+1);
	}
}</pre><br /><br /><br /><br />(3)客户端在多线程调用，会重得插入ID．不能插入唯一<strong>SequenceUtil.nextVal("test")</strong><br /><pre name="code" class="java">public static void main(String[] args){
		try{
			SQLMap.start();
			int i=0;
			while(true& i&lt;10){
				Map map = new HashMap();
				map.put("name","feng");
				map.put("id",SequenceUtil.nextVal("test"));
				SQLMap.insert("test.insert", map);
				SQLMap.commit();
				i++;
			}

		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			SQLMap.end();
		}

	}</pre>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193709#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 16:05:18 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193709</link>
        <guid>http://www.javaeye.com/topic/193709</guid>
      </item>
          <item>
        <title>怎样实现form表单的序列化</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cql2008.javaeye.com">cql2008</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193674" style="color:red;">http://www.javaeye.com/topic/193674</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          怎样动态获取form的元素,或动态获得html网页中的元素。。获得后形成某种固定格式，如xml，json或自定义的格式
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193674#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 14:56:51 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193674</link>
        <guid>http://www.javaeye.com/topic/193674</guid>
      </item>
          <item>
        <title>刺激一下</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://77527.javaeye.com">77527</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193656" style="color:red;">http://www.javaeye.com/topic/193656</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          刚接触到gwt-ext 现在有个画面要做出来，实在是搞不好，附件传上，帮帮忙 谢谢了
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193656#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 14:15:27 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193656</link>
        <guid>http://www.javaeye.com/topic/193656</guid>
      </item>
          <item>
        <title>Spring声明式事务控制中AOP之方法调用?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunwinds1900.javaeye.com">sunwinds1900</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193626" style="color:red;">http://www.javaeye.com/topic/193626</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p>关于事务和嵌套事务，帖子 http://www.javaeye.com/topic/35907 说得很清楚了，可是实现细节遇到其他的问题了。<br /><br />有这样一个服务:<br /><br />public class ServiceImpl  implements Service {<br />//方法A声明成了一个REQUIRED事务，在A中调用B，B是基本插入操作，希望把B声明成一个NESTED事务，某一条B失败回滚本次B事务，<br />//全部完成能获得成功和失败的B事务条数的返回信息。<br />methodA() {<br />    for (int i, i&lt; 10 , i++){<br />        nestMethodB()  ;}<br />}<br /><br />nestMethodB() {}<br /><br />}<br /><br /><br />配置如下：<br /><br />&lt;tx:advice id="txAdvice" transaction-manager="transactionManager"&gt;<br />		&lt;!-- the transactional semantics... --&gt;<br />		&lt;tx:attributes&gt;<br />			&lt;!-- all methods starting with 'get' are read-only --&gt;<br />			&lt;tx:method name="get*" read-only="true" /&gt;<br />			&lt;!-- other methods use the default transaction settings (see below) --&gt;<br />			&lt;tx:method name="nest*" read-only="false"                        //这里是methodB<br />				propagation="NESTED" rollback-for="XXDataAccessException" /&gt;    //XXDataAccessException是自己声明抛出的异常<br />			&lt;tx:method name="*" read-only="false"<br />				propagation="REQUIRED" rollback-for="XXDataAccessException" /&gt;<br />		&lt;/tx:attributes&gt;<br />&lt;/tx:advice&gt;<br />&lt;aop:config&gt;<br />        &lt;aop:pointcut id="ServiceOperation"<br />            expression="execution(* x.y.ServiceImpl.*(..))" /&gt;       //意图是aop里面能invoke方法A和B<br />        &lt;aop:advisor advice-ref="txAdvice"<br />            pointcut-ref="ServiceOperation" /&gt;<br /> &lt;/aop:config&gt;<br /><br /> <br /><br />运行结果： 执行到方法A的时候，log显示新建了一个 PROPAGATION_REQUIRED 事务，执行到方法B的时候的时候并不会生成一个NESTED内部事务；<br /><br />本人google了一下，发现一个解释：<br /><br />在spring中创建的事务代理类并是目标类的超类,只是一个实现这目标类接口的类,该类会调用目标类的方法,所在如果一个目标类中的方法调用自身的<br />另一个事务方法,另一个方法只是作为普通方法来调用,并不会加入事务机制.<br /><br />详见： http://blog.csdn.net/sylilzy/archive/2006/06/14/796894.aspx<br /><br /><br />问题一：有没有方法能够让内部调用方法也能进行代理，增加事务控制呢？？<br /><br /><br />问题二：通过抛出异常来控制回滚，本例中每次回滚事务A然后直接结束了，如何回滚事务B继续执行下一个事务B呢？ <br />        如果catch住这个异常的话，回滚机制就不起作用了。<br /><br /><br /><br /></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193626#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 13:21:03 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193626</link>
        <guid>http://www.javaeye.com/topic/193626</guid>
      </item>
          <item>
        <title>WEBSPHERE CPU100%的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://snowflower.javaeye.com">snowflower</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193621" style="color:red;">http://www.javaeye.com/topic/193621</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          最近做一个项目采用websphere5.0,补丁打到5.1.1.7,项目中导出很多,采用JXL包,最近频繁出现100%,将线程转储后分析,如下所示,好像在CompoundFile.writeBigBlockDepot方法中挂起,后改用POI包,结果也是一样<br />不知哪位大哥可以帮帮忙,很急<br />这部分是JXL包转储来的:<br />3XMTHREADINFO      "Servlet.Engine.Transports : 1" (TID:0x10579288, sys_thread_t:0x90357F0, state:R, native ID:0x12D4) prio=5<br />4XESTACKTRACE          at jxl.write.biff.CompoundFile.writeBigBlockDepot(CompoundFile.java(Compiled Code))<br />4XESTACKTRACE          at jxl.write.biff.CompoundFile.write(CompoundFile.java:461)<br />4XESTACKTRACE          at jxl.write.biff.File.close(File.java:120)<br />4XESTACKTRACE          at jxl.write.biff.WritableWorkbookImpl.close(WritableWorkbookImpl.java:447)<br />4XESTACKTRACE          at com.dpca.gsbl.web.excel.impl.AbstractExcel.create(AbstractExcel.java:82)<br />4XESTACKTRACE          at com.dpca.gsbl.web.service.impl.BaseServiceImpl.executeQuery(BaseServiceImpl.java:590)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at java.lang.reflect.Method.invoke(Method.java(Compiled Code))<br />4XESTACKTRACE          at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:293)<br />4XESTACKTRACE          at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)<br />4XESTACKTRACE          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)<br />4XESTACKTRACE          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)<br />4XESTACKTRACE          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)<br />4XESTACKTRACE          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)<br />4XESTACKTRACE          at $Proxy6.executeQuery(Unknown Source)<br />4XESTACKTRACE          at com.dpca.gsbl.web.consume.query.WorkScrapViewQuery.export(WorkScrapViewQuery.java:228)<br />4XESTACKTRACE          at com.dpca.gsbl.web.consume.action.WorkScrapAction.query(WorkScrapAction.java:83)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at java.lang.reflect.Method.invoke(Method.java(Compiled Code))<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)<br />4XESTACKTRACE          at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XEMORENOTSHOWN     ... (more frames not shown)<br /><br />以下是POI包转储来的<br />NULL           ----------------------<br />3XMTHREADINFO      "Servlet.Engine.Transports : 2" (TID:0x10E82018, sys_thread_t:0x9176F58, state:R, native ID:0x12E8) prio=5<br />4XESTACKTRACE          at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:989)<br />4XESTACKTRACE          at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:923)<br />4XESTACKTRACE          at com.dpca.gsbl.web.excel.impl.AbstractPOIExcel.create(AbstractPOIExcel.java:65)<br />4XESTACKTRACE          at com.dpca.gsbl.web.service.impl.BaseServiceImpl.executeQuery(BaseServiceImpl.java:590)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at java.lang.reflect.Method.invoke(Method.java(Compiled Code))<br />4XESTACKTRACE          at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:293)<br />4XESTACKTRACE          at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)<br />4XESTACKTRACE          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)<br />4XESTACKTRACE          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)<br />4XESTACKTRACE          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)<br />4XESTACKTRACE          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)<br />4XESTACKTRACE          at $Proxy11.executeQuery(Unknown Source)<br />4XESTACKTRACE          at com.dpca.gsbl.web.consume.query.WorkScrapViewQuery.export(WorkScrapViewQuery.java:228)<br />4XESTACKTRACE          at com.dpca.gsbl.web.consume.action.WorkScrapAction.query(WorkScrapAction.java:83)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))<br />4XESTACKTRACE          at java.lang.reflect.Method.invoke(Method.java(Compiled Code))<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)<br />4XESTACKTRACE          at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XESTACKTRACE          at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)<br />4XESTACKTRACE          at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)<br />4XESTACKTRACE          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)<br />4XEMORENOTSHOWN     ... (more frames not shown)
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193621#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 13:08:54 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193621</link>
        <guid>http://www.javaeye.com/topic/193621</guid>
      </item>
          <item>
        <title>在linux平台上配置java运行环境</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gaozhaoxing.javaeye.com">gaozhaoxing</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193596" style="color:red;">http://www.javaeye.com/topic/193596</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          平台环境:<br />ubuntu sever 8.04<br />jre-6u6-linux-i586.bin<br /><br />配置过程:<br />(1)安装jre-6u6-linux-i586.bin<br />    root@ubuntu:/# cd  /你想要安装的目录  <br />    root@ubuntu:/home/gaozhaoxing/java/# ./jre-6u6-linux-i586.bin<br />(2)配置环境变量<br />    root@ubuntu:/etc# nano environment<br />    添加以下内容:<br />    PATH=".:/home/gaozhaoxing/java/jre1.6.0_06/bin"<br />    CLASSPATH=".:/home/gaozhaoxing/java/jre1.6.0_06/lib"<br />    JAVA_HOME="=="/home/gaozhaoxing/java/jre1.6.0_06"<br />  (3)测试<br />      root@ubuntu:/#java <br /><br />      root@ubuntu:/#javac
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193596#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 12:29:07 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193596</link>
        <guid>http://www.javaeye.com/topic/193596</guid>
      </item>
          <item>
        <title>初试在linux下部署tomcat</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gaozhaoxing.javaeye.com">gaozhaoxing</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193595" style="color:red;">http://www.javaeye.com/topic/193595</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          初试在linux下部署tomcat<br />linux下部署tomcat <br />(1)安装java环境 <br />(2)root@ubuntu:/安装tomcat目录/# ./tomcat-6.0.16 <br />(3)系统启动时tomcat自动启动的简易配置 <br />   root@ubuntu:/etc#nano rc.local <br />   在rc.local中添加脚本语句 <br />   CLASSPATH=.:/home/gaozhaoxing/java/jre1.6.0_06/lib<br />   JAVA_HOME=/home/gaozhaoxing/java/jre1.6.0_06<br />   export CLASSPATH<br />   export JAVA_HOME<br />   /tomcat-6.0.16的安装目录/bin/startup.sh<br />(4)测试<br />   /#reboot<br />   http://127.0.0.1:8080<br />   如果有tomcat主页出现那就配置成功啦
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193595#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 12:27:46 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193595</link>
        <guid>http://www.javaeye.com/topic/193595</guid>
      </item>
          <item>
        <title>关于java中构造方法的理解</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://womingdeai-126-com.javaeye.com">yanghongxing </a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193539" style="color:red;">http://www.javaeye.com/topic/193539</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          在java类中经常会有空的构造方法，有人说是会避免出错，也有人不需要，各位在开发中怎莫理解的？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193539#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 09:56:05 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193539</link>
        <guid>http://www.javaeye.com/topic/193539</guid>
      </item>
          <item>
        <title>Spring声明式事务控制中AOP之方法调用</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunwinds1900.javaeye.com">sunwinds1900</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193589" style="color:red;">http://www.javaeye.com/topic/193589</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p><span style="font-size: small;">关于事务和嵌套事务，帖子 http://www.javaeye.com/topic/35907 说得很清楚了，可是实现细节遇到其他的问题了。</span></p>
<p><span style="font-size: small;">有这样一个服务:</span></p>
<pre name="code" class="java"><span style="font-size: small;">public class ServiceImpl  implements Service {
//方法A声明成了一个REQUIRED事务，在A中调用B，B是基本插入操作，希望把B声明成一个NESTED事务，某一条B失败回滚本次B事务，
//全部完成能获得成功和失败的B事务条数的返回信息。
methodA() {
    for (int i, i&lt; 10 , i++){
        nestMethodB()  ;}
}

nestMethodB() {}

}
</span></pre>
<p><span style="font-size: small;">
&nbsp;
</span></p>
<p><span style="font-size: small;">配置如下：</span></p>
<pre name="code" class="xml"><span style="font-size: small;">&lt;tx:advice id="txAdvice" transaction-manager="transactionManager"&gt;
		&lt;!-- the transactional semantics... --&gt;
		&lt;tx:attributes&gt;
			&lt;!-- all methods starting with 'get' are read-only --&gt;
			&lt;tx:method name="get*" read-only="true" /&gt;
			&lt;!-- other methods use the default transaction settings (see below) --&gt;
			&lt;tx:method name="nest*" read-only="false"                        //这里是methodB
				propagation="NESTED" rollback-for="XXDataAccessException" /&gt;    //XXDataAccessException是自己声明抛出的异常
			&lt;tx:method name="*" read-only="false"
				propagation="REQUIRED" rollback-for="XXDataAccessException" /&gt;
		&lt;/tx:attributes&gt;
&lt;/tx:advice&gt;
&lt;aop:config&gt;
        &lt;aop:pointcut id="ServiceOperation"
            expression="execution(* x.y.ServiceImpl.*(..))" /&gt;       //意图是aop里面能invoke方法A和B
        &lt;aop:advisor advice-ref="txAdvice"
            pointcut-ref="ServiceOperation" /&gt;
 &lt;/aop:config&gt;
</span></pre>
<p><span style="font-size: small;">
&nbsp;
</span></p>
<p><span style="font-size: small;">运行结果： 执行到方法A的时候，log显示新建了一个 PROPAGATION_REQUIRED 事务，执行到方法B的时候的时候并不会生成一个NESTED内部事务；</span></p>
<p><span style="font-size: small;">本人google了一下，发现一个解释：</span></p>
<p><span style="font-size: small;">在spring中创建的事务代理类并是目标类的超类,只是一个实现这目标类接口的类,该类会调用目标类的方法,所在如果一个目标类中的方法调用自身的另一个事务方法,另一个方法只是作为普通方法来调用,并不会加入事务机制</span></p>
<p><span style="font-size: small;">详见： http://blog.csdn.net/sylilzy/archive/2006/06/14/796894.aspx</span></p>
<p><span style="font-size: small;"><br /></span></p>
<p><span style="font-size: small;">问题一：有没有方法能够让内部调用方法也能进行代理，增加事务控制呢？？</span></p>
<p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 我的想法是在aop的pointcut里面进行加强，但是资料很少，未能做出来：（</span></p>
<p><span style="font-size: small;">问题二：通过抛出异常来控制回滚，本例中每次回滚事务A然后直接结束了，如何回滚事务B继续执行下一个事务B呢？</span></p>
<p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果catch住这个异常，回滚机制就不起作用了。</span></p>
<p><span style="font-size: small;"><br /></span></p>
<p><span style="font-size: small;"><br /></span></p>
<p><span style="font-size: small;"><br /></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193589#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 12:02:58 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193589</link>
        <guid>http://www.javaeye.com/topic/193589</guid>
      </item>
          <item>
        <title>如何显示sqlserver中image字段类型的图片</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tencheer.javaeye.com">tx984471</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193199" style="color:red;">http://www.javaeye.com/topic/193199</a>&nbsp;
          发表时间: 2008年05月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          我现在在ruby中已经把图片保存到数据库中，但是读不出来，<br />我是这样写的<br />def picture<br />      @rypicture = RyPicture.find(params[:id])<br />      send_data(@rypicture.data,<br />                :filename => @rypicture.name,<br />                :type => @rypicture.content_type,<br />                :disposition => 'inline')<br />    end<br /><br />在show界面上该如何写呢？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193199#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 10:43:11 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193199</link>
        <guid>http://www.javaeye.com/topic/193199</guid>
      </item>
          <item>
        <title>初探java内存机制</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://emy.javaeye.com">Emy</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193577" style="color:red;">http://www.javaeye.com/topic/193577</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p>因为基础差，所以面对的问题都很低级<img src="../../../images/smiles/icon_sad.gif" alt="" /></p>
<p>问题的引入：</p>
<p>问题一：</p>
<p>String str1 = "abc"; <br />String str2 = "abc"; <br />System.out.println(str1==str2); //true </p>
<p>问题二：</p>
<p>String str1 =new String ("abc"); <br />String str2 =new String ("abc"); <br />System.out.println(str1==str2); // false </p>
<p>问题三：</p>
<p>String s1 = "ja";<br />String s2 = "va";<br />String s3 = "java";<br />String s4 = s1 + s2;<br />System.out.println(s3 == s4);//false<br />System.out.println(s3.equals(s4));//true</p>
<p>由于以上问题让我含糊不清，于是特地搜集了一些有关java内存分配的资料,以下是网摘：</p>
<p><strong>Java 中的堆和栈</strong><br />Java把内存划分成两种：一种是栈内存，一种是堆内存。 </p>
<p><span style="color: #ff0000;">在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配</span>。 <br /><br />&nbsp;&nbsp; 当在一段代码块定义一个变量时，Java就在栈中为这个变量分配内存空间，当超过变量的作用域后，Java会自动释放掉为该变量所分配的内存空间，该内存空间可以立即被另作他用。 <br /><br />&nbsp;&nbsp; <span style="color: #ff0000;">堆内存用来存放由new创建的对象和数组。 <br /></span><br />&nbsp;&nbsp; 在堆中分配的内存，由Java虚拟机的自动垃圾回收器来管理。 <br /><br />&nbsp;&nbsp; 在堆中产生了一个数组或对象后，还可以在栈中定义一个特殊的变量，让栈中这个变量的取值等于数组或对象在堆内存中的首地址，栈中的这个变量就成了数组或对象的引用变量。 <br /><br />&nbsp;&nbsp; 引用变量就相当于是为数组或对象起的一个名称，以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 <br />&nbsp; <br />具体的说：<br />栈与堆都是Java用来在Ram中存放数据的地方。与C++不同，Java自动管理栈和堆，程序员不能直接地设置栈或堆。 <br />&nbsp;&nbsp; &nbsp;&nbsp; Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立，它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的，堆的优势是可以动态地分配内存大小，生存期也不必事先告诉编译器，因为它是在运行时动态分配内存的，Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是，由于要在运行时动态分配内存，存取速度较慢。 <br />&nbsp;&nbsp; &nbsp;&nbsp; 栈的优势是，存取速度比堆要快，仅次于寄存器，栈数据可以共享。但缺点是，存在栈中的数据大小与生存期必须是确定的，缺乏灵活性。栈中主要存放一些基本类型的变量（,int, short, long, byte, float, double, boolean, char）和对象句柄。 <br />&nbsp;&nbsp; &nbsp;&nbsp;<span style="color: #ff0000;"> 栈有一个很重要的特殊性，就是存在栈中的数据可以共享</span>。假设我们同时定义： <br />int a = 3; <br />int b = 3； <br />编译器先处理int a = 3；首先它会在栈中创建一个变量为a的引用，然后查找栈中是否有3这个值，如果没找到，就将3存放进来，然后将a指向3。接着处理int b = 3；在创建完b的引用变量后，因为在栈中已经有3这个值，便将b直接指向3。这样，就出现了a与b同时均指向3的情况。这时，如果再令a=4；那么编译器会重新搜索栈中是否有4值，如果没有，则将4存放进来，并令a指向4；如果已经有了，则直接将a指向这个地址。因此a值的改变不会影响到b的值。要注意这种数据的共享与两个对象的引用同时指向一个对象的这种共享是不同的，因为这种情况a的修改并不会影响到b, 它是由编译器完成的，它有利于节省空间。而一个对象引用变量修改了这个对象的内部状态，会影响到另一个对象引用变量。 <br /><br />String是一个特殊的包装类数据。可以用： <br />String str = new String("abc"); <br />String str = "abc"; <br /><span style="color: #3366ff;">两种的形式来创建，第一种是用new()来新建对象的，它会在存放于堆中。每调用一次就会创建一个新的对象。 <br />而第二种是先在栈中创建一个对String类的对象引用变量str，然后查找栈中有没有存放"abc"，如果没有，则将"abc"存放进栈，并令str指向&rdquo;abc&rdquo;，如果已经有&rdquo;abc&rdquo; 则直接令str指向&ldquo;abc&rdquo;。 <br /></span><br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">比较类里面的数值是否相等时，用equals()方法；当测试两个包装类的引用是否指向同一个对象时，用==，</span>下面用例子说明上面的理论。 <br />String str1 = "abc"; <br />String str2 = "abc"; <br />System.out.println(str1==str2); //true <br />可以看出str1和str2是指向同一个对象的。 <br /><br />String str1 =new String ("abc"); <br />String str2 =new String ("abc"); <br />System.out.println(str1==str2); // false <br /><span style="color: #ff00ff;">用new的方式是生成不同的对象。每一次生成一个</span>。 <br />&nbsp;&nbsp; 因此用第二种方式创建多个&rdquo;abc&rdquo;字符串,在内存中其实只存在一个对象而已. 这种写法有利与节省内存空间. 同时它可以在一定程度上提高程序的运行速度，因为JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。而对于String str = new String("abc")；的代码，则一概在堆中创建新对象，而不管其字符串值是否相等，是否有必要创建新对象，从而加重了程序的负担。 <br />&nbsp;&nbsp; 另一方面, 要注意: 我们在使用诸如String str = "abc"；的格式定义类时，总是想当然地认为，创建了String类的对象str。担心陷阱！对象可能并没有被创建！而可能只是指向一个先前已经创建的对象。只有通过new()方法才能保证每次都创建一个新的对象。由于String类的immutable性质，当String变量需要经常变换其值时，应该考虑使用StringBuffer类，以提高程序效率。<br /><br /><br />java中内存分配策略及堆和栈的比较 <br />2.1 内存分配策略 <br />按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. <br />静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求. <br />栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到运行的时候才能够知道,但是规定在运行中进入一个程序模块时,必须知道该程序模块所需的数据区大小才能够为其分配内存.和我们在数据结构所熟知的栈一样,栈式存储分配按照先进后出的原则进行分配。 <br />静态存储分配要求在编译时能知道所有变量的存储要求,栈式存储分配要求在过程的入口处必须知道所有的存储要求,而堆式存储分配则专门负责在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配,比如可变长度串和对象实例.堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放. <br /><br />2.2 堆和栈的比较 <br />上面的定义从编译原理的教材中总结而来,除静态存储分配之外,都显得很呆板和难以理解,下面撇开静态存储分配,集中比较堆和栈: <br />从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的，栈主要是用来执行程序的.而这种不同又主要是由于堆和栈的特点决定的: <br />在编程中，例如C/C++中，所有的方法调用都是通过栈来进行的,所有的局部变量,形式参数都是从栈中分配内存空间的。实际上也不是什么分配,只是从栈顶向上用就行,就好像工厂中的传送带(conveyor belt)一样,Stack Pointer会自动指引你到放东西的位置,你所要做的只是把东西放下来就行.退出函数的时候，修改栈指针就可以把栈中的内容销毁.这样的模式速度最快, 当然要用来运行程序了.需要注意的是,在分配的时候,比如为一个即将要调用的程序模块分配数据区时,应事先知道这个数据区的大小,也就说是虽然分配是在程序运行时进行的,但是分配的大小多少是确定的,不变的,而这个"大小多少"是在编译时确定的,不是在运行时. <br />堆是应用程序在运行的时候请求操作系统分配给自己内存，由于从操作系统管理的内存分配,所以在分配和销毁时都要占用时间，因此用堆的效率非常低.但是堆的优点在于,编译器不必知道要从堆里分配多少存储空间，也不必知道存储的数据要在堆里停留多长的时间,因此,用堆保存数据时会得到更大的灵活性。事实上,面向对象的多态性,堆内存分配是必不可少的,因为多态变量所需的存储空间只有在运行时创建了对象之后才能确定.在C++中，要求创建一个对象时，只需用 new命令编制相关的代码即可。执行这些代码时，会在堆里自动进行数据的保存.当然，为达到这种灵活性，必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间！这也正是导致我们刚才所说的效率低的原因,看来列宁同志说的好,人的优点往往也是人的缺点,人的缺点往往也是人的优点(晕~). <br /><br />2.3 JVM中的堆和栈 <br />JVM是基于堆栈的虚拟机.JVM为每个新创建的线程都分配一个堆栈.也就是说,对于一个Java程序来说，它的运行就是通过对堆栈的操作来完成的。堆栈以帧为单位保存线程的状态。JVM对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。 <br />我们知道,某个线程正在执行的方法称为此线程的当前方法.我们可能不知道,当前方法使用的帧称为当前帧。当线程激活一个Java方法,JVM就会在线程的 Java堆栈里新压入一个帧。这个帧自然成为了当前帧.在此方法执行期间,这个帧将用来保存参数,局部变量,中间计算过程和其他数据.这个帧在这里和编译原理中的活动纪录的概念是差不多的. <br />从Java的这种分配机制来看,堆栈又可以这样理解:堆栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域，该区域具有先进后出的特性。 <br />每一个Java应用都唯一对应一个JVM实例，每一个实例唯一对应一个堆。应用程序在运行中所创建的所有类实例或数组都放在这个堆中,并由应用所有的线程共享.跟C/C++不同，Java中分配堆内存是自动初始化的。Java中所有对象的存储空间都是在堆中分配的，但是这个对象的引用却是在堆栈中分配,也就是说在建立一个对象时从两个地方都分配内存，在堆中分配的内存实际建立这个对象，而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。</p>
<p>&nbsp;</p>
<p>&nbsp;从上面的讲述中大概明白是了最初三个问题怎么回事。<span style="font-size: medium; color: #993366;">希望高人能再补充下您觉得重要的知识点，谢谢</span></p>
<p>谢谢java明考了我这么一个问题<img src="../../../images/smiles/icon_cry.gif" alt="" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193577#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 11:24:14 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193577</link>
        <guid>http://www.javaeye.com/topic/193577</guid>
      </item>
      </channel>
</rss>
