Menu

Configure Open Message Queue to use with HA JDBC in Glassfish Server v2.1

Help
2013-11-22
2013-11-22
  • - 2013-11-22

    Hi all,
    I am trying to configure Open Message Queue database store to use HA JDBC in Glassfish Server v2.1.
    Below is the configuration I have done:

    imq.instanceconfig.version=300
    imq.cluster.ha=true
    imq.cluster.clusterid=cluster1
    imq.brokerid=broker1
    imq.persist.jdbc.dbVendor=hajdbc
    imq.persist.jdbc.hajdbc.driver=net.sf.hajdbc.sql.Driver
    imq.persist.jdbc.hajdbc.user=imqdb
    imq.persist.jdbc.hajdbc.password=imqdb
    imq.persist.jdbc.opendburl=jdbc\:ha-jdbc\:Derbyimq
    imq.persist.store=jdbc
    

    config.properties

    <?xml version="1.0" encoding="UTF-8"?>
    <ha-jdbc xmlns="urn:ha-jdbc:cluster:3.0">
        <sync id="passive"/>
        <state id="simple"/>
        <cluster balancer="round-robin" default-sync="passive" dialect="derby" meta-data-cache="lazy" transaction-mode="serial" failure-detect-schedule="* * * * * ?" eval-current-date="true" eval-current-time="true" eval-current-timestamp="true">
            <database id="DerbyimqA" location="jdbc:derby://localhost:1527/imqdb" weight="100" local="true" >
                <user>imqdb</user>
                <password>64:aW1xZGI=</password>
            </database>
            <database id="DerbyimqB" location="jdbc:derby://localhost:1527/imqdb">
                <user>imqdb</user>
                <password>64:aW1xZGI=</password>
            </database>
        </cluster>
    </ha-jdbc>
    

    ha-jdbc-Derbyimq.xml

    Java Runtime: 1.6.0_25 Sun Microsystems Inc. C:\Program Files\Java\jdk1.6.0_25\jre
    [22/Nov/2013:14:29:08 SGT]    IMQ_HOME=D:\GlassFishESBv22\glassfish\imq
    [22/Nov/2013:14:29:08 SGT] IMQ_VARHOME=D:\GlassFishESBv22\glassfish\domains\domain1\imq
    [22/Nov/2013:14:29:08 SGT] 
    [22/Nov/2013:14:29:08 SGT] Java Heap Size: max=4019584k, current=4019584k
    [22/Nov/2013:14:29:08 SGT] Arguments: -port 7676 -name imqbroker -imqhome D:\GlassFishESBv22\glassfish\imq -varhome D:\GlassFishESBv22\glassfish\domains\domain1\imq -libhome D:\GlassFishESBv22\glassfish\imq\lib -useRmiRegistry -rmiRegistryPort 8686 -save -silent
    [22/Nov/2013:14:29:08 SGT] Embedded Broker 
    [22/Nov/2013:14:29:08 SGT] [B1202]: Broker broker1 is running in HA mode as part of the cluster1 cluster
    [22/Nov/2013:14:29:08 SGT] [B1004]: Starting the portmapper service using tcp [ 7676, 50, * ] with min threads 1 and max threads of 1 
    [22/Nov/2013:14:29:08 SGT] [B1060]: Loading persistent data...
    [22/Nov/2013:14:29:08 SGT] Using plugged-in persistent store:
        version=410
        brokerid=broker1
        database connection url=jdbc:ha-jdbc:Derbyimq
        database user=imqdb
    [22/Nov/2013:14:29:08 SGT] [B1170]: Auto Creation of plugged-in persistent store is enabled
    

    imq log.txt

    However, during the startup of the Glassfish Application Server, the following exception was occured and the Glassfish Application server was unable to start.

    [#|2013-11-22T15:15:52.388+0800|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=10;_ThreadName=main;| INFO [main] (JBossLogger.java:57) - Initializing HA-JDBC 3.0.0-rc-1 from D:\GlassFishESBv22\glassfish\ha-jdbc-Derbyimq.xml
    |#]
    
    [#|2013-11-22T15:16:55.166+0800|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=10;_ThreadName=main;|ERROR [main] (JBossLogger.java:57) - Database DerbyimqB from cluster net.sf.hajdbc.sql.DatabaseClusterImpl@1d28b30e was deactivated
    java.sql.SQLTransactionRollbackException: A lock could not be obtained within the time requested
        at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
        at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
        at org.apache.derby.client.am.PreparedStatement.executeUpdate(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at net.sf.hajdbc.util.reflect.Methods.invoke(Methods.java:49)
        at net.sf.hajdbc.invocation.SimpleInvoker.invoke(SimpleInvoker.java:53)
        at net.sf.hajdbc.invocation.AllResultsCollector$Invocation.call(AllResultsCollector.java:142)
        at net.sf.hajdbc.util.concurrent.SynchronousExecutor$EagerFuture.<init>(SynchronousExecutor.java:406)
        at net.sf.hajdbc.util.concurrent.SynchronousExecutor.invokeAll(SynchronousExecutor.java:175)
        at net.sf.hajdbc.util.concurrent.SynchronousExecutor.invokeAll(SynchronousExecutor.java:152)
        at net.sf.hajdbc.invocation.AllResultsCollector.collectResults(AllResultsCollector.java:84)
        at net.sf.hajdbc.invocation.InvokeOnManyInvocationStrategy.invoke(InvokeOnManyInvocationStrategy.java:62)
        at net.sf.hajdbc.invocation.InvocationStrategies.invoke(InvocationStrategies.java:35)
        at net.sf.hajdbc.invocation.LockingInvocationStrategy.invoke(LockingInvocationStrategy.java:60)
        at net.sf.hajdbc.sql.LocalTransactionContext$2.invoke(LocalTransactionContext.java:96)
        at net.sf.hajdbc.sql.AbstractInvocationHandler.invokeOnProxy(AbstractInvocationHandler.java:95)
        at net.sf.hajdbc.sql.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:85)
        at net.sf.hajdbc.sql.ChildInvocationHandler.invoke(ChildInvocationHandler.java:44)
        at $Proxy45.executeUpdate(Unknown Source)
        at com.sun.messaging.jmq.jmsserver.persist.jdbc.BrokerDAOImpl.update(BrokerDAOImpl.java:368)
        at com.sun.messaging.jmq.jmsserver.persist.jdbc.JDBCStore.updateBrokerInfo(JDBCStore.java:2717)
        at com.sun.messaging.jmq.jmsserver.cluster.ha.HAClusterManagerImpl$HAClusteredBrokerImpl.updateEntry(HAClusterManagerImpl.java:1247)
        at com.sun.messaging.jmq.jmsserver.cluster.ha.HAClusterManagerImpl$HAClusteredBrokerImpl.resetTakeoverBroker(HAClusterManagerImpl.java:886)
        at com.sun.messaging.jmq.jmsserver.cluster.ha.HAClusterManagerImpl.addBroker(HAClusterManagerImpl.java:310)
        at com.sun.messaging.jmq.jmsserver.cluster.ClusterManagerImpl.initialize(ClusterManagerImpl.java:912)
        at com.sun.messaging.jmq.jmsserver.cluster.ha.HAClusterManagerImpl.initialize(HAClusterManagerImpl.java:188)
        at com.sun.messaging.jmq.jmsserver.Globals.initClusterManager(Globals.java:903)
        at com.sun.messaging.jmq.jmsserver.Broker._start(Broker.java:777)
        at com.sun.messaging.jmq.jmsserver.Broker.start(Broker.java:410)
        at com.sun.messaging.jmq.jmsserver.BrokerProcess.start(BrokerProcess.java:219)
        at com.sun.messaging.jmq.jmsserver.DirectBrokerProcess.start(DirectBrokerProcess.java:87)
        at com.sun.messaging.jmq.jmsclient.runtime.impl.BrokerInstanceImpl.start(BrokerInstanceImpl.java:146)
        at com.sun.messaging.jms.ra.EmbeddedBrokerRunner.start(EmbeddedBrokerRunner.java:284)
        at com.sun.messaging.jms.ra.LifecycleManagedBroker.start(LifecycleManagedBroker.java:337)
        at com.sun.messaging.jms.ra.ResourceAdapter.start(ResourceAdapter.java:308)
        at com.sun.enterprise.connectors.ActiveInboundResourceAdapter$1.run(ActiveInboundResourceAdapter.java:180)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.enterprise.connectors.ActiveInboundResourceAdapter.startResourceAdapter(ActiveInboundResourceAdapter.java:174)
        at com.sun.enterprise.connectors.ActiveInboundResourceAdapter.<init>(ActiveInboundResourceAdapter.java:132)
        at com.sun.enterprise.connectors.system.ActiveJmsResourceAdapter.<init>(ActiveJmsResourceAdapter.java:234)
        at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:107)
        at com.sun.enterprise.connectors.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:300)
        at com.sun.enterprise.connectors.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:445)
        at com.sun.enterprise.connectors.ConnectorRuntime.createActiveResourceAdapter(ConnectorRuntime.java:230)
        at com.sun.enterprise.jms.JmsProviderLifecycle.onStartup(JmsProviderLifecycle.java:451)
        at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:449)
        at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:134)
        at com.sun.enterprise.server.PEMain.run(PEMain.java:409)
        at com.sun.enterprise.server.PEMain.main(PEMain.java:336)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.enterprise.server.PELaunch.main(PELaunch.java:415)
    Caused by: org.apache.derby.client.am.SqlException: A lock could not be obtained within the time requested
        at org.apache.derby.client.am.Statement.completeExecute(Unknown Source)
        at org.apache.derby.client.net.NetStatementReply.parseEXCSQLSTTreply(Unknown Source)
        at org.apache.derby.client.net.NetStatementReply.readExecute(Unknown Source)
        at org.apache.derby.client.net.StatementReply.readExecute(Unknown Source)
        at org.apache.derby.client.net.NetPreparedStatement.readExecute_(Unknown Source)
        at org.apache.derby.client.am.PreparedStatement.readExecute(Unknown Source)
        at org.apache.derby.client.am.PreparedStatement.flowExecute(Unknown Source)
        at org.apache.derby.client.am.PreparedStatement.executeUpdateX(Unknown Source)
        ... 55 more
    |#]
    

    server.log

    Please assist me whenever possible. Thank you !

     
  • Paul Ferraro

    Paul Ferraro - 2013-11-22

    According to your ha-jdbc configuration file, the 2 databases in your cluster refer to the same database instance. This is guaranteed to result in lock acquisition failures.

     

Log in to post a comment.