<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>惊水中鱼，梦想开拓创新编程之旅！</title>
    <description>我的幸福公司是一个目标，一根直线，一个yes,一个no!</description>
    <link>http://voff12.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>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/149169" style="color:red;">http://voff12.javaeye.com/blog/149169</a>&nbsp;
          发表时间: 2007年12月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有一查询窗口（比如google)，用户每天会输入很多关键词(假定已中文分词），试设计一数据结构（Java)，统计一下今天(或一个月）的前10个最热的热门关键词（去掉干扰词：,sex,郁闷，无法，为什么...)，并分析其效率。<br />备注：干扰词可自由添加，用户输入词语不限。不能使用数据库。<br />用户前后输入关键词50或500000个：<br />举例：<br />memcached使用<br />Android<br />java安全<br />yahoo<br />sex<br />baidu<br />火箭<br />姚明<br />易建联<br />创业<br />楚留香传奇<br />放假通知<br />过年是那一天<br />ruby缓存<br />hibernate适用性<br />......<br />spring<br />（建议JavaEye也提供这一功能，统计出热门搜索关键词）
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/149169#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 18 Dec 2007 16:32:22 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/149169</link>
        <guid>http://voff12.javaeye.com/blog/149169</guid>
      </item>
      <item>
        <title>jsp参数过滤防注入的解决方法</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/123145" style="color:red;">http://voff12.javaeye.com/blog/123145</a>&nbsp;
          发表时间: 2007年09月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          首先注入的类型分为参数数字型注入，参数字浮型注入，搜索框注入三种。<br />防注入的方法<br />1）参数过滤。<br />2）sql语句添加参数用占位符。<br /><br /><pre name="code" class="java">public static boolean sql_inj(String str) 
{
String inj_str = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,";
String inj_stra[] = split(inj_str,"|");
for (int i=0 ; i &lt; inj_stra.length ; i++ )
{
if (str.indexOf(inj_stra)>=0)
{
return true;
}
}
return false;
}

jsp中调用该函数检查是否包函非法字符
&lt;%
if(request.getParameter("userID") != null)
userID = request.getParameter("userID").trim();

if (StringUtil.sql_inj(userID) || StringUtil.sql_inj(pwd)){
%>
&lt;Script Language=javascript>alert('参数中包含非法字符！');history.back(-1);&lt;/Script>" ;
&lt;%
}else{
……
}%></pre>
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/123145#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Sep 2007 10:02:44 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/123145</link>
        <guid>http://voff12.javaeye.com/blog/123145</guid>
      </item>
      <item>
        <title>解决tomcat下的URL中文乱码问题的方法：</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/122957" style="color:red;">http://voff12.javaeye.com/blog/122957</a>&nbsp;
          发表时间: 2007年09月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          解决tomcat下的URL中文乱码问题的方法：<br />1）tomcat下的conf/server.xml<br />两处加上URIEncoding="UTF-8"<br />如下：<br /><pre name="code" class="java">  &lt;Connector
port="8080"               maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/></pre><br /><br />另一处：这一处很关键，因为如果与apache结合时，端口转发时也要编码成UTF-8<br /><pre name="code" class="java">    &lt;Connector port="8009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="UTF-8" /></pre><br />2）在URLEncoder.encode中指明用UTF-8编码。<br /><pre name="code" class="java">&lt;a href=tag.jsp?tag=&lt;%=URLEncoder.encode(blog.getTags(),"UTF-8")%>>&lt;strong>&lt;font color=red>&lt;%=blog.getTags() %>
解码时直接用
java.net.URLDecoder.decode(request.getParameter("tag"));即可解决乱码问题！</pre>
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/122957#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Sep 2007 17:30:54 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/122957</link>
        <guid>http://voff12.javaeye.com/blog/122957</guid>
      </item>
      <item>
        <title>Java Interview Questions</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/99123" style="color:red;">http://voff12.javaeye.com/blog/99123</a>&nbsp;
          发表时间: 2007年07月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          In this days,I find lots of Java Interview Questions in chinese on the website,but is always the same.Then i find the origin Java Interview Questions in english.<br />The website is :<br />http://www.allapplabs.com/interview_questions/java_interview_questions.htm<br />http://www.roseindia.net/interviewquestions/corejava.shtml
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/99123#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 08 Jul 2007 21:59:15 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/99123</link>
        <guid>http://voff12.javaeye.com/blog/99123</guid>
      </item>
      <item>
        <title>英语听力口语提高的好方式---podcast</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/97868" style="color:red;">http://voff12.javaeye.com/blog/97868</a>&nbsp;
          发表时间: 2007年07月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          个人觉得学英语最重要的两点是要听得懂对方的话，另一方面是要能自由表达自己的思想。第一个要点，当然就是多听。第二个要点就是多练习与实战。最近发现了一个好的获取英语学习资源的方式---目前流行的podcast形式的英语资料。<pre name="code" class="java">现在很多媒体公司都在将自己的音频视频以podcast的方式发布，目前以音频文件为主（mp3）。如：新英格兰杂志、自然、科学、美国国家广播电台等，会越来越多的。以后，随时会有海量的最新信息等你下载。</pre><br />比如princeton大学：http://www.princeton.edu/newmedia/podcast/2006.xml<br /><br />关于podcast的维基介绍：<br /><a href="http://en.wikipedia.org/wiki/Podcasting" target="_blank">http://en.wikipedia.org/wiki/Podcasting</a><br />简言之，<br />从词源上讲：<br />pod-：源于apple的iPod，因为podcast技术刚出现的时候，iPod正热销，大家都用它听podcast。<br />-cast：源于broadcast，即广播之意。<br /><br />从意思上讲：<br />podcaast有三要素：一个音频视频提供者、一个音频视频下载软件、和一个音频视频更新说明网址。<br />整个流程是：<br />1. 提供者发布音频视频文件，然后<br />2. 提供者在更新说明网址上作出相应更新，更新中说明软件到哪里去下载软件<br />3. 下载软件自动按照用户指定的时间间隔，去读取更新说明网页，一旦发现有更新就立即将音频视频文件下载到用户的硬盘上。<br /><br /><div class="quote_title">引用</div><div class="quote_div">Podcast的关键是更新网址，英文叫RSS feed。说是网址，其实是一个XML文件，告诉下载软件到哪里去下载文件，并随时更新。软件按照RSS协议对该网页进行解读。</div><br />先以nature，自然，为例：<br />http://www.nature.com/nature/podcast/rss/nature.xml<br /><br />个人觉得使用podcast有几个好处：<br /><strong>买一个1G以上的mp3或ipod，把ipod里的资源放到里面，随时可以听到地道，纯正的英语，特别是大学里的podcast有很多教授的演讲，比较系统，同时思考价值比较大。</strong><br /><br />如果你想以podcast方式来学习英语：<br /><span style="color: red">第一步</span>：下载苹果的iTune软件，<br />华军下载：<br />http://nj.onlinedown.net/soft/21303.htm<br /><br /><span style="color: red">第二步</span>：google podcast的资料<br />可以用以下关键词：<br />inurl:edu filetype:xml podcast <br />比如：http://podcast.mansfield.edu/xml/mupodcast.xml<br />http://feeds.feedburner.com/ets<br />通过听故事来学习英语<br />feed://feeds.feedburner.com/EnglishAsASecondLanguagePodcast<br />这是一家针对英语为非母语人士的英语学习网站，播客是洛杉矶一位大学教授Dr. Jeff McQuillan。读音清晰、容易听懂。<br />http://feeds.feedburner.com/toeflpodcast<br />对于TOEFL考试有实用价值，<br /><br /><span style="color: red">第三步</span>，菜单中的 高级－订购Podcast，将google下来的xml连接放进去。<br />然后，点击链接后软件会自动下载podcast,大部分是以mp3为主。就可以收听了。<br />如图<br /><img src="http://voff12.javaeye.com/upload/picture/pic/4213/793e70af-ce13-47de-810a-628caab6482f.jpg" /><br /><img src="http://voff12.javaeye.com/upload/picture/pic/4214/e40c72b1-2573-4abd-87b9-95db0c4a53e0.jpg" />
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/97868#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Jul 2007 21:47:32 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/97868</link>
        <guid>http://voff12.javaeye.com/blog/97868</guid>
      </item>
      <item>
        <title>spring+hibernate配置c3p0无法释放数据库连接 </title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/87313" style="color:red;">http://voff12.javaeye.com/blog/87313</a>&nbsp;
          发表时间: 2007年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          弄了3天，还是没有搞定。<br />配置：<br />winxp+tomcat5.0.28+hibernate3.1+spring1.2.6+struts1.0+mysql5.0.17,做了一个小blog。没有配置连接池时，运转良好。用c3p0配置后，每次都会出现3或者5个新连接。然后发现数据库连接不能释放。出现很多sleep连接。直到全部连接占满。<br />出现：错误表现：<br /><pre name="code" class="java">javax.servlet.ServletException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Connections could not be acquired from the underlying database!; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database</pre><br />数据库的表现是：<br /><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/voff12/pool1.jpg" /><br /><strong>类似的问题，但没有都没有很好的解决方法。</strong><br /><div class="quote_title">引用</div><div class="quote_div">06-21-2006 spring论坛一问题。<br /><a href="http://forum.springframework.org/showthread.php?t=26124" target="_blank">http://forum.springframework.org/showthread.php?t=26124</a><br />JavaEye<br />求助,Spring+Hibernate连接池无法释放问题,贴出详细代码 <br /><a href="http://www.javaeye.com/topic/32378" target="_blank">http://www.javaeye.com/topic/32378</a></div>下面是applicationContext.xml的配置：<br /><pre name="code" class="java">&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

&lt;beans>

&lt;!-- for properties files -->
 &lt;bean id="propertyConfigurer"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  &lt;property name="locations">
   &lt;list>
    &lt;value>classpath:c3p0.properties&lt;/value>
   &lt;/list>
  &lt;/property>
 &lt;/bean>

&lt;!-- for dataSource -->
&lt;bean id="dataSource"  class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  &lt;property name="driverClass" value="${jdbc.driver}" />
  &lt;property name="jdbcUrl" value="${jdbc.url}" />

  &lt;property name="properties">
   &lt;props>
    &lt;prop key="c3p0.minPoolSize">${hibernate.c3p0.minPoolSize}&lt;/prop>
    &lt;prop key="hc3p0.maxPoolSize">${hibernate.c3p0.maxPoolSize}&lt;/prop>
    &lt;prop key="hc3p0.timeout">${hibernate.c3p0.timeout}&lt;/prop>
    &lt;prop key="c3p0.max_statement">${hibernate.c3p0.max_statement}&lt;/prop>
    &lt;prop key="user">${jdbc.username}&lt;/prop>
    &lt;prop key="password">${jdbc.password}&lt;/prop>
    &lt;prop key="c3p0.testConnectionOnCheckout">true&lt;/prop>
   &lt;/props>
  &lt;/property>
 &lt;/bean>

	
	&lt;bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

		&lt;property name="dataSource">
			&lt;ref bean="dataSource" />
		&lt;/property>
		&lt;property name="mappingResources">
            &lt;list>
                &lt;value>com/voff/hibernate/Blog.hbm.xml&lt;/value>
            &lt;/list>
        &lt;/property>
		&lt;property name="hibernateProperties">
			&lt;props>
				&lt;prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				&lt;/prop>
				&lt;prop key="hibernate.show_sql">
				true
				&lt;/prop>
				&lt;prop key="hibernate.connection.provider_class">
                org.hibernate.connection.C3P0ConnectionProvider
               &lt;/prop>
			&lt;/props>
		&lt;/property>
	&lt;/bean>
	
	 &lt;!-- transactionManager -->
	 &lt;bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        &lt;property name="sessionFactory">
            &lt;ref bean="sessionFactory"/>
        &lt;/property>
    &lt;/bean>
    
    &lt;bean id="BlogDao" class="com.voff.dao.BlogDaoimpl">
        &lt;property name="sessionFactory">
            &lt;ref bean="sessionFactory"/>
        &lt;/property>
    &lt;/bean>
    
    	&lt;!-- spring dao proxy -->
    &lt;bean id="BlogDaoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        &lt;property name="transactionManager">
            &lt;ref bean="transactionManager"/>
        &lt;/property>
        &lt;property name="proxyInterfaces">
            &lt;list>
                &lt;value>com.voff.dao.BlogDao&lt;/value>
            &lt;/list>
        &lt;/property>
        &lt;property name="target">
            &lt;ref bean="BlogDao"/>
        &lt;/property>
        &lt;property name="transactionAttributes">
            &lt;props>
                &lt;prop key="insert">PROPAGATION_REQUIRED&lt;/prop>
                &lt;prop key="save*">PROPAGATION_REQUIRED&lt;/prop>
                &lt;prop key="update*">PROPAGATION_REQUIRED&lt;/prop>
                &lt;prop key="find*">PROPAGATION_REQUIRED&lt;/prop>
                &lt;prop key="*">PROPAGATION_REQUIRED,readOnly&lt;/prop>   
            &lt;/props>
        &lt;/property>
    
    &lt;/bean>
    
	&lt;/beans></pre><br />c3p0.properties的配置是：<br /><pre name="code" class="java">jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/spring?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=

hibernate.c3p0.minPoolSize=5
hibernate.c3p0.maxPoolSize=20
hibernate.c3p0.timeout=100
hibernate.c3p0.max_statement=50</pre><br /><br />BlogDaoimpl的代码是：<br /><pre name="code" class="java">
package com.voff.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.voff.hibernate.Blog;



public class BlogDaoimpl extends HibernateDaoSupport implements BlogDao{

	public void addblog(Blog blog) {
		getHibernateTemplate().save(blog);
		
		
	}

	public void delblog(int id) {

		Object blog=getHibernateTemplate().load(Blog.class,id);    
		 getHibernateTemplate().delete(blog); 

		
	}

	public void updateblog(Blog blog) {
		getHibernateTemplate().update(blog);

		
	}
	
	public Blog getblog(int id){
		return (Blog) getHibernateTemplate().get(Blog.class,id);
	}
	
	
   public int Totallimitblog(int caid,String bauthor){
	   String sql = "from Blog where cateid='"+caid+"' and bauthor ='"+bauthor+"'";
		  List total = getHibernateTemplate().find(sql);

		return total.size();
   }
	
	public ArrayList showblog(int firstRow,int maxRow,int caid,String bauthor){
		List   list=new   ArrayList();   

		  Session   session  =  getHibernateTemplate().getSessionFactory().openSession();   
		  Query   query   =session.createQuery("from Blog where cateid='"+caid+"' and bauthor ='"+bauthor+"' order by blogid desc");   
		  query.setFirstResult(firstRow);   
		  query.setMaxResults(maxRow);   
		  list=query.list();  
		  session.flush();
		  session.close();
		  return   (ArrayList) list;
	}




}</pre><br />请各位高手帮我看看，到底是什么原因（连接池问题，还是代码问题（不用连接池运转良好）导致数据库sleep连接不能释放。谢谢！
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/87313#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Jun 2007 10:05:34 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/87313</link>
        <guid>http://voff12.javaeye.com/blog/87313</guid>
      </item>
      <item>
        <title>用hibernate竟然会把tomcat“干掉”，真是奇怪</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/66932" style="color:red;">http://voff12.javaeye.com/blog/66932</a>&nbsp;
          发表时间: 2007年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: red">问题所在：<br />用struts1.0+hibernate3.1（mysql数据库）第一次写了一个简单的小网站。解决了很多很多问题后，最后卡在tomcat“崩溃"上。<br />tomcat启动后，几小时内可以正常运行。但几个小时后，点击连接，或访问主页时，进不去。也不报错，处理36%状况(1%变至38%)不动。。</span><br />这种情况下关闭tomcat，重启tomcat有问题。重启时显示tomcat已启动。<br /><br /><br /><span style="color: red">运行环境配置</span>：<br />运行环境配置<br />1）apache2.2.4+tomcat5.0.28+redhat9.0+jkd1.5.0_09<br />2)配置文件如下：<br /><pre name="code" class="java">
LoadModule jk_module modules/mod_jk.so

&lt;IfModule mod_jk.c>
JkWorkersFile "/usr/local/apache/conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel warn

#JkMount /jsp-examples worker1
#JkMount /jsp-examples/* worker1
# Map in the Ozibug webapp
JkMount /yahoo/* worker1

&lt;/IfModule>

&lt;IfModule mod_limitipconn.c>
 &lt;Location /yahoo>
    MaxConnPerIP 1000
 &lt;/Location>
&lt;/IfModule>
</pre><br /><br />apache的conf下workers.properties配置<br /><pre name="code" class="java">
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
</pre><br /><br /><br /><br /><br />原因分析与解决尝试：<br />1）个人认为可以是hibernate连接池有问题.google一下，采用了三个方案（默认，c3p0，proxool)但发现全部有“缺点”（可能还未懂配置的含义）。用proxool出现显示不稳定的情况。用用c3p0连接池，解决了显示不稳定的问题，但使用几个小时后，竟会将tomcat弄“崩溃”。用户不能访问网页。错误消息也看不到。网页进行到38%的时候，竟然不动了。<br />2）在tomcat不能访问情况下，apache上的php网站仍能正常运行。tomcat问题。把tomcat从5.5.20换成了5.0.28也解决不了问题.<br /><br /><br /><pre name="code" class="java">&lt;?xml version='1.0' encoding='UTF-8'?>
&lt;!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

&lt;!-- Generated by MyEclipse Hibernate Tools.                   -->
&lt;hibernate-configuration>

&lt;session-factory>
	&lt;property name="connection.username">root&lt;/property>
	&lt;property name="connection.password">&lt;/property>
	&lt;property name="connection.url">
		jdbc:mysql://localhost/backup?useUnicode=true&amp;characterEncoding=UTF-8
	&lt;/property>
	&lt;property name="dialect">
		org.hibernate.dialect.MySQLDialect
	&lt;/property>
	&lt;property name="myeclipse.connection.profile">Mysql&lt;/property>
	&lt;property name="connection.driver_class">
		com.mysql.jdbc.Driver
	&lt;/property>

	&lt;!-- Echo all executed SQL to stdout -->
	&lt;property name="show_sql">true&lt;/property>
	&lt;property name="hibernate.jdbc.fetch_size">50&lt;/property>
	&lt;property name="hibernate.jdbc.batch_size">25&lt;/property>

   &lt;property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider&lt;/property>
  &lt;property name="hibernate.c3p0.max_size">20&lt;/property>
  &lt;property name="hibernate.c3p0.min_size">5&lt;/property>
  &lt;property name="hibernate.c3p0.timeout">15000&lt;/property>
  &lt;property name="hibernate.c3p0.max_statements">100&lt;/property>
  &lt;property name="hibernate.c3p0.idle_test_period">120&lt;/property>
  &lt;property name="hibernate.c3p0.acquire_increment">2&lt;/property>
  &lt;property name="hibernate.c3p0.validate">true&lt;/property>

	&lt;!-- mapping resource="com/voff/News.hbm.xml" /-->
	&lt;mapping resource="com/voff/News.hbm.xml" />
	&lt;mapping resource="com/voff/User.hbm.xml" />
	&lt;mapping resource="com/voff/Comment.hbm.xml" />
	&lt;mapping resource="com/voff/Category.hbm.xml" />
	&lt;mapping resource="com/voff/Pk.hbm.xml" />
	&lt;mapping resource="com/voff/Qa.hbm.xml" />
	&lt;mapping resource="com/voff/Logs.hbm.xml" />
&lt;/session-factory>

&lt;/hibernate-configuration></pre><br /><br />最后感叹一下：<br />java的开发速度真是折磨人（java菜鸟）。php快捷稳定高效，开发速度又快，真是哀叹。希望自己快点把这个问题解决。
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/66932#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 31 Mar 2007 15:25:47 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/66932</link>
        <guid>http://voff12.javaeye.com/blog/66932</guid>
      </item>
      <item>
        <title>关于hibernate隔夜问题</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/62886" style="color:red;">http://voff12.javaeye.com/blog/62886</a>&nbsp;
          发表时间: 2007年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近用hibernate作持久层（mysql)，做了一个小网站，用tomcat+apache融合起来运行(redhat9.0)。<br />出现了三个问题，想请教各位高手如何解决？<br />1)<span style="color: red">hibernate隔夜问题</span>:发现当天运行得很好，但第二天早上一来，就出现了问题。网页里的数据不能显示出来，只有当再次发贴时，才显示出来。<br /><br />2)第二个问题是：有时发一个贴时，点击浏览时，要好久（1-2分钟）才能浏览，但不是当天发的贴，瞬间就可以查看，不知道是什么回事？<br /><br />3）第三个问题是：点击更新时，不同步数据库，用了flush但更新后，还是出现原来的数据？不知道如何解决？<br /><br />谢谢！<br /><br /><pre name="code" class="java"> &lt;?xml version="1.0" encoding="UTF-8"?>
&lt;!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

&lt;hibernate-mapping>
 
    &lt;class name="com.voff.News" table="news">
        &lt;id name="nid">
            &lt;generator class="increment"/> 
        &lt;/id>
        &lt;property name="ncontent" /> 
        &lt;property name="hits" />
        &lt;property name="nauthor"/> 
        &lt;property name="ntitle"/> 
        &lt;property name="time"/>
        &lt;property name="iftop"/> 
        &lt;property name="ifshow"/> 
        &lt;property name="cateid"/>
        &lt;property name="lastupdate"/>
        
    &lt;/class>

&lt;/hibernate-mapping> </pre><br /><br /><pre name="code" class="java">&lt;?xml version='1.0' encoding='UTF-8'?>
&lt;!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

&lt;!-- Generated by MyEclipse Hibernate Tools.                   -->
&lt;hibernate-configuration>

&lt;session-factory>
	&lt;property name="connection.username">root&lt;/property>
	&lt;property name="connection.password">&lt;/property>
	&lt;property name="connection.url">
		jdbc:mysql://localhost/news?useUnicode=true&amp;characterEncoding=UTF-8
	&lt;/property>
	&lt;property name="dialect">
		org.hibernate.dialect.MySQLDialect
	&lt;/property>
	&lt;property name="myeclipse.connection.profile">Mysql&lt;/property>
	&lt;property name="connection.driver_class">
		com.mysql.jdbc.Driver
	&lt;/property>

	&lt;!-- Echo all executed SQL to stdout -->
	&lt;property name="show_sql">true&lt;/property>


	&lt;property name="c3p0.min_size">5&lt;/property> 
    &lt;property name="c3p0.max_size">30&lt;/property> 
    &lt;property name="c3p0.time_out">1800&lt;/property> 
    &lt;property name="c3p0.max_statement">50&lt;/property> 
	&lt;property name="connection.pool_size">1&lt;/property>

	
	&lt;mapping resource="com/voff/News.hbm.xml" />
	&lt;mapping resource="com/voff/User.hbm.xml" />
	&lt;mapping resource="com/voff/Comment.hbm.xml" />
	&lt;mapping resource="com/voff/Category.hbm.xml" />
	&lt;mapping resource="com/voff/Pk.hbm.xml" />
	&lt;mapping resource="com/voff/Qa.hbm.xml" />
	&lt;mapping resource="com/voff/Logs.hbm.xml" />
&lt;/session-factory>

&lt;/hibernate-configuration></pre><br />我的hibernate配置,google了一下，但还是没有解决问题。继续求助！
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/62886#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 Mar 2007 09:07:44 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/62886</link>
        <guid>http://voff12.javaeye.com/blog/62886</guid>
      </item>
      <item>
        <title>hiberate奇怪的问题，tomcat重启后，表内所有数据消失，重新插数据。</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/52024" style="color:red;">http://voff12.javaeye.com/blog/52024</a>&nbsp;
          发表时间: 2007年02月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          问题为：<br />hibernate能正常向mysql数据库的表插入数据。但每次一tomcat重启后，所有数据都消失了，插入的数据又是为新的数据。不知这是什么原因？<br />如果这样的话，所有数据都不是连续的，只要tomcat重启后，之前所有的数据都会消失<img src="/images/smiles/icon_confused.gif"/>，那这样就没有意义了。不知道出了什么问题。<br />甚至更有趣的是，连改动的mysql表属性也会变还原。<br /><br /><br />总结问题关键字：hibernate tomcat重启，一查：<br />初出分析为：<br />&lt;property name="hbm2ddl.auto">create&lt;/property>的设定原因。可不知道这句是什么意思？<br /><br />javaeyer们能否指点一下。我再去google一下。谢谢了。
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/52024#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 03 Feb 2007 19:16:49 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/52024</link>
        <guid>http://voff12.javaeye.com/blog/52024</guid>
      </item>
      <item>
        <title>Struts在tomcat下的尝试</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/48831" style="color:red;">http://voff12.javaeye.com/blog/48831</a>&nbsp;
          发表时间: 2007年01月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          struts是典型的MVC模式。不知这种模式的优势在那里？<br />今天来学习一下。<br /><br />三个配置文件。<br />web.xml<br />struts-config.xml<br />validation.xml<br /><br />二个类文件<br /><br />LoginForm.java<br />LoginAction.java<br /><br />一个消息资源文件<br />*.ApplicationResources_zh.properties<br /><br />一个login.jsp界面
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/48831#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 20 Jan 2007 20:53:55 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/48831</link>
        <guid>http://voff12.javaeye.com/blog/48831</guid>
      </item>
      <item>
        <title>hibernate在tomcat5.5下成功！</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/48635" style="color:red;">http://voff12.javaeye.com/blog/48635</a>&nbsp;
          发表时间: 2007年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">&lt;%@ page language="java" contentType="text/html;charset=GB2312"%> 
&lt;%@ page import="org.hibernate.*,org.hibernate.cfg.*,ch03.hibernate.HibernateUtil,ch03.hibernate.User"%>

  
   &lt;%
          try{
         Session ssession;
            ssession = HibernateUtil.currentSession();
            Transaction tx= ssession.beginTransaction();
			for(int i=0;i&lt;20;i++){
           	User user = new User();
			
			user.setUsername("Hibernate");
			user.setPassword("hello110");
			user.setEmail("chen@163.com");
            ssession.save(user);
            }
            tx.commit();
			out.println("ok");
 
            HibernateUtil.closeSession();
            }catch(HibernateException e){
            }
            


     
   %> </pre><br />测试页面。<br />总结：<br />1）配置好Context.xml放至META-INF下。tomcat5.5下不同于以前。<br />2）hibernate.cfg.xml的配置只用一个简单的。<br /> &lt;property name="connection.datasource">java:comp/env/jdbc/chen&lt;/property>即行。测试。<br />3）编写HibernateUtil类，做为初如化类。<br />4）要加hibernate的包类加载到WEB-INF/lib下，才能正常使用。<br />备注：<br />1)在tomcat下能运行，并不意味可以在java Test能运行。（待检验）
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/48635#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 19 Jan 2007 23:23:38 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/48635</link>
        <guid>http://voff12.javaeye.com/blog/48635</guid>
      </item>
      <item>
        <title>hibernate在tomcat下的尝试2</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/48593" style="color:red;">http://voff12.javaeye.com/blog/48593</a>&nbsp;
          发表时间: 2007年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Cannot create JDBC driver of class '' for connect URL 'null'<br />的解决方案：<br />如果是tomcat5.5，则不能按以下方法配置。<br /><pre name="code" class="java">
&lt;Resource name="jdbc/MYDS" auth="Container" type="javax.sql.DataSource"/>
   &lt;ResourceParams name="jdbc/chen">
      &lt;parameter>
         &lt;name>username&lt;/name>
         &lt;value>root&lt;/value>
      &lt;/parameter>
      &lt;parameter>
         &lt;name>password&lt;/name>
         &lt;value>&lt;/value>
      &lt;/parameter>
      &lt;parameter>
         &lt;name>driverClassName&lt;/name>
         &lt;value>com.mysql.jdbc.Driver&lt;/value>
      &lt;/parameter>
      &lt;parameter>
         &lt;name>url&lt;/name>
         &lt;value>jdbc:mysql://localhost/voff&lt;/value>
      &lt;/parameter>
   &lt;/ResourceParams>
&lt;/Context>

</pre><br /><br />应该按以下的方式配置。<br /><pre name="code" class="java">

&lt;Resource
   name="jdbc/chen"
   auth="Container"
   type="javax.sql.DataSource"
   username="root"
   password=""
   driverClassName="com.mysql.jdbc.Driver"
   url="jdbc:mysql://localhost/voff"
/>
</pre><br /><br />存为Context.xml放在META-INF下即可。<br />测试代码:<br /><pre name="code" class="java">
&lt;%@ page language="java" contentType="text/html;charset=GB2312"%>
&lt;%@ page import="java.sql.*,javax.sql.*,javax.naming.*"%>
&lt;%
   Connection conn=null;
   String url="jdbc:mysql://localhost:3306/voff";
   String user="root";
   String password="";
   try{
       InitialContext ctx=new InitialContext();
       DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/chen");
       conn=ds.getConnection();
       if(conn!=null)
       {
        out.println("数据源jdbc/chen配置正确！");
       }
       }catch(Exception e)
       {
        out.println("数据库驱动加载出现错误！"+e.getMessage());
       }
%></pre><br /><br />一个测试JNDI的驱动测试：<br /><pre name="code" class="java">
&lt;%@page contentType="text/html;charset=gb2312"%>
&lt;%@page import="java.sql.*"%>
&lt;%@page import="javax.sql.DataSource"%>
&lt;%@page import="javax.naming.*"%>
&lt;html>
&lt;body>
&lt;%
try{
Context initCtx=new InitialContext();
DataSource db = (DataSource)initCtx.lookup("java:comp/env/jdbc/chen");
Connection conn = db.getConnection();
ResultSet rs=null;
Statement stmt = conn.createStatement();
String sql="select * from user limit 10";
rs = stmt.executeQuery(sql);
out.println("User-list"+"&lt;br>");
while(rs.next()){
  out.print("id is"+rs.getString("id")+"&lt;br>");
  out.print("name is"+rs.getString("username")+"&lt;br>");
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception e){
out.print(e);
}
%>
&lt;/body>
&lt;/html>
</pre><br />Resource项（即连接池的DataSource对象），有3个属性name、auth、type，name项是JNDI的名称定义，程序通过JNDI才能找到此对象，这里取名jdbc/LJJ；auth项即连接池管理权属性，这里取值Container，申明为容器管理；type项即对象的类型，这里取值javax.sql.DataSource，申明为数据库连接池。 <br />在接下来的&lt;ResourceParams>域内容里包含四个参数username、password、driverClassName、url，依次为数据库的用户名、密码、JDBC驱动和数据库地址<br />在实际应用开发中，特别是在WEB应用系统中，如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据，每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤，而连接并打开数据库是一件既消耗资源又费时的工作，如果频繁发生这种数据库操作，系统的性能必然会急剧下降，甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法，在许多应用程序服务器（例如：Weblogic, WebSphere,JBoss）中，基本都提供了这项技术，无需自己编程，但是，深入了解这项技术是非常必要的。<br /><br />　　数据库连接池技术的思想非常简单，将数据库连接作为对象存储在一个Vector对象中，一旦数据库连接建立后，不同的数据库访问请求就可以共享这些连接，这样，通过复用这些已经建立的数据库连接，可以克服上述缺点，极大地节省系统资源和时间。<br /><br />　　数据库连接池的主要操作如下：<br /><br />　　（1）建立数据库连接池对象（服务器启动）。<br /><br />　　（2）按照事先指定的参数创建初始数量的数据库连接（即：空闲连接数）。<br /><br />　　（3）对于一个数据库访问请求，直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接，且连接数没有达到最大（即：最大活跃连接数），创建一个新的数据库连接。<br /><br />　　（4）存取数据库。<br /><br />　　（5）关闭数据库，释放所有数据库连接（此时的关闭数据库连接，并非真正关闭，而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接）。<br /><br />　　（6）释放数据库连接池对象（服务器停止、维护期间，释放数据库连接池对象，并释放所有连接）。
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/48593#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 19 Jan 2007 21:07:05 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/48593</link>
        <guid>http://voff12.javaeye.com/blog/48593</guid>
      </item>
      <item>
        <title>phpwind源码分析与javaeye博客的用户体验设计</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/47594" style="color:red;">http://voff12.javaeye.com/blog/47594</a>&nbsp;
          发表时间: 2007年01月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          phpwind的速度一流。听说有创新的模板缓存技术。不过用户界面做得差。blog系统基本上没人用。javaeye的博客做得很好。代码显示非常漂亮。<br />比较喜欢的基本功能有<br />1）博客可以自已定标题。<br />2）可以自已无限分栏<br />3）代码显示很美观<br />4）可以同时编辑与删除<br />5）管理很有特色<br />php源码分析可以分为：<br />1）数据库设计分析<br />2）权限设计分析<br />3）速度之迷<br />4）模板之与缓存的秘密
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/47594#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Jan 2007 23:16:19 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/47594</link>
        <guid>http://voff12.javaeye.com/blog/47594</guid>
      </item>
      <item>
        <title>在tomcat下用hibernate的尝试</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/46926" style="color:red;">http://voff12.javaeye.com/blog/46926</a>&nbsp;
          发表时间: 2007年01月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用Test.java类成功测试了hibernate的使有。但在tomcat下却失败了。看来这个入门还挺复杂的。<br /><div class="quote_title">引用</div><div class="quote_div"><br />JNDI的原理我原来也比较糊涂，后来是把Sun网站的JNDI的指南下载下来，一点点啃完以后就搞清楚了。JNDI通俗来说就是一个命名和查找资源的机制，把App Server中的所有资源对象进行统一的编号，并且把这些编号放在一个树装结构中，这样你要找什么资源，就按照编号去找这颗树就行了，就可以在相应的位置找到这个编号对应的“对象”(其实就是映射)。就好像我们每个人作为一个实体，都有一个姓名来映射。而每个App Server中的资源(这些资源包括数据库连接池对象，EJB对象等等)都有一个JNDI名字来映射。而所有的这些JNDI名字和他们对应的这些对象就统称Context。而这种映射和查找机制就叫做JNDI(Java Naming and Directory Interface)。 </div><br /><br />tomcat的运行原理;<br /><pre name="code" class="java">Tomcat是一个带有jsp环境的servlet容器.servlet容器是一个根据用户的行为可以管理和激活servlet的运行时的shell. 
　　
　　粗略地可以将servlet容器分为如下几类: 
　　
　　独立的servlet容器 
　　
　　内置有web服务器的一部分.指当使用基于Java的web服务器的情形,例如servlet容器是JavaWebServer的一个部分. 独立的servlet容器是Tomcat的默认模式. 
　　
　　大多数的web服务器并非基于Java,因此,我们可以得出如下两种容器的模式. 
　　
　　进程内的servlet容器 
　　
　　servlet容器作为web服务器的插件和Java容器的实现.Web服务器插件在内部地址空间打开一个JVM(java virtual machine)使Java容器得以在内部运行.如有某个需要调用servlet的请求,,插件将取得对此请求的控制并将他传递(使用JNI)给Java容器.进程内容器对于多线程,单进程的服务器非常合适并且提供很好的运行速度,但伸缩性有所不足. 
　　
　　进程外的servlet容器 
　　
　　servlet容器运行于web服务器之外的地址空间且作为web服务器的插件和Java容器的实现的结合.web服务器插件和Java容器 JVM使用IPC机制(通常是TCP/IP)进行通讯.当一个调用servlet的请求到达时,插件将取得对此请求的控制并将其传递(使用IPC等)给Java容器,进程外容器的反应时间或进程外容器引擎不如进程内容器,但进程外容器引擎在许多其他可比的范围内更好(伸缩性,稳定性等). 
　　
　　Tomcat既可作为独立的容器(主要是用于开发与调试)又可作为对现有服务器的附加(当前支持Apache,IIS和Netscape服务器).即任何时候配置Tomcat你都必须决定如何应用他,如选择第二或第三种模式,你还需要安装一个web服务器接口</pre>
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/46926#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 14 Jan 2007 14:55:31 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/46926</link>
        <guid>http://voff12.javaeye.com/blog/46926</guid>
      </item>
      <item>
        <title>hibernate的尝试</title>
        <author>voff12</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://voff12.javaeye.com">voff12</a>&nbsp;
          链接：<a href="http://voff12.javaeye.com/blog/46855" style="color:red;">http://voff12.javaeye.com/blog/46855</a>&nbsp;
          发表时间: 2007年01月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          本人是从php进行web编程，转换为java编程。想学习一下hibernate的使用。大多数应用hibernate，都是用IDE工具来开发。我想就用简单的cmd来完成，但发现了用并不顺畅。做了一个简单的测试来，在编译Test类。<pre name="code" class="java">package chen.hibernate;

import chen.hibernate.User;
//import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;

public class   Test {
	public static void main(String[] args) {
		try
		{
			SessionFactory sf = new Configuration().configure().bulidSessionFactory();
			
			Session session  = sf.openSession();

			Transaction tx = session.beginTransaction();

			
            for (int i=0;i&lt;3000;i++)
            {
		    User user = new User();
			user.setUsername("hibernate");
			user.setPassword("123");
			session.save(user);
                        }
			tx.commit();
			session.close();
			
			System.out.println("ok");
			
		}
		catch (HibernateException e)
		{
			e.printStackTrace();
		}

 }
}</pre><br /><br />的时候，总是出错。老是提示找不到符号。<br /><pre name="code" class="java"> 方法 bulidSessionFactory()
位置： 类 org.hibernate.cfg.Configuration
                        SessionFactory sf =
dSessionFactory();

Test.java:19: 找不到符号
符号： 类 Transation
位置： 类 chen.hibernate.Test
                        Transation tx = sess
                        ^
Test.java:34: 找不到符号
符号： 类 HibernateException
位置： 类 chen.hibernate.Test
                catch (HibernateException e)
</pre><br />buildSessionFactory()找不到类。初步估计是因为hibernate的包没有引用进来。<br />决定用google来查一下，看有没有有用的帮助。<br />关键词为hibernate+找不到符号符号：<br />花了整整一个下午，没找到原因。头好痛。<br />半小时后，发现一个字符错误。应Transaction。还剩两个错误<br /><br />引入一个import org.hibernate.HibernateException后，错误减少为一个。<br />用javac -verbose chen/hibernate/Test.java后发现这些包都已经导入。<br /><br /><pre name="code" class="java">Test.java:16: 找不到符号
符号： 方法bulidSessionFactory()
位置：  类 org.hibernate.cfg.Configuration
                        SessionFactory sf = new Configuration().confi
                                            ^
gure().bulidSessionFactory();</pre><br />初步原因分析：<br /> SessionFactory sf = new Configuration().configure().bulidSessionFactory()找不到符号，可能因为configuration没引入，没有配置对？<br />Configuration是hibernate的入口.<br /><br />三个小时后：<br /><pre name="code" class="java">  Configuration config = new Configuration().configure();      
		  SessionFactory sessionFactory = config.buildSessionFactory();  
		  Session session = sessionFactory.openSession(); 
			Transaction tx = session.beginTransaction();</pre><br />终于编译能过。<br />但新问题又出现了：<br />Error parsing XML: XML InputStream<br />加上<br />&lt;!DOCTYPE hibernate-mapping PUBLIC<br />"-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><br />解决了这一问题。但<br />新的问题又出现了<br /><pre name="code" class="java">log4j:WARN No appenders could be find for logger
log4j:WARN please initialize the log4j system properly</pre><br /><br />解决此问题,在hibernate.cfg.xml旁加log4j.properties配置文件。<br />运行时会出现：很多详细信息。<br />又出一问题：<br /><pre name="code" class="java">
Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException
  at java.lang.Class.getDeclaredConstructors0(Native Method)
</pre><br /><br />第二天中午查原因：<br />到这一步原因已经明显，hibernate2.0与3.0的包不同<br />在google的途中，看到了这样一句话：<br /><pre name="code" class="java">多看文档，多思考，自己解决问题。
多写代码，多锻炼，程序不费力气。</pre><br />还有点道理，有问题，一定要自己解决。<br /><pre name="code" class="java">
NoClassDefFoundError: org/objectweb/asm/Type 
</pre><br />下一个问题：<br /><pre name="code" class="java">
Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Synchronization</pre><br />导入asm.jar,asm-attrs.jar,jta.jar,ehcache-1.2.3.jar,log4j-1.2.11.jar<br />就解决了以上问题。<br />终于成功了。<br />总结;<br />1)将hibernate必要的包放到classpath中。<br />2)将hibernate.cfg.xml放至classes下。<br />3)User.hbm.xml与User.class放到同一包中。<br />4)log4j.properties一定要添加，可以看到很多详细信息<br />5)解决中文乱码，采用?useUnicode=true&amp;characterEncoding=UTF-8
          <br/>
          <span style="color:red;">
            <a href="http://voff12.javaeye.com/blog/46855#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 13 Jan 2007 18:59:51 +0800</pubDate>
        <link>http://voff12.javaeye.com/blog/46855</link>
        <guid>http://voff12.javaeye.com/blog/46855</guid>
      </item>
  </channel>
</rss>