У меня есть приложение, развернутое на сервере geronimo, и я использую Hibernate Framework. Я интегрировал библиотеку 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 не работает и появилась ошибка.
java.sql.SQLException: Соединения не могут быть получены из
базовая база данных! в
com.mchange.v2.sql.SqlUtils.toSQLException (SqlUtils.java:106) в
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection (C3P0PooledConnectionPool.java:529)
в
com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection (AbstractPoolBackedDataSource.java:128)
в
org.hibernate.connection.C3P0ConnectionProvider.getConnection (C3P0ConnectionProvider.java:78)
в
org.hibernate.cfg.SettingsFactory.buildSettings (SettingsFactory.java:84)
в
org.hibernate.cfg.Configuration.buildSettings (Configuration.java:2009)
в
org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1292)
в
com.rcibanque.framework.persistance.hibernate.HibernateUtil. (HibernateUtil.java:45)
в
com.rcibanque.framework.persistance.hibernate.HibernateTransaction.begin (HibernateTransaction.java:62)
в
com.rcibanque.common.application.ReferencesService.loadReferences (ReferencesService.java:52)
на com.rcibanque.common.start.InitServlet.init (InitServlet.java:46)
в javax.servlet.GenericServlet.init (GenericServlet.java:215) в
org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1108)
в
org.apache.catalina.core.StandardWrapper.load (StandardWrapper.java:1010)
в
org.apache.catalina.core.StandardContext.loadOnStartup (StandardContext.java:4413)
в
org.apache.catalina.core.StandardContext.start (StandardContext.java:4723)
в
org.apache.geronimo.tomcat.GeronimoStandardContext.access $ 201 (GeronimoStandardContext.java:63)
в
org.apache.geronimo.tomcat.GeronimoStandardContext $ SystemMethodValve.invoke (GeronimoStandardContext.java:398)
в
org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke (GeronimoBeforeAfterValve.java:47)
в
org.apache.geronimo.tomcat.GeronimoStandardContext.start (GeronimoStandardContext.java:251)
в
org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:799)
в
org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:779)
в
org.apache.catalina.core.StandardHost.addChild (StandardHost.java:601)
в
org.apache.geronimo.tomcat.TomcatContainer.addContext (TomcatContainer.java:369)
в
org.apache.geronimo.tomcat.TomcatWebAppContext.doStart (TomcatWebAppContext.java:512)
в
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance (GBeanInstance.java:998)
в
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart (GBeanInstanceState.java:268)
в
org.apache.geronimo.gbean.runtime.GBeanInstanceState.start (GBeanInstanceState.java:102)
в
org.apache.geronimo.gbean.runtime.GBeanInstance.start (GBeanInstance.java:541)
в
org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart (GBeanDependency.java:111)
в
org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget (GBeanDependency.java:146)
в
org.apache.geronimo.gbean.runtime.GBeanDependency $ 1.running (GBeanDependency.java:120)
в
org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent (BasicLifecycleMonitor.java:176)
в
org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access $ 300 (BasicLifecycleMonitor.java:44)
в
org.apache.geronimo.kernel.basic.BasicLifecycleMonitor $ RawLifecycleBroadcaster.fireRunningEvent (BasicLifecycleMonitor.java:254)
в
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart (GBeanInstanceState.java:294)
вorg.apache.geronimo.gbean.runtime.GBeanInstanceState.start (GBeanInstanceState.java:102) в org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive (GBeanInstanceState.java:12apache.ger.ong.ong.ong. org.runtime.GBeanInstance.startRecursive (GBeanInstance.java:555) в org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean (BasicKernel.java:379) в org.apache.geronimo.kernel.conftileUJava: 456) в org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans (ConfigurationUtil.java:493) в org.apache.geronimo.kernel.config.KernelConfigurationManager.start (KernelConfigurationManager.javag18).geronimo.kernel.config.SimpleConfigurationManager.startConfiguration (SimpleConfigurationManager.java:563) в org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration (SimpleConfigurationManager.java:5на солнце.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.refj.jg.hoggeronimo.gbean.runtime.ReflectionMethodInvoker.invoke (ReflectionMethodInvoker.java:34) в org.apache.geronimo.gbean.runtime.GBeanOperation.invoke (GBeanOperation.java:124) в org.apache.geronimst .Inan.un.r.вызвать (GBeanInstance.java:867) в org.apache.geronimo.kernel.basic.BasicKernel.invoke (BasicKernel.java:239) в org.apache.geronimo.kernel.KernelGBean.invoke (KernelGBean.java:342) на солнце.reflect.GeneratedMethodAccessor163.invoke (Неизвестный источник) по адресу sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) по адресу java.lang.reflect.Method.invoke (Method.javaonap.gache. at6)..runtime.ReflectionMethodInvoker.invoke (ReflectionMethodInvoker.java:34) в org.apache.geronimo.gbean.runtime.GBeanOperation.invoke (GBeanOperation.java:124) в org.apache.geronimo.gbean.runtime.GBeanInstance.invoke (GBeanInstance.java:867) в org.apache.geronimo.kernel.basic.BasicKernel.invoke (BasicKernel.java:239) в орг..apache.geronimo.system.jmx.MBeanGBeanBridge.(JmxMBeanServer.java:801) по адресу javax.management.remote.rmi.RMIConnectionImpl.doOperation (RMIConnectionImpl.java:1487) по адресу javax.management.remote.rmi.RMIConnectionImpl.accessI $ 300.remote..management.remote.rmi.RMIConnectionImpl.invoke (RMIConnectionImpl.java:848) в sun.reflect.GeneratedMethodAccessor150.invoke (Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:606) в sun.rmi.serverRef.UnicastServerRef.java:322) в sun.rmi.transport.Transport $ 1.run (Transport.java:177) в sun.rmi.transport.Transport $ 1.run (Transport.java:174) в java.security.AccessController.doPrivileged(Собственный метод) в sun.rmi.transport.Transport.serviceCall (Transport.java:173) в sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:556) в sun.rmi.transport.tcp.TCPTransport$ ConnectionHandler.run0 (TCPTransport.java:811) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run (TCPTransport.java:670) вjava.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) в java.lang.Thread.run (45).Причина: com.mchange.v2.resourcepool.CannotAcquireResourceException: ResourcePool не удалось получить ресурс из его первичной фабрики или источника.на com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable (BasicResourcePool.java:1319) на com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource (BasicResourcePool.java:557) на com.mchange.oresource.resource(BasicResourcePool.java:477) на com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection (C3P0PooledConnectionPool.java:525) ... еще 82
и при отладке я обнаружилURL базы данных был нулевым.Кто-нибудь может мне помочь?
Спасибо.