保险丝6.3 dbcp基本数据源 [英] Fuse 6.3 dbcp basic datasource

查看:70
本文介绍了保险丝6.3 dbcp基本数据源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法使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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆