java - 如何使 J2EE weblogic 应用程序能够适应数据库问题

标签 java weblogic datasource failover weblogic11g

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

oracle.jdbc.xa.client.OracleXADataSource

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

  • 但是,如果数据库在 weblogic 服务器启动期间关闭数据源未部署在服务器和应用程序上 抛出异常,因为它没有任何可用的数据源, 部署被标记为失败,当然没有任何方法可以修复此问题 自动。

有没有办法在服务器启动期间即使数据库不存在也可以部署数据源? (这样当数据库恢复时应用程序就可以使用)

最佳答案

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

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

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

更新:

根据J2EE规范(1.5版本),资源在部署过程中进行绑定(bind)。我相信可以实现一个返回虚拟/Activity 数据源的自定义工厂。是否值得付出努力来实现? ;)

EE.5.6.2 Deployer’s Responsibilities

Bind the resource manager connection factory reference to a resource manager connection factory that exists in the operational environment. The Deployer may use, for example, the JNDI LinkRef mechanism to create a symbolic link to the actual JNDI name of the resource manager connection factory. The re- source manager connection factory type must be compatible with the type de- clared in the res-type element.

关于java - 如何使 J2EE weblogic 应用程序能够适应数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10882904/

相关文章:

java - Jsoup Element.val() 解码编码的 html 内容

android 中带有 HttpsURLConnection 的 java.net.protocolException

Java JMS 客户端 - 绑定(bind)到特定的本地端口

c# - DataGrid 方法 DataSource 未找到

java - 运行 jar 时无法确定数据库类型 NONE 的嵌入式数据库驱动程序类

Java - 如何返回父方法?

java - wait总是需要notify才能工作吗?

weblogic jsessionid

java - Weblogic xss漏洞: html character entities getting decoded in jsp

tomcat - 是否可以在不重新部署 Web 应用程序的情况下在 Tomcat 6 中动态创建数据源?