论坛首页 Java企业应用论坛

dbcp基本配置和重连配置

浏览 15693 次
精华帖 (0) :: 良好帖 (12) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-09-29  
兄弟,还要请教一个问题:
实现方式很简单,分析jboss的对应SecureIdentityLoginModule的实现,无非就是走了Blowfish加密算法,自己拷贝实现一份。




Java代码

   1. private static String encode(String secret) throws NoSuchPaddingException, NoSuchAlgorithmException, 
   2.                                                InvalidKeyException, BadPaddingException, IllegalBlockSizeException { 
   3.         byte[] kbytes = "jaas is the way".getBytes(); 
   4.         SecretKeySpec key = new SecretKeySpec(kbytes, "Blowfish"); 
   5.  
   6.         Cipher cipher = Cipher.getInstance("Blowfish"); 
   7.         cipher.init(Cipher.ENCRYPT_MODE, key); 
   8.         byte[] encoding = cipher.doFinal(secret.getBytes()); 
   9.         BigInteger n = new BigInteger(encoding); 
  10.         return n.toString(16); 
  11.     } 
  12.  
  13.     private static char[] decode(String secret) throws NoSuchPaddingException, NoSuchAlgorithmException, 
  14.                                                InvalidKeyException, BadPaddingException, IllegalBlockSizeException { 
  15.         byte[] kbytes = "jaas is the way".getBytes(); 
  16.         SecretKeySpec key = new SecretKeySpec(kbytes, "Blowfish"); 
  17.  
  18.         BigInteger n = new BigInteger(secret, 16); 
  19.         byte[] encoding = n.toByteArray(); 
  20.  
  21.         Cipher cipher = Cipher.getInstance("Blowfish"); 
  22.         cipher.init(Cipher.DECRYPT_MODE, key); 
  23.         byte[] decode = cipher.doFinal(encoding); 
  24.         return new String(decode).toCharArray(); 
  25.     } 

为什么自己写的加密方法替换这两个不行?难道只能用Blowfish加密算法吗?
0 请登录后投票
   发表时间:2010-09-29  
可以的,是我自己测试的时候弄错了一个地方,不好意思啊
0 请登录后投票
   发表时间:2010-10-25  
楼主你好!我正在做数据库连接池的自动重连这块儿,看到你的文章,非常受用,但是也遇到一个问题。

我按照楼主的“testWhileIdle”配置:

<!-- sql 心跳 -->
<property name= "testWhileIdle" value="true"/>
<property name= "testOnBorrow" value="false"/>
<property name= "testOnReturn" value="false"/>
<property name= "validationQuery" value="select 1"/>
<property name= "validationQueryTimeout" value="1"/>
<property name= "timeBetweenEvictionRunsMillis" value="60000"/>
<property name= "numTestsPerEvictionRun" value="${jdbc.maxActive}"/>

试了一下。发现自动重连的确挺好用,但是也是非常奇怪,为何数据库重启后,没等到扫描线程去恢复连接池,竟然新的请求直接可以访问到数据库了。

我用的数据库是 mysql,跟踪日志发现,这个时候的确是重建了一个连接,不过对于数据库重启后的首次用户访问,也只是针对这次访问新建了一个连接而已。等到扫描线程的时间间隔到了,才恢复了整个连接池。

我很不明白,当拿到的连接是无效的时候,又是怎么当场重建的。看到你的解释:“正因为在获取异常链接后,因为做了_conn.isClosed()判断,所以异常链接并没有返回到连接池中,所以到数据库重启恢复后,每次都是调用pool重新构造一个新的connection,所以后面就正常了”。但是看完这段解释,在 commons-dbcp 和 commons-pool 的源代码中也没有找到具体的实现。

如果楼主有时间,能否详细解释一下这个地方,最好能够将源码中具体是在哪里实现的说一下,非常感谢!
0 请登录后投票
   发表时间:2011-08-15  
技术参数解释还是看原版英文吧,
http://commons.apache.org/dbcp/configuration.html

楼主翻译的实在不敢恭维!
0 请登录后投票
   发表时间:2011-08-15  
xiemingmei 写道
技术参数解释还是看原版英文吧,
http://commons.apache.org/dbcp/configuration.html

楼主翻译的实在不敢恭维!


这么早的帖子都给你翻起来了哈,这篇文章写的比较随便,可以将就的看下。

可以看下其他的关于dbcp的文章:http://agapple.iteye.com/category/1486610
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics