标签: apache-commons-dbcp

连接池并在返回时释放临时表

我正在使用带有连接池的 MySQL 临时表.

通常,在会话中创建的临时表会保留在该会话中,并在关闭连接时被删除.但是,由于我正在使用连接池,并且在java.sql.Connection.close()调用时实际上并未关闭物理连接,因此我发现临时表停留并影响下一个会话.

这会导致DB上的资源泄漏,因为临时表不会立即释放,以及由于表名冲突而导致的名称冲突.

直观地说,当我借用连接时,我期待一个干净的名单.如何实现这一目标?

  • 似乎没有与MySQL 相同的SQL Serversp_reset_connection.
  • 即使有,我也看不到dbcp2如何配置为在返回连接时调用它.
  • 返回池时始终关闭物理连接可以正常工作,但我无法看到dbcp2如何配置来执行此操作.

除临时表外,此问题还会影响:

mysql apache-commons-dbcp

5
推荐指数
1
解决办法
772
查看次数

是否需要tomcat的server.xml的factory属性?

我已经在tomcat上阅读了更多关于JNDI的内容,并且我从多个资源中读取了工厂所需的资源.他们说它通常应该是" org.apache.tomcat.jdbc.pool.DataSourceFactory ".但是,我经常看到这样的事情 -

 <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javatest"/>
Run Code Online (Sandbox Code Playgroud)

那么tomcat在这种情况下做了什么?它默认为" org.apache.tomcat.jdbc.pool.DataSourceFactory "吗?

java tomcat jndi apache-commons-dbcp

4
推荐指数
1
解决办法
3208
查看次数

jdbc spring security,apache commons dbcp

在Spring Security中,我定义了一个jdbc auth管理器:

<security:authentication-manager>
    <security:authentication-provider>
        <security:jdbc-user-service data-source-ref="securityDataSource"/>
    </security:authentication-provider>
</security:authentication-manager>

<bean id="securityDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.postgresql.Driver"/>
    <property name="url" value="jdbc:postgresql://127.0.0.1:5432/mydb"/>
    ... user and password props ...
</bean>
Run Code Online (Sandbox Code Playgroud)

此时我发现我需要Jakarta Commons DBCP.我添加了commons-dbcp-1.4,我得到以下异常:

...java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory
Run Code Online (Sandbox Code Playgroud)

实际上,此路径不包含在公共dbcp 1.4中.
我又错过了什么?

编辑
确定,将依赖项添加到公共池,它的工作原理是因为使用正确的凭据我不再获得"错误的凭据"页面.但我得到一个HTTP状态403 - 访问被拒绝.
好像我的用户已通过身份验证,但未经授权.
任何的想法...?:-)

我的http元素是:

<security:http auto-config="true" >
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
</security:http>
Run Code Online (Sandbox Code Playgroud)

我有一个"测试"用户绑定到"权限"表中的"USER"角色.

谢谢

java spring-security java-ee apache-commons-dbcp

4
推荐指数
1
解决办法
1万
查看次数

Spring 2.5无法获得JDBC连接

我正在使用spring 2.5 SimpleJdbcTemplate来访问MySQL数据库.当我尝试经常访问数据库(使用Quartz每分钟访问它)时,我得到了这个堆栈跟踪:

org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:382)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:458)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:466)
    at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:497)
    at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.queryForList(SimpleJdbcTemplate.java:223)
    at com.db.timexis.dao.UserDaoJdbc.getListOfAllUsers(UserDaoJdbc.java:137)
    at com.db.timexis.service.AuthServiceImpl.getListOfAllUsers(AuthServiceImpl.java:77)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) …
Run Code Online (Sandbox Code Playgroud)

java mysql spring apache-commons-dbcp

4
推荐指数
1
解决办法
2万
查看次数

Tomcat 错误:java.sql.SQLException:找不到适合 jdbc:sqlserver:// 的驱动程序

我的 Tomcat 有一个很糟糕的问题,很糟糕,因为这个问题我已经放弃了这个项目一个多月了......但我仍然需要解决它并继续这个项目......

所以它给我这个错误:

java.sql.SQLException:找不到适合 jdbc 的驱动程序:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2 java.lang.NullPointerException

问题是相同的应用程序在桌面版本 Perfectlz 中运行,但是当涉及到应该在服务器上运行的版本(NetBeans 7.1.2 中的 Tomcat 7.0.22.0)时,它只会抛出错误。似乎它没有加载池驱动程序,或者我什至不知道......

好吧,这是负责的部分:

public DatabaseConnection(Parameters params) {                

    // parameters and the output                
    this.gui = params.getGui();

    // activate database pool
    connectionPool = new GenericObjectPool(null);
    connectionFactory = new DriverManagerConnectionFactory(params.getDbAdr(), params.getDbUser(), params.getDbPass());
    poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
    driver = new PoolingDriver();
    driver.registerPool("GenTreeDatabase", connectionPool);
    //driver.registerPool("jdbc:apache:commons:dbcp:GenTreeDatabase", connectionPool);        

}

public void openConn() {
    if (allowOutput) gui.print("Getting connection to database");
    try {
        con = DriverManager.getConnection("jdbc:apache:commons:dbcp:GenTreeDatabase");
        if (con != null) { …
Run Code Online (Sandbox Code Playgroud)

java tomcat apache-commons-dbcp jdbc-pool

4
推荐指数
1
解决办法
1万
查看次数

Tomcat:查看使用数据库连接池的线程

Tomcat有一个数据库连接池(DBCP)来更快地发出请求.

在我的应用程序中,太多的连接被使用太长时间,我怀疑泄漏(连接没有正确关闭),我需要找出泄漏的位置.

问题:如何找出使用连接的每个线程的名称?

最好是现场JMX MBean,但也欢迎其他提示.显示每个线程的堆栈跟踪或类名也是可以接受的.

注意:我不是在寻找显示DBCP设置的MBean.我想看看每个连接的用途.

monitoring tomcat apache-commons-dbcp

4
推荐指数
2
解决办法
6918
查看次数

postgres从Java重启后重新连接到postgres数据库

我正在使用postgres 9.1,org.apache.commons.dbcp.BasicDataSource(对于我的连接池)和Java 1.7.当我重新启动postgres服务器时,我得到了例外情况org.postgresql.util.PSQLException: FATAL: terminating connection due to administrator command.

如何使连接自动重新连接到重新启动的数据库?

java postgresql jdbc apache-commons-dbcp

4
推荐指数
1
解决办法
3311
查看次数

HikariCP/Apache DBCP2 和 PgBouncer

在使用 HikariCP(或 Apache DBCP2)的 Spring 应用程序中切换到 PgBouncer 后,是否需要为 HikriCP(或 Apache DBCP2)端进行额外配置?

apache-commons-dbcp pgbouncer hikaricp

4
推荐指数
1
解决办法
2253
查看次数

Maven协调公共dbcp 2.0

我想使用Commons-DBCP 2.0.在官方网站上我发现:

升级到2.x的用户应该知道Java包名称已经改变,以及Maven坐标,因为DBCP 2.x与DBCP 1.x不是二进制兼容的.

但是新的坐标是什么?正如预期的那样在这里只提供1.x的.

maven apache-commons-dbcp

3
推荐指数
1
解决办法
4271
查看次数

Java 连接到 Sql 服务器时出现 jtds 错误

我使用此代码与 Sql 服务器建立连接,当我使用 Class.forName(driver) 它正确连接时出现该错误,但我更喜欢使用 DataSourse。

static final BasicDataSource dataSource = new BasicDataSource();


static {
    dataSource.setDriverClassName("net.sourceforge.jtds.jdbc.Driver");
    dataSource.setUrl("jdbc:jtds:sqlserver://Mypc/Mydb;instance=SQLEXPRESS;");
    dataSource.setUsername("");
    dataSource.setPassword("");


}

public static void main(String[] args){
     try{
dataSource.getConnection();
}
     catch (SQLException ex){
        System.out.println(ex);
    }}


public static Connection getConnection() throws SQLException {
    return dataSource.getConnection();
}
Run Code Online (Sandbox Code Playgroud)

我明白了

 Exception in thread "main" java.lang.AbstractMethodError
at net.sourceforge.jtds.jdbc.JtdsConnection.isValid(JtdsConnection.java:2833)
at org.apache.commons.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:918)
at org.apache.commons.dbcp2.PoolableConnection.validate(PoolableConnection.java:283)
at org.apache.commons.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:357)
at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2307)
at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2290)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2039)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533)
Run Code Online (Sandbox Code Playgroud)

java sql-server jtds apache-commons-dbcp

3
推荐指数
1
解决办法
3958
查看次数