2 Replies Latest reply on Apr 18, 2010 4:05 AM by Priyanka Sharma

    Problem of jboss server starting on connection failover

    Priyanka Sharma Newbie

      Hi

       

      I am working on failover condition of a datasource.

       

      When a request comes, if primary datasource is not available then the request should go to the secondary datasource without restarting the jboss server.

       

      I have added ha-local-tx-datasource in *-ds.xml

       

      <ha-local-tx-datasource>        

      •   <jndi-name>HADefaultDS</jndi-name>        
      •    <!-- list of connection URLs -->        
      •    <connection-url>jdbc:oracle:thin:@oraclehost:1521:SID|jdbc:oracle:thin:@oraclehost:1521:SID2         
      •    </connection-url>         
      •    <url-delimiter>|</url-delimiter>
      • </ha-local-tx-datasource>

      • Problem m facing is, i have to restart the jboss server in case of 1st datasource connection fails. I want to rid of manual server startup.
      • Please suggest me how to send the request on secondary datasource transparently.         

       

       

      Thanks in advance.

        • 1. Re: Problem of jboss server starting on connection failover
          Samarjit Chakraborty Newbie

          Dear Priyanka,

           

          I've got this reference from http://community.jboss.org/wiki/JBossJCADatabaseFailover

           

          In JBoss v5.0.x or greater <ha-local-tx-datasource> elements are no longer supported. Instead of that you can put the <connection-url> separated by delimiters in your main <local-tx-datasource> element inside *-ds.xml. Even <url-delimiter> can be included inside.

           

          I've tested it using this configuration:

           

          <datasources>
             <local-tx-datasource>  
                <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
                <!-- Datasources are not available outside the virtual machine -->
                <jndi-name>OracleDS</jndi-name>
                <connection-url>jdbc:oracle:thin:@localhost:1521:orcl|jdbc:oracle:thin:@localhost:1521:study</connection-url>
                <url-delimiter>|</url-delimiter>
                <!-- The driver class -->
                <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>     
                <!-- The login and password -->
                <user-name>xxx</user-name>
                <password>yyy</password>     
                <min-pool-size>5</min-pool-size>
                <!-- The maximum connections in a pool/sub-pool -->
                <max-pool-size>20</max-pool-size>
                <!-- The time before an unused connection is destroyed -->
                <idle-timeout-minutes>0</idle-timeout-minutes>     
                <!-- Whether to check all statements are closed when the connection is returned to the pool,
                     this is a debugging feature that should be turned off in production -->
                <track-statements/>     
                <!-- Benefits from prepared statement caching -->
                <prepared-statement-cache-size>32</prepared-statement-cache-size>     
                <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
                <metadata>
                   <type-mapping>Oracle9i</type-mapping>
                </metadata>     
             </local-tx-datasource>
          </datasources>

           

          And it is working. When i stopped the instance of database representing "url1" JBoss automatically bound the JNDI name to "url2". Please check it out.

           

          Let me know whether you succeeded or not.

           

          Best of luck

           

          Samarjit

          • 2. Re: Problem of jboss server starting on connection failover
            Priyanka Sharma Newbie

            No, i m using JBOSS eap 4.0. So, here the code of ha datasource is working but i need to restart the jboss server for switching onto secondary datasource if primary fails. If I don't restart the server then the connection gets closed when 1st datasource fails. It gives the error of Connection not open.

             

            Please help me out if you have worked on the failover condition. Thanks a lot for ur reply.