ssh+连接池配置出现的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh+连接池配置出现的问题相关的知识,希望对你有一定的参考价值。

在tomcat中配置如下
<Context path="/MesManager" docBase="MesManager"
debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_mysqlTest_log." suffix=".txt"
timestamp="true"/>

<Resource name="jdbc/mes" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/mes">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:jtds:sqlserver://localhost:1433</value>
</parameter>
</ResourceParams>
</Context>
在applicationContext.xml配置如下
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" destroy-method="close" lazy-init="default" autowire="default" dependency-check="default">
<property name="jndiName">
<value>java:comp/env/jdbc/mes</value>
</property>
</bean>
可老是提示Cannot open connection 请问还需要配置哪里吗 ???
已经将连接所需要的驱动jar包 复制到tomcat下的 common下的lib中了
和数据库版本驱动没关系 不用连接池可以连接

是不是数据库原因,有没有打sql2000 sp4补丁

你用的是不是sql2000,
如果是就进入查询分析器
输入Select @@Version

查看版本及补丁号
8.00.194--SQL Server 2000 RTM
8.00.384--(SP1)
8.00.534--(SP2)
8.00.760--(SP3)
8.00.2039--(SP4)
参考技术A 所噶

急求助:SSH+MySql的8小时问题。我也在网上找过资料,说配置了一个C3P0连接池就可以解决了,我也配置了。

帖出我的hibernate配置
<?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">

<hibernate-configuration>
<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/**
</property>
<property name="connection.username">**</property>
<property name="connection.password">**</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>

<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property>
<property name="connection.is-connection-validation-required">true</property>

<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">10</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">30</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">true</property>

<mapping resource="..." />

</session-factory>
</hibernate-configuration>
我测试的时候,把MySql的wait_timeout改成了60,可是60秒过后,还是会报:
Connection.close() has already been called. Invalid operation in this state.
这样的一个错误,请问下怎么才能解决?

参考技术A mysql配置文件发出来,你把wait_timeout设置成1800试试追问

我就是不想改MySql的配置,顺便问一句,为什么要把wait_timeout改得更小呢?默认好像是28800的吧

追答

具体时间大小看不同场景需要,你把interactive_timeout参数也加上,设置同样的时间,
看是否可以解决

参考技术B 把你程序中所有Connection.close()语句都注视掉,试试追问

sorry,我程序没有用到connection.close(),都说了是SSH+MySql了,当然是用spring注入了。

以上是关于ssh+连接池配置出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

spring 结合Druid连接池

阿里巴巴连接池Druid简单使用

SSH中 整合spring和proxool 连接池

急求助:SSH+MySql的8小时问题。我也在网上找过资料,说配置了一个C3P0连接池就可以解决了,我也配置了。

连接池是什么鬼东西

HttpClient 4.3连接池参数配置及源码解读