Java 如何在运行时更改C3P0用户和密码
当我启动时,我的配置是:Java 如何在运行时更改C3P0用户和密码,java,c3p0,Java,C3p0,当我启动时,我的配置是:user=test1&password=test1 我想把它改成user=test2&password=test2 代码如下: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:/config/spring/appcontext-test.xml" }) public class SingleDataSourceProcessorTest {
user=test1&password=test1
我想把它改成user=test2&password=test2
代码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/config/spring/appcontext-test.xml" })
public class SingleDataSourceProcessorTest {
@Autowired
private ComboPooledDataSource masterDs;
@Test
public void test_c3p0_datasource_to_single_datasource()
throws InterruptedException, SQLException {
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
query();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
query();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
Thread.sleep(3000);
masterDs.setUser("test2");
System.out.println("change username");
masterDs.setPassword("test2");
System.out.println("change password");
Thread.sleep(3000);
}
private void query() throws SQLException {
Connection conn = masterDs.getConnection();
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("select @@read_only");
result.close();
stmt.close();
conn.close();
}
}
我的spring配置:
<bean id="masterDs" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/db1" />
<property name="user" value="test1" />
<property name="password" value="test1" />
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="25" />
</bean>
当代码仅更改了用户
时,另一个线程使用错误的用户
和密码
对查询数据库并抛出异常
那么如何在运行时更改
用户
和密码
?您是否在jdbc url中嵌入了原始用户和密码?(如果是这样,就不要这样做。从您显示配置的方式来看,看起来是这样。)@SteveWaldman我使用属性。