Hi,
I am trying to get the MasterSlave configuration to work properly using JDBC
persistence with C3P0 Connection pool with my Oracle DataSource.
I have a single instance of my client application and two ActiveMQ instances
on different ports.
When I try to start up each of the ActiveMQ instances, the startup fails,
because the ActiveMQ can not get a lock on the database. At this point I
don't even have my client app running.
First the console displays some information during the startup...
INFO | A checked-out resource is overdue, and will be destroyed:
com.mchange.v2.c3p0.impl.newpooledconnect...@7a4489 |
com.mchange.v2.resourcepool.BasicResourcePool | Timer-0
DEBUG | Preparing to destroy resource:
com.mchange.v2.c3p0.impl.newpooledconnect...@13f136e |
com.mchange.v2.resourcepool.BasicResourcePool |
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1
DEBUG | Preparing to destroy PooledConnection:
com.mchange.v2.c3p0.impl.newpooledconnect...@13f136e |
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool |
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1
....
ERROR | Failed to update database lock: java.sql.SQLException: Closed
Connection | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | ActiveMQ
Cleanup Timer
java.sql.SQLException: Closed Connection
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:868)
at
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:787)
at
com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:213)
at
org.apache.activemq.store.jdbc.DefaultDatabaseLocker.keepAlive(DefaultDatabaseLocker.java:159)
at
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.databaseLockKeepAlive(JDBCPersistenceAdapter.java:508)
at
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter$1.run(JDBCPersistenceAdapter.java:203)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
....
INFO | No longer able to keep the exclusive lock so giving up being a
master | org.apache.activemq.store.jdbc.JDBCPersistenceAdapter | ActiveMQ
Cleanup Timer
INFO | ActiveMQ Message Broker (localhost,
ID:4FIL46076-4276-1267705377671-0:0) is shutting down |
org.apache.activemq.broker.BrokerService | ActiveMQ Cleanup Timer
...
And then the AMQ instance shuts down, as expected from the log messages.
Here is the DataSource and connector configurations I am using:
<bean id="oracle-ds" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl"
value="jdbc:oracle:thin:@111.111.111.111:1521:abcd"/>
<property name="idleConnectionTestPeriod" value="100" />
<property name="maxIdleTime" value="1800"/>
<property name="minPoolSize" value="13"/>
<property name="maxPoolSize" value="50"/>
<property name="unreturnedConnectionTimeout" value="30"/>
<property name="maxConnectionAge" value="1800"/>
<property name="numHelperThreads" value="6"/>
<property name="maxStatements" value="0"/>
<property name="user" value="username"/>
<property name="password" value="password"/>
</bean>
...
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#oracle-ds" />
</persistenceAdapter>
...
Has anyone succesfully used C3P0 connection pool with Oracle and ActiveMQ?
Does anyone have any idea why this setup does not work?
Thank you for your help!
--
View this message in context:
http://old.nabble.com/MasterSlave-%7C-Spring-%2B-Camel-%2B-ActiveMQ-%2B-C3P0-%2B-Oracle-tp27780184p27780184.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.