在MysqlConnectionPoolDataSource上设置max-connections

时间:2013-11-29 11:56:53

标签: java mysql driver connection-pooling

我使用MysqlConnectionPoolDataSource。我不得不从jndi定义迁移到自定义解决方案。 旧的定义如下:

<data-source                                                              
    name="MySqlDS" location="jdbc/MySqlPooledDS"                             
    class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"       
    max-connections="100"                                                    
    min-connections="5"                                                      
    inactivity-timeout="200"                                                 
    wait-timeout="10"                                                        
    username="USERNAME"                                                      
    password="PASSWORD"                                                      
    url="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=Cp1251"
/>

我想用这段代码替换它:

DataSource dataSource = (DataSource) Class.forName(driver.getType()).newInstance();
new Statement(dataSource, "setUrl", new Object[]{ driver.getUrl().getValue() }).execute();
new Statement(dataSource, "setUser", new Object[]{ driver.getUser().getValue() }).execute();
new Statement(dataSource, "setPassword", new Object[]{ driver.getPassword().getValue() }).execute();
new Statement(dataSource, "setUseUnicode", new Object[]{ "yes".equals(driver.getUseUnicode().getValue()) }).execute();
new Statement(dataSource, "setCharacterEncoding", new Object[]{ driver.getCharacterEncoding().getValue() }).execute();

我想在dataSource上定义max-connections属性,但我不知道该怎么做。有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您必须将其放在连接字符串中:"jdbc:mysql://localhost:3306/test?max-connections=100..."

答案 1 :(得分:0)

您的替换代码有点奇怪,为什么不使用数据源的具体实现?然后你可以使用适当的setter直接设置url,user等。

我建议使用像c3p0或BoneCP这样的东西来建立一个连接池,可以在没有太多麻烦的情况下为MySQL完成。

BoneCP

c3p0