2

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

oracle.jdbc.xa.client.OracleXADataSource

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

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

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

4

3 回答 3

1

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

您可能会伪造数据源(创建一个具有相同 JNDI 名称的虚拟数据源)并假设应用程序在启动时不验证数据源模式,您将获得一个半功能运行的应用程序(这将在第一次 DB 交互时失败)。

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

更新:

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

EE.5.6.2 部署者的责任

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

于 2012-06-04T14:48:09.700 回答
0

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

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

于 2012-06-08T06:47:25.290 回答
0

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

于 2014-11-04T23:53:09.410 回答