我有一个使用Struts1.3、Hibernate3和Spring Security开发的web应用程序。由于MySQL在此时间之后关闭了连接,该应用程序在8小时后就停止了运行。然后我从几个帖子中收集信息,使它保持很长时间,现在差不多是20-24小时。有没有人能帮我把这东西弄好。
摘要
Iam在不活动20小时后无法登录。连接被MySQL关闭。
多谢了。
<property name="hibernate.dialect">se.etm.ewo.hibernate.CustomDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">MY_JDBC_URL?autoReconnect=true</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.autoReconnect">true</property>
<property name="hibernate.connection.autoReconnectForPools">true</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1</property>
<property name="hibernate.c3p0.testWhileIdle">true</property>
<property name="hibernate.c3p0.testConnectionOnCheckout">true</property>
<property name="hibernate.c3p0.min_size">10</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="hibernateProperties">
<ref bean="hibernateProperties" />
</property>
</bean>
<bean id="hibernateProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="ignoreResourceNotFound" value="true" />
<property name="location">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- Data source -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<value>MY_JDBC_URL?autoReconnect=true</value>
</property>
<property name="user">
<value>username</value>
</property>
<property name="password">
<value>password</value>
</property>
<property name="initialPoolSize">
<value>10</value>
</property>
<property name="maxPoolSize">
<value>30</value>
</property>
<property name="minPoolSize">
<value>10</value>
</property>
<property name="maxConnectionAge">
<value>3600</value>
</property>
<property name="maxIdleTime">
<value>3600</value>
</property>
<property name="maxIdleTimeExcessConnections">
<value>1800</value>
</property>
<property name="acquireRetryAttempts">
<value>3</value>
</property>
<property name="acquireRetryDelay">
<value>3000</value>
</property>
<property name="breakAfterAcquireFailure">
<value>false</value>
</property>
<property name="preferredTestQuery">
<value>SELECT 1</value>
</property>
<property name="testConnectionOnCheckout">
<value>true</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
C3p0日志
INFO AbstractPoolBackedDataSource:462-正在初始化c3p0池...com.mchange.v2.c3p0.CombopooledDataSource[acquireIncrement->3,AcquireTretryActempts->3,AcquireTretryDelay->3000,autoCommitOnClose->false,automaticTestTable->null,breakAfterAcquireFailure->false,checkoutTimeout->0,connectionCustomizerClassName->null,connectionTesterClassName->Com.mchange.v2.c3p0.Impl.DefaultConnectionTester,s->3,numThreadsAwaitingCheckoutDefaultUser->0,preferredTestQuery->SELECT 1,properties->{user=******,password=******},propertyCycle->0,testConnectionOnCheckin->false,testConnectionOnCheckout->true,UnreturndConnectionTimeout->300,usesTraditionalReflectiveProxies->false]
c3p0日志显示的正是这些行,没有任何与问题相关的内容。你能找到什么。
TestWhileIdle
不是c3p0属性。它不会伤害什么,但可能会让你迷惑,以为你在做一些你不是的事情。您正在测试空闲连接,可能太频繁了,因为您也在测试结账时的连接。
您的配置分散在两个地方。我不确定Spring和hibernate配置将如何交互。c3p0数据源在池初始化信息处转储配置。您可能需要验证是否具有所需的配置。
你的问题,听起来很像你有一个连接泄漏。您必须确保从数据源签出的任何连接在finally方法中都是可靠的close()ed,或者通过Java7+中的try-with-resources。
看这里。
(注意:在hibernate.cfg中,它们是hibernate.c3p0.unreturnedConnectionTimeout
和hibernate.c3p0.debugunreturnedConnectionStackTraces
。或者您可以在Spring XML中更直接地设置它们。)
问题内容: 自上次发布以来,是否提出了所有建议的更改,但此问题仍然困扰着我。这是我得到的错误: 这是我的hibernate.cfg.xml 和c3p0.properties 问题答案: 对于我来说,您配置的c3p0错误。 诸如c3p0.preferredTestQuery之类的属性必须位于类路径中的c3p0.properties文件中(例如WEB-INF / classes)。 下面是我的c3p0
我在Ubuntu 14.04中使用XAMPP for linux。在终端上启动服务时,打印下一个日志: sudo /opt/lampp/lampp启动 "开始XAMPPLinux5.5.30-0... XAMPP:正在启动Apache。。。好啊 XAMPP:正在启动MySQL。。。已经在运行了。 XAMPP:开始ProFTPD...好的。" 我不知道为什么当我第一次启动XAMPPm时,MySQL服
问题内容: 我试图在使用selenium和phantomjs webdriver的linux服务器上运行python脚本;但是,我不断收到以下错误消息: 这是一个失败并生成此错误的简单测试脚本: 在路径上调用文件,返回: 有谁知道如何启动并运行该脚本?我已阅读了似乎类似的stackoverflow问题,并尝试应用建议的解决方案,例如通过npm重新安装幻像并使用sudo执行脚本,但是没有运气。如果我
我正在使用resin服务器+spring框架和c3p0连接池。我已经使用以下属性文件配置了连接池。但不知怎的,每隔24小时左右,我的网站就会出现连接超时错误,然后我不得不重新启动我的resin服务器,让网站重新运行。请告诉我在下面的配置文件中有什么错误,以及我在这里缺少了什么。
我正在尝试用android studio连接到我的Azure sql云数据库。运行代码时,我遇到了以下错误:“由于客户端TLS版本低于服务器允许的最低TLS版本,登录失败。”我已经尝试将azure的lts设置为1.0版本。 公共类MainActivity扩展AppCompatActivity { }
我有一个IP地址每次我收到连接失败的消息时,我都尝试了很多连接到该服务器的方法。出于安全原因,我隐藏了用户名和密码。 代码: 我有例外 组织。postgresql。util。PSQLException:连接尝试失败。在org。postgresql。果心v3。连接工厂impl。org上的openConnectionImpl(ConnectionFactoryImpl.java:292)。postgr