Openfire整合自有用户,使用内置连接池
Openfire版本:3.8.2
使用openfire整合自己的用户库之后,看其JDBCAuthProvider源码,可以看到getConnection()方法是直接从JDBC驱动去获得一个新的连接,如果在数据库连接教慢或者请求较多的时候会造成效率极其低下甚至有可能客户端登录超时,这是我们不能允许的,所以我们必须给他做些小改造,比如:加个连接池。
Step 1: 拷贝JDBCAuthProvider建立自己的一个认证提供器。
Step 2: 修改其getConnection()方法,加入ProxoolDataSource
Step 3: 其中需要的所有的参数都通过系统参数的方式进行设置,在加载的时候加入到系统中,这里就不做过多的介绍了。
Step 4: 将这个单独的java文件进行jar包打出来,放到openfire的lib目录下。
这样就安装完成了。
从日志可以看出每个连接获取的时间,并且可以看到是否是固定的设置的那么多个连接一直在池中使用。[/size]
PS:当然,你的数据库连接池,应该是写在database包里面去,这样你的连接池就可以给其他的插件应用使用,所以你可以做一些修改,从自己的AuthProvider的getConnection去请求自己写的一个DBConnectionManager里面去取这个连接,所有连接池的信息在DBConnectionManager的getConnection里面去取。我这里只是一个例子,做下记录。
类似:
private Connection getConnection() throws SQLException {
if (useConnectionProvider)
return DbConnectionManager.getConnection();
return WXDBConnectionManager.getConnection();
}
[版权声明]本站内文章,如未特别注明,均系原创或翻译之作,本人保留一切权利。本站原创及译作未经本人许可,不得用于商业用途及传统媒体。网络媒体可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。及此说明,重中之重。