2013-11-29 4 views
0

Я использую MysqlConnectionPoolDataSource. Мне пришлось перейти от определений jndi к пользовательскому решению. Старое определение выглядит следующим образом:Установить max-соединения на MysqlConnectionPoolDataSource

<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(); 

Я хотел бы определить max-connections собственность на DataSource, но я не знаю, как сделать это. Есть идеи ?

Спасибо.

ответ

0

Ваш код замены немного странный, почему бы вам не использовать конкретную реализацию Datasource? Затем вы можете напрямую установить URL-адрес, пользователя и т. Д., Используя соответствующие сеттеры.

Я бы предложил использовать что-то вроде c3p0 или BoneCP для настройки пула соединений, может быть сделано для MySQL без лишних хлопот.

BoneCP

c3p0

1

Вы должны поместить его в строке соединения: "jdbc:mysql://localhost:3306/test?max-connections=100..."

Смежные вопросы