精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-04
以前做过这么一个项目,对连接池的源代码进行过改动:
1、不管spring怎么弄,一般情况下,是要通过连接池获取实际的数据库连接; 2、在连接池管理器中,实现动态创建新的连接功能,譬如,我这边改造的proxool连接池 |
|
返回顶楼 | |
发表时间:2011-07-04
能不能把你的代码贴出来,看下
|
|
返回顶楼 | |
发表时间:2011-07-04
newstong1 写道
kyan54 写道
cheng888qi 写道
继承下com.mchange.v2.c3p0.ComboPooledDataSource,覆盖setUser, setPassword,自己从数据库读取不行吗?
属性文件可以自己动态创建吧? 下面代码应该可以实现你说的这种
private ComboPooledDataSource buildDataSource(Properties property) throws PropertyVetoException { ComboPooledDataSource ds = new ComboPooledDataSource(); //加载DataSource驱动 ds.setDriverClass(property.getProperty(DRIVER_CLASS)); //设置连接数据库的url ds.setJdbcUrl(property.getProperty(JDBC_URL)); //设置数据库用户名 ds.setUser(property.getProperty(USER)); //设置数据库密码 ds.setPassword(property.getProperty(PASSWORD)); //设置池的最大连接数 ds.setMaxPoolSize(Integer.parseInt(property.getProperty(MAX_POOL_SIZE))); //设置池的最小连接数 ds.setMinPoolSize(Integer.parseInt(property.getProperty(MIN_POOL_SIZE))); ds.setMaxStatements(Integer.parseInt(property.getProperty(MAX_STATEMENTS))); ds.setMaxIdleTime(Integer.parseInt(property.getProperty(MAX_IDLETIME))); ds.setInitialPoolSize(Integer.parseInt(property.getProperty(INITIAL_POOLSIZE))); ds.setCheckoutTimeout(Integer.parseInt(property.getProperty(CHECKOUT_TIMEOUT))); ds.setIdleConnectionTestPeriod(Integer.parseInt(property.getProperty(IDLECONNECTIONTESTPERIOD))); return ds; }
如果按照这样写法,我原来的super.getJdbcTemplate().queryForInt( )这种方法是不是不能用了
|
|
返回顶楼 | |
发表时间:2011-07-04
如果按照这样写法,我原来的super.getJdbcTemplate().queryForInt( )这种方法是不是不能用了
可以用,我这个方法返回一个数据源,你在创建一个jdbcTemplate对象,就可以用了 ------------------- 按照你的方法,如何再创建一个jdbcTemplate对象,怎么样才能把你建的数据源加进去呢? |
|
返回顶楼 | |
发表时间:2011-07-04
最后修改:2011-07-04
用连接池就是为了能共享连接,如果这样的话还使用连接池
其实真正的目的是为了切换schema,而不是切换用户,所以可以加一个过滤器,根据当前用户对应的schema切换过去,在过滤器中执行sql alter session set current_schema=schema_name来改变当前session的schema |
|
返回顶楼 | |
发表时间:2011-07-04
说实在的,每个用户登录的时候切换数据库这种方式非常不安全
|
|
返回顶楼 | |
发表时间:2011-07-04
我见过太多的用户登录切换数据库的系统,让程序充满不确定性,让维护的人员崩溃,呵呵
|
|
返回顶楼 | |
发表时间:2011-07-04
这都是门外汉设计的程序,用一种很业余的办法控制权限!!!!!!!!!!!!!!!!
|
|
返回顶楼 | |
发表时间:2011-07-04
难为了这么多为楼主出谋划策的高人啊
|
|
返回顶楼 | |
发表时间:2011-07-05
hsiss 写道 用连接池就是为了能共享连接,如果这样的话还使用连接池
其实真正的目的是为了切换schema,而不是切换用户,所以可以加一个过滤器,根据当前用户对应的schema切换过去,在过滤器中执行sql alter session set current_schema=schema_name来改变当前session的schema 这是什么意思?? |
|
返回顶楼 | |