保险丝6.3 dbcp基本数据源 [英] Fuse 6.3 dbcp basic datasource
问题描述
我无法使dbcp2在JBoss保险丝6.3中工作. 下面给出的代码在Fuse容器中可以正常工作.
I am not able to get dbcp2 working in JBoss fuse 6.3. The code given below works fine in Fuse container.
<bean id="oracleDSTest" class="oracle.jdbc.pool.OracleDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" />
<property name="username" value="hr" />
<property name="password" value="hr" />
<property name="maxIdle" value="5" />
<property name="minIdle" value="1" />
<property name="initialSize" value="1" />
</bean>
<service interface="javax.sql.DataSource" ref="oracleDSTest">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/oracleDSTest" />
<entry key="datasource.name" value="oracleDSTest" />
</service-properties>
</service>
但是,如果我使用org.apache.commons.dbcp.BasicDataSource
而不是oracle.jdbc.pool.OracleDataSource
,它将失败,并显示以下错误:
But if I use org.apache.commons.dbcp.BasicDataSource
instead of oracle.jdbc.pool.OracleDataSource
it fails with the following error:
执行命令时出错:oracle.jdbc.driver.T4CConnection.isValid(I)Z
Error executing command: oracle.jdbc.driver.T4CConnection.isValid(I)Z
此错误的原因可能是什么?
What could be the reason for this error?
推荐答案
我正在使用ojdbc6-11.2.0.3.jar
,并且驱动程序在两种配置下均可工作.
I am using ojdbc6-11.2.0.3.jar
and the driver works in both configurations.
我通过JBoss Fuse Console的查询对它进行了测试
I tested it with a query from JBoss Fuse Console
jdbc:query jdbc/oracle 'select * from somewhere.sometable WHERE rownum < 5'
检查是否已安装JDBC和JNDI
Check that JDBC and JNDI are installed
features:install jdbc
features:install jndi
您可以将具有以下内容的XML文件拖放到deploy/
中,以自动部署数据源.
You can drop an XML file with the following content into deploy/
to automagically have a datasource deployed.
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="oracleDSTest" class="oracle.jdbc.pool.OracleDataSource"
destroy-method="close">
<property name="URL" value="jdbc:oracle:thin:@db.host:1521:SID" />
<property name="user" value="UrName" />
<property name="password" value="YourPasswrd" />
</bean>
<service interface="javax.sql.DataSource" ref="oracleDSTest">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/oracle" />
<entry key="datasource.name" value="oracleDSTest" />
</service-properties>
</service>
</blueprint>
BasicDataSource
<bean id="oracleDSTest" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@db.host:1521:SID"/>
<property name="username" value="UrName"/>
<property name="password" value="YourPasswrd"/>
<property name="maxIdle" value="5" />
<property name="minIdle" value="1" />
<property name="initialSize" value="1" />
</bean>
<service interface="javax.sql.DataSource" ref="oracleDSTest">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/oracle" />
<entry key="datasource.name" value="oracleDSTest" />
</service-properties>
</service>
请注意,此版本的Oracle JDBC驱动程序未不支持OSGi.
为了使所有内容都能在OSGi下工作,您可能希望从以下位置导出Oracle类:
系统包.
将ojdbc6-11.2.0.3.jar
(或您的版本)复制到JBoss Fuse的lib/
文件夹中.
编辑etc/config.properties
并将程序包添加到org.osgi.framework.system.packages
属性
Please mind that this version of Oracle JDBC driver is not OSGi ready.
To get everything to work under OSGi you may want to export Oracle classes from
the System bundle.
Copy ojdbc6-11.2.0.3.jar
(or your version) to lib/
folder of JBoss Fuse.
Edit etc/config.properties
and add the packages to org.osgi.framework.system.packages
property
org.osgi.framework.system.packages= \
other.packages.here, \
oracle.jdbc;version="11.2.0.3", \
oracle.jdbc.driver;version="11.2.0.3", \
oracle.jdbc.pool;version="11.2.0.3", \
some.other.stuff
重新启动并使用exports | grep oracle
JBossFuse:karaf@root> exports | grep oracle
0 oracle.jdbc; version=11.2.0.3
0 oracle.jdbc.driver; version=11.2.0.3
0 oracle.jdbc.pool; version=11.2.0.3
这篇关于保险丝6.3 dbcp基本数据源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!