用Hibernate+Proxool连Oracle RAC时报“Could not obtain connection metadata”的解决办法

    项目中一个应用持久层配置为Hibernate+Proxool,在本地连单Oracle数据库没有问题,部署到现网Oracle RAC环境时总是报错

[WARN ] Could not obtain connection metadata

java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169870336)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.153.233)(PORT=1521))'))(ERROR=(CODE=305)(EMFI=1))))

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)

.........

[ERROR] method:com.fsti.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:24)

Initial SessionFactory creation failed.

org.hibernate.HibernateException: Hibernate Dialect must be explicitly set

at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)

............

 

尝试配置了dialect,第二个错误没有了,但第一个错误还在。

    在网上搜索,有人讲是配置错误,我根据网上的使用文档仔细检查了好多遍,没发现啥问题;还好后来搜到一篇文章http://ml365.iteye.com/blog/876114,里面也是连RAC时出现错误,错误信息跟我们遇到的一模一样,这篇文章提到“之前有的是class12.jar,用这个驱动的话很不稳定,时好时坏,于是换了ojdbc.jar,好家伙!怎么折腾都没事!问题解决!”;我检查了这个应用,发现lib下既有classes12.jar,又有ojdbc14.jar,两个jar包中都有oracle.jdbc.driver.OracleDriver,看来问题可能就出在这里。

    写个读取数据的测试类部署到现网上,在命令行下执行这个类,如果在classpath里去掉ojdbc14.jar,保留classes12.jar,就出现前面遇到的Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169870336)错误;如果执行时在classpath里去掉classes12.jar,保留ojdbc14.jar,没有出现问题,顺利读到了数据。

    这样一来,解决方法就出来了,只要将classes12.jarWEB-INF\lib下删除就可以。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值