首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

hibernate+Struts+JSP+MySQL+Tomcat(5.5.17)的一个项目中遇到一个很奇怪的关于Tomcat的有关问题,麻烦高手详阅内容和能给

2012-02-09 
hibernate+Struts+JSP+MySQL+Tomcat(5.5.17)的一个项目中遇到一个很奇怪的关于Tomcat的问题,麻烦高手详阅

hibernate+Struts+JSP+MySQL+Tomcat(5.5.17)的一个项目中遇到一个很奇怪的关于Tomcat的问题,麻烦高手详阅内容和能给予帮助,谢谢!!
Struts中的用于用户登陆的代码:    
 
public     class     UserBiz     implements     Serializable    
{    
                      public     User     login(     String     userName     ,     String     password     )    
                      {    
                                              Session     session     =     HbnUtil.getSession()     ;    
                                              Transaction     tx     =     session.beginTransaction()     ;    
                                              User     user     =     null     ;    
                                              Query     query     =     session.createQuery(     "from     User     as     u     where     u.userName=:userName     and     u.password=:password "     )    
                                                                                                                                                                                                                      .setString(     "userName "     ,     userName     )    
                                                                                                                                                                                                                      .setString(     "password "     ,     password     )     ;    
                                              List     list     =     query.list()     ;    


                                              if     (     list.size()     !=     0     )    
                                              {    
                                                                      Iterator     iterator     =     list.iterator()     ;    
                                                                      while     (     iterator.hasNext()     )    
                                                                      {    
                                                                                              user     =     (     User     )     iterator.next()     ;    
                                                                      }    
                                              }    
 
                                              HbnUtil.closeConnection();    
 
                                              return     user     ;    
                      }    
}    

HbnUtil工具包中的代码:

  public   class   HbnUtil
{
private   static   Configuration   config   ;
private   static   SessionFactory   sf   ;

public   HbnUtil()
{
}

static
{
config   =   new   Configuration().configure()   ;
sf   =   config.buildSessionFactory()   ;
}

public   static   Session   getSession()
{
return   sf.openSession()   ;
}

public   static   void   closeConnection()
{
sf.close()   ;
}
}

Hibernate中的hibernate.cfg.xml文件内容:    


 
<?xml     version= "1.0 "?>    
<!DOCTYPE     hibernate-configuration     PUBLIC    
                      "-//Hibernate/Hibernate     Configuration     DTD     3.0//EN "    
                      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">    
 
<hibernate-configuration>    
                      <session-factory>    
                                              <property     name= "show_sql "> true </property>    
                                              <property     name= "format_sql "> true </property>    
                                              <!--datasource     configuration-->    
                                              <property     name= "dialect "> org.hibernate.dialect.MySQLDialect </property>    
                                              <property     name= "connection.driver_class "> com.mysql.jdbc.Driver </property>    
                                              <property     name= "connection.username "> root </property>    
                                              <property     name= "connection.password "> 123 </property>    
                                              <property     name= "connection.url "> jdbc:mysql://localhost:3306/MyDB </property>    
                                              <!--connection     pool     configuration-->    
                                              <property     name= "c3p0.max_size "> 3 </property>    
                                              <property     name= "c3p0.min_size "> 1 </property>    


                                              <property     name= "c3p0.timeout "> 5000 </property>    
                                              <property     name= "c3p0.max_statements "> 100 </property>    
                                              <property     name= "c3p0.idle_test_period "> 3000 </property>    
                                              <property     name= "c3p0.acquire_increment "> 1 </property>    
                                              <property     name= "c3p0.validate "> false </property>    
                                              <!--mapping     configuration-->    
                                              <mapping     resource= "rongzhong/entity/User.hbm.xml "/>    
                                              <mapping     resource= "rongzhong/entity/Media.hbm.xml "/>    
                      </session-factory>    
</hibernate-configuration>    
 
JSP中的error.jsp文件内容:    
 
<%@     page     contentType= "text/html;     charset=gb2312 "     %>    
<%@taglib     uri= "http://struts.apache.org/tags-bean "     prefix= "bean "     %>    
<!DOCTYPE     HTML     PUBLIC     "-//W3C//DTD     HTML     4.0     Transitional//EN ">    
<html>    
<head>    
<title> 错误 </title>    
</head>    
<body>    
                      <center>    
                                              <h2> &nbsp; </h2>    
                                              <h2     class= "STYLE2 "> 登陆错误,请重新输入用户名和密码! </h2>    
                                              <p> &nbsp; </p>    


                                              <a     href= "${pageContext.request.contextPath}/tologin.do "> 重新登陆 </a>    
                      </center>    
</body>    
</html>    
 
JSP中的login.jsp文件内容:    
 
<!DOCTYPE     HTML     PUBLIC     "-//W3C//DTD     HTML     4.01     Transitional//EN "     "http://www.w3.org/TR/html4/loose.dtd ">    
<%@taglib     uri= "http://struts.apache.org/tags-bean "     prefix= "bean "     %>    
<%@taglib     uri= "http://struts.apache.org/tags-html "     prefix= "html "     %>    
<%@page     contentType= "text/html;charset=GB2312 "     %>    
 
<center>    
                      <h2> 用户登录 </h2>    
                      <html:form     method= "post "     action= "/login.do ">    
                                              用户名: <input     type= "text "     name= "userName "> <br>    
                                              密&nbsp;&nbsp;码: <input     type= "password "     name= "password "> <br>    
                                              <input     type= "submit "     value= "登陆 "     >    
                      </html:form>    
</center>    
 
问题:    
                              启动Tomcat服务器后,在login.jsp的显示页面中输入用户名和密码,如果输入错误,便跳转到error.jsp的显示页面中,点击“登陆”,页面就又跳转到login.jsp页面中,(请高手注意,这个过程是第一次过程),再重复一边这个过程后(高手注意,这样的过程已经是第二次了),在这两个过程中Tomcat服务器一切正常,连接数据库,执行相应的select语句。可是到了第三次,Tomcat服务器的运行状态就一直停在(页面显示的信息)“opening     JDBC     connection”这个状态了,不进行任何的动作,碰到这个情况,只能重启服务器。我不知道这是因为什么,后来发现上面提到的这样的过程的重复的最大次数和hibernate.cfg.xml文件中的 <property     name= "c3p0.max_size "> 3 </property> 这个设置有关,设置几就能重复几次这样的过程。自己想了想,这个设置是用来设置数据库的最大连接的,可是我的代码中已经在查询完数据库之后进行了释放资源呀,也把SessionFactory关闭了呀,怎么还能这样呢?难道说我这个程序只能有限次数的访问数据库????!!!!!请高手指点指点吧,很郁闷的,资源也释放了,就是不行……唉!

[解决办法]
不要关闭整个连接,只要关闭session就可以了

热点排行