如何使J2EE weblogic应用程序适应数据库问题

时间:2012-06-04 14:21:21

标签: java weblogic datasource failover weblogic11g

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

  

oracle.jdbc.xa.client.OracleXADataSource

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

<强>更新

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

  

EE.5.6.2部署人员的责任

     

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

答案 1 :(得分:0)

您要查找的选项是“连接创建重试”,请查看此link

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

答案 2 :(得分:0)

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