Fuse 6.3 dbcp 基础数据源
Fuse 6.3 dbcp basic datasource
我无法让 dbcp2 在 JBoss fuse 6.3 中工作。
下面给出的代码在 Fuse 容器中运行良好。
<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
它会失败并出现以下错误:
Error executing command: oracle.jdbc.driver.T4CConnection.isValid(I)Z
此错误的可能原因是什么?
我正在使用 ojdbc6-11.2.0.3.jar
并且驱动程序适用于两种配置。
我使用来自 JBoss Fuse Console
的查询对其进行了测试
jdbc:query jdbc/oracle 'select * from somewhere.sometable WHERE rownum < 5'
检查是否安装了 JDBC 和 JNDI
features:install jdbc
features:install jndi
您可以将包含以下内容的 XML 文件放入 deploy/
以自动部署数据源。
Oracle 数据源
<?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>
基本数据源
<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 下工作,您可能需要从 export Oracle 类
系统包。
将 ojdbc6-11.2.0.3.jar
(或您的版本)复制到 JBoss Fuse 的 lib/
文件夹。
编辑 etc/config.properties
并将包添加到 org.osgi.framework.system.packages
属性
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
我无法让 dbcp2 在 JBoss fuse 6.3 中工作。 下面给出的代码在 Fuse 容器中运行良好。
<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
它会失败并出现以下错误:
Error executing command: oracle.jdbc.driver.T4CConnection.isValid(I)Z
此错误的可能原因是什么?
我正在使用 ojdbc6-11.2.0.3.jar
并且驱动程序适用于两种配置。
我使用来自 JBoss Fuse Console
的查询对其进行了测试jdbc:query jdbc/oracle 'select * from somewhere.sometable WHERE rownum < 5'
检查是否安装了 JDBC 和 JNDI
features:install jdbc
features:install jndi
您可以将包含以下内容的 XML 文件放入 deploy/
以自动部署数据源。
Oracle 数据源
<?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>
基本数据源
<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 下工作,您可能需要从 export Oracle 类
系统包。
将 ojdbc6-11.2.0.3.jar
(或您的版本)复制到 JBoss Fuse 的 lib/
文件夹。
编辑 etc/config.properties
并将包添加到 org.osgi.framework.system.packages
属性
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