JBoss JDBC驱动报错问题分析与解决

在JBoss环境中,初次使用JDBC驱动建立数据库连接时,可能会遇到错误,表现为无法创建连接。该问题源于驱动加载问题。解决办法包括将JDBC驱动复制到jboss_server_home/lib目录或在EAR包内指定驱动位置。问题的根本原因在于JBoss的Class_loader机制,特别是全局共享的UCL未包含JDBC驱动。通过理解JDBC驱动管理和JBoss DataSource的工作原理,可以有效避免此类问题。
摘要由CSDN通过智能技术生成
 

问题描述:

JBoss使用JDBC驱动时,第一次建立如果库连接会抛出类似于下面的异常

21:21:36,666 WARN  [JBossManagedConnectionPool] Throwable while attempting to get a new connection: null

org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL: class: oracle.jdbc.driver.OracleDriver, url: jdbc:oracle:thin:@ 10.0.32 .25:1521:sid)

        at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:179)

        at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:565)

但在第二次取得数据库连接时却是正常的。

 

解决方法一:

JDBC驱动拷贝到jboss_server_home/lib目录下。这个方法对于每一个jboss环境都需要进行这样的拷贝,比较麻烦。

 

解决方法二:

webapp打包到一个ear包里,在ear包的META-INF/application.xml文件里添加类似下面的内容:

    <module>

        <java>oracle_jdbc_path/ojdbc14.jar</java>

    </module>

其中的oracle_jdbc_path是相对于ear包的一个路径,以指示驱动程序的位置,通常可以设置成ear中包含的war包的lib目录。这种方法使部署和jboss的环境无关。

对于第二次方法也可以将*-ds.xml文件一起打包到ear里,只要在ear包的META-INF/application.xml添加类似下面的内容就可以了:

    <module>

        <java>oracle-ds.xml</java>

</module>

这样使用数据库连接池的配置也随ear一起发布。

 

问题分析:

出现这个问题的JBoss服务器配置文件jboss_server_home/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml里的UseJBossWebLoader

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值