【问题标题】:SQL connection not available on websphere 6.1 (spring/hibernate/oracle)SQL 连接在 websphere 6.1 (spring/hibernate/oracle) 上不可用
【发布时间】:2011-10-30 11:06:52
【问题描述】:

当我们的应用程序启动时,它似乎无法连接到 websphere 6.1 上的数据库(使用 JNDI)。

在hibernate初始化连接提供者之前,日志中没有错误;它挂了 180 秒(我猜这是在数据源上设置的连接超时),然后:

[2011-08-19 10:48:27,585] INFO  [SoapConnectorThreadPool : 1] [o.h.c.ConnectionProviderFactory] Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider µ
[2011-08-19 10:51:27,628] DEBUG [SoapConnectorThreadPool : 1] [o.h.util.JDBCExceptionReporter] SQL Exception com.ibm.websphere.ce.cm.ConnectionWaitTimeoutException: Connection not available, Timed out waiting for 180029
            at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:1362) ~[com.ibm.ws.runtime_6.1.0.jar:na]
            at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:462) ~[com.ibm.ws.runtime_6.1.0.jar:na]
            at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:418) ~[com.ibm.ws.runtime_6.1.0.jar:na]
            at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) ~[spring-orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:113) [hibernate-core-3.6.5.Final.jar:3.6.5.Final]
            at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863) [hibernate-core-3.6.5.Final.jar:3.6.5.Final]
            at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859) [hibernate-core-3.6.5.Final.jar:3.6.5.Final]
            at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870) [hibernate-core-3.6.5.Final.jar:3.6.5.Final]
            at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860) [spring-orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779) [spring-orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) [spring-orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] :

数据库本身很好(我们可以使用 db 工具连接到它),并且同一个应用程序有时确实可以工作,而无需更改任何代码或配置。此外,在我们的本地 WAS 上,应用程序运行没有问题,但我们使用不同的 oracle。

欢迎对这个问题提出任何提示或想法。

更新:
经过进一步调查,似乎上述错误是因为池中没有更多可用连接。我不知道我们的代码(我希望 Hibernate 处理这个)或配置是否有问题,或者 websphere 设置是否有问题...

【问题讨论】:

    标签: oracle hibernate spring websphere connection-pooling


    【解决方案1】:

    已解决

    最后是连接池耗尽的问题;耳朵内的一个应用程序(战争)在其上下文中缺少 Spring 的 <tx:annotation-driven ... />,因此每次调用数据库都会创建一个新连接。添加这个解决了这个问题。

    【讨论】:

      【解决方案2】:

      在 Websphere 中,您可以在设置数据源时执行“test connection”。那样有用吗? 类路径上的 ojdbc4.jar 也是?在管理控制台上可见-> jdbc 提供程序。并确保此条目的参数正确(环境 -> websphere 变量)

      【讨论】:

      • 德克萨斯州。 “测试连接”工作正常,并且 ojdbc5.jar 在类路径中。
      • 可能是完全愚蠢的事情,但您是否检查过 ojdbc.jar 的版本在 websphere 中是否正常工作?我听说过 ojdbc.jar 和某些 websphere 修复包不匹配的故事。超时真的让我觉得某处发生了 jar 冲突,在这种情况下,Websphere 始终是我的常见嫌疑人,但也可能是 hibernate/spring。
      • @Jerry:jar 很好,经过进一步调查,似乎池中没有更多可用连接,因为连接永远不会关闭。据我们所知,我们的代码/配置很好,但我们会进一步研究。你也许现在这是一个 websphere 配置?
      • 从您的问题中,我了解到从未建立与数据库的连接,并且它挂在休眠的初始化上。 180 秒的等待时间支持这一点,这是数据库连接的默认超时(数据源 -> 连接池属性,您还可以在此处增加初始池大小和最大池大小)。你能在环境中切换数据库吗?如果应用程序在其他环境中运行,则代码中显然没有大错误,如果您的池大小假设成立,则全新安装并重新启动服务器至少应该显示一些数据库活动。
      • 确实是连接池耗尽的问题;耳朵内的应用程序(战争)从其上下文中丢失了 Spring 的 ,因此每次调用数据库都会创建一个新连接。添加这个解决了这个问题。无论如何,请发送您的帮助。
      猜你喜欢
      • 2016-12-10
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 2016-01-27
      • 2015-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      相关资源
      最近更新 更多