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 Fri, 05 Mar 2010 15:29:59 GMT

Not sure.  If you go to c3p0's website there probably is an explanation for
that config...


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


Mime
View raw message