Jakarta ee 有没有办法重新加载Tomcat';运行时的连接池?

Jakarta ee 有没有办法重新加载Tomcat';运行时的连接池?,jakarta-ee,tomcat,connection-pooling,bonecp,Jakarta Ee,Tomcat,Connection Pooling,Bonecp,我的情况如下: 我必须维护一个服务器,用Tomcat(6)作为web服务器,上面有一堆web应用程序。这些Web应用程序由其他人维护。我们的服务器连接到另一个部门的DB服务器,该服务器包含我们的Web应用程序需要显示的信息。如果没有适当的池策略,我们的服务器很快就变成了灾难 现在,我向所有人介绍了池(我选择了BoneCP-0.7),我们将创建一个保持在Tomcat的全局JNDI上下文中的池,并让所有人都从中获得连接。我想这应该能解决问题 我关心的是:我怎样才能完全控制这个池?我有一些要求:

我的情况如下:

  • 我必须维护一个服务器,用Tomcat(6)作为web服务器,上面有一堆web应用程序。这些Web应用程序由其他人维护。我们的服务器连接到另一个部门的DB服务器,该服务器包含我们的Web应用程序需要显示的信息。如果没有适当的池策略,我们的服务器很快就变成了灾难

  • 现在,我向所有人介绍了池(我选择了BoneCP-0.7),我们将创建一个保持在Tomcat的全局JNDI上下文中的池,并让所有人都从中获得连接。我想这应该能解决问题

我关心的是:我怎样才能完全控制这个池?我有一些要求:

  • 我想在运行时以手动或编程方式重新加载数据源配置(将在需要时尝试连接到备份服务器)

  • 更改可随时更改的连接数(最小、最大、空闲连接)

  • 最好让雄猫活着

  • 我打算构建一个警报系统,使用JMX连接和检索信息,并有一个按钮来重新加载池(我知道所有池策略都有某种恢复,但另一个DB服务器会定期崩溃,因此手动重新启动连接更可取)

我想到了一些可能的解决办法:

  • 告诉Tomcat重新启动其全局JNDI上下文
  • 告诉Tomcat重新启动其数据源对象
  • 告诉BoneCP重新启动其池,并在必要时重新创建连接
  • 重新启动Tomcat本身
我的问题是:

  • 我能安全地执行上述解决方案而不影响Tomcat(和其他Web应用程序)吗
  • 我应该费心做这些吗?(我想,只要重新启动Tomcat即可)
  • (为什么有人选择BoneCP?我所听到的关于BoneCP的每一个问题都可以通过海报切换到另一个CP来解决,一切都正常。BoneCP甚至还没有达到v1.0。我想这是下一个大问题。只是还没到。)

    Tomcat附带了对ApacheCommonsDBCP和Tomcat自己的内置Tomcat池的支持:只需按照Tomcat文档配置JNDI连接池,就可以了

    不幸的是,Tomcat目前不支持在运行时重新加载数据源。您可以通过JMX更改属性,但这些更改没有效果。您也可以关闭该池,但最终得到的是一个关闭的池,而该池将一文不值


    登录增强功能可能是一件好事。

    我想是因为内置的dbcp不够好。这就是为什么他们不断地重新发明轮子,但有很好的理由。我有点尊重你说的“我想……”是什么意思?您不知道为什么要使用备用连接池?你至少应该退房