У меня есть приложение, развернутое на сервере geronimo, и я использую структуру Hibernate. Я интегрировал с ней библиотеку C3P0, и она отлично работает, когда я изменил URL-адрес базы данных в hibernate.cfg.xml следующим образом:
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@iddfrvexa.grouperci.com:1574:IDDFRV</property>
<property name="hibernate.connection.username">iqa</property>
<property name="hibernate.connection.password">iqaadmin</property>
<!-- <property name="connection.datasource">java:comp/env/rci_cdofr/jdbc/Datasource</property> -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">false</property>
<property name="max_fetch_depth">0</property>
<property name="hibernate.jdbc.factory_class">net.bull.javamelody.HibernateBatcherFactory</property>
<!-- <property name="hibernate.dbcp.validationQuery">SELECT 1 FROM DUAL</property>
<property name="hibernate.dbcp.testOnBorrow">true</property> -->
<!-- c3p0 config http://www.hibernate.org/214.html -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.max_statements">50</property>
<property name = "c3p0.testConnectionOnCheckout">true</property>
но когда я использую jndi следующим образом:
<property name="connection.datasource">java:comp/env/rci_cdofr/jdbc/Datasource</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">false</property>
<property name="max_fetch_depth">0</property>
<property name="hibernate.jdbc.factory_class">net.bull.javamelody.HibernateBatcherFactory</property>
<!-- c3p0 config http://www.hibernate.org/214.html -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.max_statements">50</property>
<property name = "c3p0.testConnectionOnCheckout">true</property>
c3p0 не работает и появилась ошибка.
и когда я отлаживаю, я обнаружил, что URL-адрес базы данных был нулевым. Кто-нибудь может мне помочь?
Спасибо.
Вполне вероятно, что если вы хотите обернуть существующий источник данных JNDI версией из пула c3p0, вам придется самостоятельно создать этот источник данных на Java, а затем настроить Hibernate для поиска имени JNDI этого
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@iddfrvexa.grouperci.com:1574:IDDFRV</property>
<property name="hibernate.connection.username">iqa</property>
<property name="hibernate.connection.password">iqaadmin</property>
<!-- <property name="connection.datasource">java:comp/env/rci_cdofr/jdbc/Datasource</property> -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">false</property>
<property name="max_fetch_depth">0</property>
<property name="hibernate.jdbc.factory_class">net.bull.javamelody.HibernateBatcherFactory</property>
<!-- <property name="hibernate.dbcp.validationQuery">SELECT 1 FROM DUAL</property>
<property name="hibernate.dbcp.testOnBorrow">true</property> -->
<!-- c3p0 config http://www.hibernate.org/214.html -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.max_statements">50</property>
<property name = "c3p0.testConnectionOnCheckout">true</property>
. Я не думаю, что hibernate поддерживает перенос существующего <property name="connection.datasource">java:comp/env/rci_cdofr/jdbc/Datasource</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">false</property>
<property name="max_fetch_depth">0</property>
<property name="hibernate.jdbc.factory_class">net.bull.javamelody.HibernateBatcherFactory</property>
<!-- c3p0 config http://www.hibernate.org/214.html -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.max_statements">50</property>
<property name = "c3p0.testConnectionOnCheckout">true</property>
в пул c3p0 через настройку его _3_.