需要动态创建MySQL Connector / J连接池的数据源

时间:2011-07-28 13:25:43

标签: java mysql jdbc connection-pooling

我有一个应用程序,在连接到数据库时需要使用连接池。问题是,该应用程序旨在动态配置和更改连接设置。我编写了以下代码,允许我动态创建数据源,然后使用它来打开与数据库的连接。但是,此代码是为DataDirect驱动程序编写的,我已将其用于连接Oracle和MS SQL。不幸的是,DataDirect Mysql驱动程序只会连接到商业版的mysql,而不是免费版本。所以现在我试图用mysql中的connect / j完成相同的任务。我找不到如何通过像DD驱动程序这样的方法调用来设置外部(静态)数据源定义中的连接属性。任何帮助将不胜感激。

        BaseDataSource bds = (BaseDataSource)ds;

//  Populate the DataSource

        bds.setDescription("Driver Data Source");
        bds.setServerName(connectUrl);
        bds.setUser(userName);
        bds.setPassword(password);
        if ( spyAttr.length() > 0 ) bds.setSpyAttributes(spyAttr);

//  Create the PooledConnection DataSource.  Pass the data source created above
//  to the PooledConnection DataSource

        pds = new PooledConnectionDataSource();

        pds.setDescription("Pooled Data Source");
        pds.setDataSourceName("myDataSource", bds);
        pds.setPoolName("myPool");
        pds.setInitialPoolSize(nPoolSize);
        pds.setMinPoolSize(minPoolSize);
        pds.setMaxPoolSize(maxPoolSize);
        pds.setPropertyCycle(propCycle);
        pds.setMaxIdleTime(maxIdleTime);
        pds.setTracing(tracing);

//  Get connection

        pds.getConnection();

1 个答案:

答案 0 :(得分:0)

显然,MySQL Connector / J驱动程序不允许使用方法调用传入这些参数,因此您必须将它们作为URL中的参数传递(jdbc:mysql:// localhost / test?user = foo& ;密码=巴)