【发布时间】:2012-06-04 14:21:21
【问题描述】:
我有一个在 Oracle Weblogic Server 11g 上运行的 Web 应用程序。 它使用应用服务器中定义的数据源连接到Oracle数据库(也是11g),它的类是
oracle.jdbc.xa.client.OracleXADataSource
如果由于某种原因数据库不存在,然后出现 返回,应用程序运行正常(尝试时出现异常 访问数据库,但这很好,然后可以再次获得一些新的 数据库恢复时的连接)
但是,如果数据库在 weblogic 服务器启动期间关闭, 数据源未部署在服务器和应用程序上 抛出异常,因为它没有任何可用的数据源, 部署被标记为失败,当然没有什么可以修复这个 自动。
有没有办法在服务器启动期间在数据库不存在的情况下部署数据源? (这样当数据库恢复时应用程序变得可用)
【问题讨论】:
-
另一种选择可能是在服务器启动后部署数据源,通过 JMX 或通过 WebLogic 启动类(请参阅:docs.oracle.com/cd/E15051_01/wls/docs103/jdbc_admin/config.html)。这是一个选择吗?不过,我同意@Funtik 的回答。一般来说,在大多数情况下,您的数据库服务器应该至少与您的应用服务器一样可靠。
-
首先,我完全同意: 1. 数据库服务器应该和应用服务器一样可靠。 2. 有一个需要数据库才能运行的应用程序没有它是有意义的。
-
但是,我看不出服务器的启动顺序很重要的任何合理的逻辑理由:在我的情况下,两台机器都在虚拟化基础架构上运行,并且存在维护阶段或事件在它上面,当机器重新启动时,需要对服务器进行一些人工干预,但我发现它没用。如果数据源在这里,应用程序可以做一种“预启动”,并在获得数据库连接时真正初始化自己。你不觉得有道理吗?
-
@DenisR。对不起,如果我不清楚。你说的很有道理。我的意思不是改变两台服务器的启动顺序,而是在不部署数据源的情况下启动 WebLogic 服务器,稍后在确定数据库处于健康状态时部署它。您可以通过 JMX 甚至通过 Java 代码来做到这一点。不过,我不确定这是否符合您的需求。
标签: java weblogic datasource failover weblogic11g