`
voff12
  • 浏览: 97121 次
  • 来自: 北京
社区版块
存档分类
最新评论

用hibernate竟然会把tomcat“干掉”,真是奇怪

阅读更多
问题所在:
用struts1.0+hibernate3.1(mysql数据库)第一次写了一个简单的小网站。解决了很多很多问题后,最后卡在tomcat“崩溃"上。
tomcat启动后,几小时内可以正常运行。但几个小时后,点击连接,或访问主页时,进不去。也不报错,处理36%状况(1%变至38%)不动。。

这种情况下关闭tomcat,重启tomcat有问题。重启时显示tomcat已启动。


运行环境配置
运行环境配置
1)apache2.2.4+tomcat5.0.28+redhat9.0+jkd1.5.0_09
2)配置文件如下:
LoadModule jk_module modules/mod_jk.so

<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

</IfModule>

<IfModule mod_limitipconn.c>
 <Location /yahoo>
    MaxConnPerIP 1000
 </Location>
</IfModule>


apache的conf下workers.properties配置
# 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





原因分析与解决尝试:
1)个人认为可以是hibernate连接池有问题.google一下,采用了三个方案(默认,c3p0,proxool)但发现全部有“缺点”(可能还未懂配置的含义)。用proxool出现显示不稳定的情况。用用c3p0连接池,解决了显示不稳定的问题,但使用几个小时后,竟会将tomcat弄“崩溃”。用户不能访问网页。错误消息也看不到。网页进行到38%的时候,竟然不动了。
2)在tomcat不能访问情况下,apache上的php网站仍能正常运行。tomcat问题。把tomcat从5.5.20换成了5.0.28也解决不了问题.


<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
	<property name="connection.username">root</property>
	<property name="connection.password"></property>
	<property name="connection.url">
		jdbc:mysql://localhost/backup?useUnicode=true&amp;characterEncoding=UTF-8
	</property>
	<property name="dialect">
		org.hibernate.dialect.MySQLDialect
	</property>
	<property name="myeclipse.connection.profile">Mysql</property>
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>

	<!-- Echo all executed SQL to stdout -->
	<property name="show_sql">true</property>
	<property name="hibernate.jdbc.fetch_size">50</property>
	<property name="hibernate.jdbc.batch_size">25</property>

   <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
  <property name="hibernate.c3p0.max_size">20</property>
  <property name="hibernate.c3p0.min_size">5</property>
  <property name="hibernate.c3p0.timeout">15000</property>
  <property name="hibernate.c3p0.max_statements">100</property>
  <property name="hibernate.c3p0.idle_test_period">120</property>
  <property name="hibernate.c3p0.acquire_increment">2</property>
  <property name="hibernate.c3p0.validate">true</property>

	<!-- mapping resource="com/voff/News.hbm.xml" /-->
	<mapping resource="com/voff/News.hbm.xml" />
	<mapping resource="com/voff/User.hbm.xml" />
	<mapping resource="com/voff/Comment.hbm.xml" />
	<mapping resource="com/voff/Category.hbm.xml" />
	<mapping resource="com/voff/Pk.hbm.xml" />
	<mapping resource="com/voff/Qa.hbm.xml" />
	<mapping resource="com/voff/Logs.hbm.xml" />
</session-factory>

</hibernate-configuration>


最后感叹一下:
java的开发速度真是折磨人(java菜鸟)。php快捷稳定高效,开发速度又快,真是哀叹。希望自己快点把这个问题解决。
分享到:
评论
13 楼 voff12 2007-04-01  
jamesby 写道
我的意思是你的应用程序产生的各种异常是怎么处理的?
没有log到文件里面?
没有log到文件里。
12 楼 jamesby 2007-04-01  
我的意思是你的应用程序产生的各种异常是怎么处理的?
没有log到文件里面?
11 楼 voff12 2007-03-31  
jamesby 写道
我说的是为你的tomcat配置了多少内存

没有使用Log4j等log工具将你的应用程序出现的异常log到文件里面吗?
我的意思是你看看你的应用程序的日志文件,而不是出现问题的时候去看console!

看log是确认在你出现问题之前是否会有些意料之外的异常出现,我遇到过一次,程序不停的抛出NullPointer异常结果web服务器down掉。

因为servlet是基于线程池的,我在使用sychronized的时候遇到问题,在sychronized处死锁导致web服务器停止响应,估计当时就是线程池里面的所有线程都在sychronized等待。
谢谢楼上热心的回答。但我还未得要领。tomcat是默认配置。应用程序的日志文件是指什么?
sychronized处死锁如何解决呢?
我现在在用同样的程序,同样的运行环境。在另外一台普遍PC机做测试,5个小时了,还没出现崩溃的现象。
10 楼 jamesby 2007-03-31  
我说的是为你的tomcat配置了多少内存

没有使用Log4j等log工具将你的应用程序出现的异常log到文件里面吗?
我的意思是你看看你的应用程序的日志文件,而不是出现问题的时候去看console!

看log是确认在你出现问题之前是否会有些意料之外的异常出现,我遇到过一次,程序不停的抛出NullPointer异常结果web服务器down掉。

因为servlet是基于线程池的,我在使用sychronized的时候遇到问题,在sychronized处死锁导致web服务器停止响应,估计当时就是线程池里面的所有线程都在sychronized等待。
9 楼 voff12 2007-03-31  
谢谢。配置了多少内存,是什么意思?为mysql或tomcat分配的最大内存?主机2G内存。
引用

做个测试,弄一个不访问数据库的页面,在出现问题的时候访问该页面,看是否能够正常访问

tomcat启动后,可以正常运行一段时间。但一段时间内,就崩溃了。所有页面(没有数据库的)页面也不能访问。
引用
用程序日志

卡在38%,浏览器上就不动了。无法看到出错异常。浏览器功能正常。
8 楼 jamesby 2007-03-31  
另外你配置了多少内存,一般情访问量过大,内存过小或者死锁才会出现你说的这种情况。

还有看看你的应用程序日志,是否抛出了过多的意外异常,就是非checked,也非意料之中的异常,异常也可能导致服务器瘫痪。
7 楼 jamesby 2007-03-31  
我觉得可以做个测试,弄一个不访问数据库的页面,在出现问题的时候访问该页面,看是否能够正常访问?

以确认问题出现在哪里?

6 楼 voff12 2007-03-31  
在windows下一直运行良好,不知为何在linux下运行会出现这种效果!
5 楼 voff12 2007-03-31  
好的,我换一个连接池试试。谢谢。下面是我的tomcat日志
localhost_log.2007-03-31.txt

2007-03-31 15:08:41 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2007-03-31 15:08:41 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2007-03-31 15:08:41 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2007-03-31 15:08:41 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2007-03-31 15:08:41 StandardContext[/servlets-examples]SessionListener: contextInitialized()
2007-03-31 15:08:42 StandardContext[/yahoo]org.tuckey.web.filters.urlrewrite.utils.Log ERROR: logLevelConf: WARN
2007-03-31 15:08:45 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@e576d4')
2007-03-31 15:08:45 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1db5ec')
2007-03-31 15:08:45 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@92b1a1')
2007-03-31 15:08:45 StandardContext[/servlets-examples]SessionListener: contextDestroyed()
2007-03-31 15:08:45 StandardContext[/servlets-examples]ContextListener: contextDestroyed()
2007-03-31 15:08:45 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@17918f0')
2007-03-31 15:08:45 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1546dbc')
2007-03-31 15:08:45 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1f08ed8')
2007-03-31 15:08:45 StandardContext[/jsp-examples]SessionListener: contextDestroyed()
2007-03-31 15:08:45 StandardContext[/jsp-examples]ContextListener: contextDestroyed()
2007-03-31 15:11:30 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2007-03-31 15:11:30 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2007-03-31 15:11:30 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2007-03-31 15:11:31 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2007-03-31 15:11:31 StandardContext[/servlets-examples]SessionListener: contextInitialized()
2007-03-31 15:11:31 StandardContext[/yahoo]org.tuckey.web.filters.urlrewrite.utils.Log ERROR: logLevelConf: WARN
2007-03-31 15:11:35 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1e0512a')
2007-03-31 15:11:35 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1f0aecc')
2007-03-31 15:11:35 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@64023c')
2007-03-31 15:11:35 StandardContext[/servlets-examples]SessionListener: contextDestroyed()
2007-03-31 15:11:35 StandardContext[/servlets-examples]ContextListener: contextDestroyed()
2007-03-31 15:11:35 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1c1ac46')
2007-03-31 15:11:35 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1557c0')
2007-03-31 15:11:35 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1342a67')
2007-03-31 15:11:35 StandardContext[/jsp-examples]SessionListener: contextDestroyed()
2007-03-31 15:11:35 StandardContext[/jsp-examples]ContextListener: contextDestroyed()
4 楼 ahuaxuan 2007-03-31  
voff12 写道
hibernate3.1说不支持dbcp了。
这怎么可能,我现在还在用3.1.3呢
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.4.2_09-b05 (Sun Microsystems Inc.)
Hibernate-Version: 3.1.3


datasource的配置
引用

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxActive" value="100"/>
        <property name="maxIdle" value="30"/>
        <property name="maxWait" value="1000"/>
           </bean>

如果实在找不出原因,建议换dbcp试试
3 楼 voff12 2007-03-31  
hibernate3.1说不支持dbcp了。
2 楼 ahuaxuan 2007-03-31  
没有异常吗,tomcat控制台有没有异常呢,还有就是再试试其他连接池,还有dbcp你没有试呢
1 楼 voff12 2007-03-31  
希望得到。谢谢!

相关推荐

    hibernate连接池之tomcat6的配置

    标题“hibernate连接池之tomcat6的配置”涉及到的是如何在Tomcat6服务器中配置Hibernate连接池,以便高效管理数据库连接。这通常是为了优化应用程序的性能和资源利用。以下将详细介绍相关知识点: 1. **Hibernate**...

    Hibernate使用Tomcat连接池.doc

    这样,Hibernate就会通过JNDI查找并使用Tomcat配置的`jdbc/quickstart`数据源,而无需在代码中硬编码数据库连接信息,提高了应用的可移植性和安全性。 在实际应用中,确保Tomcat和Hibernate配置正确无误后,还需要...

    Tomcat下配置Hibernate

    ### Tomcat下配置Hibernate知识点详解 #### 一、前言 在Java Web开发中,Tomcat作为一款轻量级的应用服务器被广泛使用。而在实际项目中,为了更好地管理数据库连接和进行对象关系映射(ORM),Hibernate框架因其...

    hibernate 3.1+tomcat 5.5.x(配置jndi)

    这样,Hibernate会在运行时自动从JNDI中查找并使用配置的DataSource。 #### 五、总结 通过上述步骤,我们可以有效地在Hibernate 3.1和Tomcat 5.5.x之间建立起良好的集成关系。这不仅可以简化数据库连接的管理,还...

    Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决篇

    在本篇文章中,我们将深入探讨如何解决Struts + Hibernate + MyEclipse + Tomcat + MySQL环境中出现的乱码问题。该问题通常出现在处理中文字符时,由于编码设置不当导致中文显示为乱码或无法正常读取。为了确保系统...

    Tomcat配置hibernate xml模板

    在IT行业中,尤其是在Java Web开发领域,Tomcat和Hibernate是两个非常重要的工具。Tomcat是一款广泛应用的开源Web服务器和Servlet容器,而Hibernate则是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间...

    Java+struts+hibernate+mysql+tomcat门诊病例管理系统

    《基于Java+Struts+Hibernate+MySQL+Tomcat的门诊病例管理系统详解》 在信息技术日益发达的今天,医疗信息化管理已经成为提升医疗服务效率、保障患者数据安全的重要手段。本系统——"Java+Struts+Hibernate+MySQL+...

    mysql+jdbc+jsp+Hibernate3.2+tomcattomcat5.028成功测试

    mysql,jdbc,Hibernate,tomcat [mysql+jdbc+jsp+Hibernate3.2+tomcattomcat5.028成功测试-简单] &lt;br&gt; 1 .数据库设计:库mydb 表events &lt;br&gt;EVENT_ID BIGINT(20) NOT NULL AUTOINC EVENT_DATE DATETIME...

    Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决

    在开发Java Web应用程序时,经常会遇到编码问题,尤其是在使用Struts、Hibernate、MyEclipse、Tomcat和MySQL等技术栈时。这个问题主要涉及到各种组件之间的编码一致性,以及数据的正确转换。本文将针对这些技术的...

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    ### Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 框架搭建详细过程 #### 一、环境配置与准备 在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境...

    基于Struts+Spring+Hibernate+MySQL+Tomcat的中小企业办公自动化系统(JAR包)

    这是一个典型的Java Web应用程序架构,使用了Struts、Spring、Hibernate和MySQL这四个核心组件,运行在Tomcat服务器上。这个办公自动化系统旨在提高中小企业的管理效率,通过集成这些技术,可以实现数据持久化、业务...

    spring+springMVC+hibernate+maven+tomcat7整合,myEclipse项目(完整html页面模板)

    3. **Hibernate**:Hibernate 是一个对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库。它消除了SQL的直接编写,提供了一种更高级的持久化机制。在本项目中,Hibernate 负责将Java对象与数据库表进行...

    Hibernate 3.1+Tomcat 5.5.X(配置JNDI篇)

    【标题】:“Hibernate 3.1+Tomcat 5.5.X(配置JNDI篇)” 【描述】:文章介绍了在Tomcat 5.5.X版本中如何配置Hibernate 3.1,特别是关于JNDI(Java Naming and Directory Interface)的设置方法。 【标签】:...

    hibernate5.2.12+spring5.0.2+tomcat8.5.23+ant1.10.3

    本资源包整合了四个关键组件:Hibernate 5.2.12、Spring 5.0.2、Tomcat 8.5.23 和 Ant 1.10.3,这是一套适用于Java Web开发的经典组合。下面我们将详细探讨这些组件的功能、重要性以及它们如何协同工作。 首先,...

    启动tomcat报错org.hibernate.cache.CacheProvider

    标题中的“启动tomcat报错org.hibernate.cache.CacheProvider”指的是在尝试启动Apache Tomcat服务器时遇到了与Hibernate缓存提供者相关的错误。这通常涉及到Hibernate框架的配置或运行时环境问题。Hibernate是一个...

    基于Struts+Spring+Hibernate+MySQL+Tomcat的中小企业办公自动化系统(源程序+开题报告+论文)

    基于Struts+Spring+Hibernate+MySQL+Tomcat的中小企业办公自动化系统(源程序+开题报告+论文) 系统的主要功能概述如下: (1) 用户身份验证模块 本系统功能的开发与设计,是完全针对公司内部进行办公管理...

    struts2+hibernate+spring+mysql+tomcat+log4j

    Struts2、Hibernate、Spring、Log4j、Tomcat 和 MySQL 是Java Web开发中的关键组件,它们共同构建了一个高效、可扩展的Web应用程序框架。以下是对这些技术的详细解释: **Struts2**:Struts2是一个基于MVC(Model-...

    水电缴费管理系统 JSP+MySQL+MVC+mybatis+spring+Hibernate+eclipse+Tomcat.zip

    8. **Tomcat**:Tomcat是一个小巧且高效的Java Servlet容器,它是Apache软件基金会的Jakarta项目的一部分。在水电缴费管理系统中,Tomcat作为应用服务器,负责运行和部署JSP、Servlet等Web应用。 综上所述,这个...

Global site tag (gtag.js) - Google Analytics