activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From magellings <mark.gelli...@qg.com>
Subject Re: MasterSlave | Spring + Camel + ActiveMQ + C3P0 + Oracle
Date Thu, 04 Mar 2010 14:41:17 GMT

we are using c3p0 with sql server.  Be sure there is a record inserted into
the lock table.  If there isn't after 30s the master broker will fail as you
see and shutdown.  You can ensure the record is inserted if you set
createTablesOnStartup to true, but then I'd recommend setting this back to
false.  You could also just query the lock table to see if the record is
there.  If not, below is how to insert it, as well as our config...


    <persistenceAdapter>
      <jdbcPersistenceAdapter dataSource="#mssql-ds"
createTablesOnStartup="false" />
    </persistenceAdapter>


  <bean id="mssql-ds" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
    <property name="driverClass"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <property name="jdbcUrl"
value="jdbc:sqlserver://xxx:1433;databaseName=ActiveMQSmartStudio"/>
    <property name="user" value="xxx"/>
    <property name="password" value="xxx"/>
    <property name="acquireRetryAttempts" value="100"/>
    <property name="testConnectionOnCheckout" value="true"/>
    <property name="testConnectionOnCheckin" value="true"/>
    <property name="automaticTestTable" value="ACTIVEMQ_CONN_TEST"/>
    <property name="acquireRetryDelay" value="5000"/>
    <property name="preferredTestQuery" value="SELECT 1"/>
  </bean>

INSERT INTO ACTIVEMQ_LOCK(ID) VALUES (1)



juhasiltanen wrote:
> 
> 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.NewPooledConnection@7a4489 |
> com.mchange.v2.resourcepool.BasicResourcePool | Timer-0
> DEBUG | Preparing to destroy resource:
> com.mchange.v2.c3p0.impl.NewPooledConnection@13f136e |
> com.mchange.v2.resourcepool.BasicResourcePool |
> com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1
> DEBUG | Preparing to destroy PooledConnection:
> com.mchange.v2.c3p0.impl.NewPooledConnection@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-tp27780184p27781613.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message