5

Tomcat 6 で Spring ベースの Web アプリケーションを実行しています。ここで、Tomcat のデフォルト DBCP の代わりに c3p0 接続プールを使用したいと考えています。したがって、c3p0 ヘルプドキュメントから、データ ソースを次のcontext.xmlように定義しました。

<Resource name="jdbc/sample" auth="Container"
     driverClassName="oracle.jdbc.driver.OracleDriver"
     url="jdbc:oracle:thin:@someServer:1551:xyz"
     username="userName"
     password="pwd"
     validationQuery="SELECT 1 FROM dual"
     testOnBorrow="true"
     testWhileIdle="true"
     factory="org.apache.naming.factory.BeanFactory" 
     type="com.mchange.v2.c3p0.ComboPooledDataSource" 
     maxPoolSize="20" 
     minPoolSize="5" 
     acquireIncrement="1" 
   />

さて、ドキュメントによると、次のものを に含める必要がありますweb.xml

<resource-ref>
  <res-ref-name>jdbc/sample</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref> 

には次のものもありますapplicationContext.xml

<jee:jndi-lookup id="sampleDataSource" resource-ref="true"
    jndi-name="jdbc/sample" />

Tomcatを起動すると、

javax.naming.NameNotFoundException: 名前 jdbc はこのコンテキストにバインドされていません

c3p0 を使用せず、tomcat6 でデフォルトの接続プールを使用しても問題なく動作します。

どんな助けでも大歓迎です。

4

2 に答える 2

4

このスレッドは古いので、答えは将来の使用のためのものです - 私は同じ問題を抱えていました (これが私がこのスレッドにたどり着いた方法です)。

小さな調査を行った後、問題を解決しました。使用されているデータ ソースがサポートしていない定義がいくつかあります。これらの定義を削除して他の名前を変更すると、データ ソースは問題なく作成され、上記の resourceLink も必要ありません。

次のリンクで、サポートされている定義のリストを見つけることができます。 http://www.mchange.com/projects/c3p0/#tomcat 固有

次のリンクは、データ ソースの Java ドキュメントへのリンクです。そこにリストされているメソッドに従って、context.xml ファイルでリソース タグを構成できます。 http://www.mchange.com/projects/c3p0/apidocs/com/mchange/v2/c3p0/ComboPooledDataSource.html

于 2013-07-08T08:32:30.020 に答える
1

context.xml にもエントリが必要です。

<Context antiJARLocking="true" swallowOutput="true">

    <ResourceLink
     global="jdbc/sample"
     name="jdbc/sample"
     type="javax.sql.DataSource" />
</Context>

J2EE にはあまりにも多くのレベルの間接性があることに同意します。context.xml は、Tomcat の「conf」ディレクトリまたは webapp の META-INF ディレクトリのいずれかに存在できることに注意してください (データ ソースをすべての Web アプリ用にするか、特定の 1 つだけにするかによって異なります)。context.xml エントリを使用すると、web.xml の resource-ref は必要ありません。

于 2012-04-24T21:33:39.020 に答える