Использование соединения c3p0 Пул в приложении на основе Tomcat Spring - PullRequest
5 голосов
/ 09 марта 2011

У меня есть Spring Based Web App, работающий под tomcat 6. Теперь я хочу использовать пул соединений c3p0 вместо стандартного DBCP tomcat.Итак, из справки c3p0 doc я определил источник данных в 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" 
   />

Теперь в документации сказано, что я должен включить в * 1007 следующее*:

<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" />

Когда я запускаю кота, я получаю

javax.naming.NameNotFoundException: имя jdbc не связано в этом контексте

Без c3p0 и использование пула соединений по умолчанию в tomcat6 работает нормально.

Любая помощь приветствуется.

Ответы [ 2 ]

4 голосов
/ 08 июля 2013

эта ветка старая, поэтому ответ на будущее - у меня возникла та же проблема (так я и попал в эту ветку).

Я решил проблему после небольшого исследования.Есть некоторые определения, которые используемый источник данных не поддерживает.Когда вы удаляете эти определения и переименовываете другие, источник данных создается без проблем и без необходимости в ресурсной ссылке, упомянутой выше.

По следующей ссылке вы можете найти список поддерживаемых определений.http://www.mchange.com/projects/c3p0/#tomcat-specific

следующая ссылка на документ источника java.в соответствии с методами, перечисленными там, вы можете настроить тег ресурса в файле context.xml.http://www.mchange.com/projects/c3p0/apidocs/com/mchange/v2/c3p0/ComboPooledDataSource.html

0 голосов
/ 25 апреля 2012

Вам также нужна запись в context.xml, например ::

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

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

Я бы согласился, что у J2EE слишком много уровней косвенности. Обратите внимание, что context.xml может находиться либо в каталоге «conf» Tomcat, либо в каталоге META-INF веб-приложения (в зависимости от того, хотите ли вы, чтобы источник данных был для всех веб-приложений или только для конкретного). С записями context.xml вам не нужен ресурс-ref в web.xml.

...