2017-06-13 13 views
0

JBoss fuse 6.3でdbcp2を動作させることができません。 以下のコードは、ヒューズコンテナで正常に動作します。ヒューズ6.3 dbcpの基本データソース

<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

このエラーの理由何ができますか?

+0

に確認してください? –

+0

ojdbc(11.2.0.0) – muru

+0

私のマシンではすべて正常に動作することを確認するまでに時間がかかりました。私は少し異なるバージョンを使用しています。 –

答えて

2

私はojdbc6-11.2.0.3.jarを使用しています。ドライバは両方の構成で動作します。

は、私はあなたが自動的に持ってdeploy/に次の内容のXMLファイルをドロップすることができ

features:install jdbc 
features:install jndi 

JDBCおよびJNDIがインストールされていることをJBossのヒューズコンソール

jdbc:query jdbc/oracle 'select * from somewhere.sometable WHERE rownum < 5' 

チェックからのクエリでそれをテストしましたデプロイされたデータソース

のOracleDataSource

<?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 readyです。 すべてをOSGiで動作させるには、Oracleクラスを システムバンドルからエクスポートするとよいでしょう。
ojdbc6-11.2.0.3.jar(またはご使用のバージョン)をJBoss Fuseのlib/フォルダにコピーしてください。
編集etc/config.propertiesorg.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 

再起動するようにパッケージを追加し、Oracleジャーのバージョンを使用しているexports | grep oracle

JBossFuse:[email protected]> 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 
+0

ありがとう、それは良い仕事。また、ヒューズコンテナにdbcpを追加する必要があります。私は 'mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3を使っています。これは、mvn:install -s wrap:mvn:commons-dbcp/commons-dbcp /1.4 – muru

+0

です。 '、' features:install camel-mybatis'と一緒にインストールされます –