繁体   English   中英

如何使J2EE Weblogic应用程序具有抵御数据库问题的能力

[英]How to make J2EE weblogic application resilient to database problems

我有一个在Oracle Weblogic Server 11g上运行的Web应用程序。 它使用在应用程序服务器中定义的数据源连接到Oracle数据库(也是11g),其类为

oracle.jdbc.xa.client.OracleXADataSource

  • 如果由于某种原因数据库不存在然后又返回,则该应用程序运行正常(尝试访问数据库时它会获得异常,但这很好,然后当数据库返回时可以再次获得一些新的连接)

  • 但是, 如果在weblogic服务器启动期间数据库已关闭则数据源未部署在服务器上,并且应用程序将引发异常,因为它没有可用的任何数据源,部署被标记为失败,并且当然没有任何东西可以自动修复。

即使服务器启动过程中不存在数据库,是否有办法部署数据源 (这样,当数据库恢复时该应用程序变得可用)

为什么要在没有有效数据源的情况下部署应用程序?

您可能会伪造数据源(使用相同的JNDI名称创建虚拟数据源),并假设该应用程序在启动时未验证数据源架构,您将获得一个半功能运行的应用程序(该操作将在第一次DB交互中失败)。

当真正的数据源启动并运行时,您将无法切换到它。 您仍然必须重新启动应用程序服务器。

更新:

根据J2EE规范(1.5版),在部署过程中会绑定资源。 我相信可以实现一个自定义Factory,该工厂将返回虚拟/活动数据源。 值得付出努力来实施吗? ;)

EE.5.6.2部署者的责任

将资源管理器连接工厂引用绑定到操作环境中存在的资源管理器连接工厂。 部署者可以使用例如JNDI LinkRef机制来创建到资源管理器连接工厂的实际JNDI名称的符号链接。 资源管理器连接工厂类型必须与res-type元素中声明的类型兼容。

您正在寻找的选项是“连接创建重试”,请检查此链接

“如果设置并且在创建数据源时数据库不可用,WebLogic Server将在您指定的秒数后尝试再次在池中创建连接,并且将继续尝试创建连接,直到成功为止。此选项适用到在服务器启动时创建数据源时创建的连接...”

将“初始容量”设置为http://docs.oracle.com/cd/E14571_01/web.1111/e13814/jdbc_tuning.htm#i1028616 :启动时的weblogic不会尝试创建任何连接,并且如果数据库不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM