我的情况如下:
我必须维护一个服务器,以 Tomcat(6) 作为 Web 服务器,上面有一堆 Web 应用程序。这些 webapps 由其他人维护。我们的服务器连接到另一个部门的数据库服务器,其中包含我们的 webapps 需要显示的信息。如果没有适当的池化策略,我们的服务器很快就变成了灾难。
现在我向大家介绍了 Pooling(我选择了 BoneCP - 0.7),我们将创建一个单一的池,它保留在 Tomcat 的全局 JNDI 上下文中,并让每个人都能从中获得连接。这应该可以解决问题,我猜。
我担心的是:我怎样才能完全控制这个 Pooling ?我有一些要求:
我想在运行时手动或以编程方式重新加载 DataSource 配置(将在需要时尝试连接到备份服务器)
更改可不时更改的连接数(最小、最大、空闲连接)
最好让Tomcat保持活力
我打算建立一个使用 JMX 连接和检索信息的警报系统,并有一个重新加载池的按钮(我知道所有的池策略都有某种恢复,但是另一个数据库服务器会定期崩溃,所以手动重新启动连接有点可取)。
我想到了一些可能的解决方案:
- 告诉 Tomcat 重新启动其全局 JNDI 上下文
- 告诉 Tomcat 重新启动它的 DataSource 对象
- 告诉 BoneCP 重新启动其池,并在必要时重新创建连接
- 重新启动 Tomcat 本身
我的问题是:
- 我可以在不影响 Tomcat(和其他 webapps)的情况下安全地执行上述解决方案吗?
- 我应该费心这样做吗?(我猜只是重新启动Tomcat)