我有一个在 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/