activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From juhasiltanen <juhasilta...@gmail.com>
Subject Re: MasterSlave | Spring + Camel + ActiveMQ + C3P0 + Oracle
Date Fri, 05 Mar 2010 08:21:43 GMT

Hi,

Thank you for your quick reply!

It is now working as it should, I combined the properties we had with the
properties you had. Only one property needed to be excluded and it was
unreturnedConnectionTimeout.

Do you have an idea why this property is causing a failure to acquire a lock
/ conenction failure?

My DS bean configuration is now:

  <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:@xxx:1521:xxx"/>
    <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="maxConnectionAge" value="1800"/>
    <property name="minPoolSize" value="13"/>
    <property name="maxPoolSize" value="50"/>
    <property name="maxIdleTime" value="1800"/>
    <property name="idleConnectionTestPeriod" value="100" />
    <property name="numHelperThreads" value="6"/>
    <property name="maxStatements" value="0"/>
  </bean> 

And at least in out development environment it is working ok. Thank you for
your help!


magellings wrote:
> 
> 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-tp27780184p27791033.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message