User: chirino 
  Date: 02/01/17 09:18:31

  Modified:    src/main/org/jboss/ejb/plugins/jms JMSContainerInvoker.java
  Log:
  Enhanced so that the MDB deploys even if the JMS provider is not running
  when it gets deployed.  It will jump into recovery thread that trys to re-establish
  it's connection to the JMS provider.
  
  Revision  Changes    Path
  1.42      +34 -10    
jboss/src/main/org/jboss/ejb/plugins/jms/JMSContainerInvoker.java
  
  Index: JMSContainerInvoker.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/jms/JMSContainerInvoker.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- JMSContainerInvoker.java  2002/01/08 22:27:15     1.41
  +++ JMSContainerInvoker.java  2002/01/17 17:18:30     1.42
  @@ -56,7 +56,7 @@
    *      </a>
    * @author    <a href="mailto:[EMAIL PROTECTED]";>Marc Fleury</a>
    * @author    <a href="mailto:[EMAIL PROTECTED]";>Jason Dillon</a>
  - * @version   $Revision: 1.41 $
  + * @version   $Revision: 1.42 $
    */
   public class JMSContainerInvoker
      implements ContainerInvoker, XmlLoadable
  @@ -399,6 +399,29 @@
            serverSessionPoolFactoryJNDI = "java:/" + serverSessionPoolFactoryJNDI;
         }
      }
  +   
  +   /**
  +    * Initialize the container invoker. Sets up a connection, a server session
  +    * pool and a connection consumer for the configured destination.
  +    * 
  +    * Any JMSExceptions produced while initializing will be assumed to be
  +    * caused due to JMS Provider failure.
  +    *
  +    * @throws Exception  Failed to initalize.
  +    */
  +   public void create() throws Exception {
  +      exListener = new ExceptionListenerImpl(this);
  +      try {
  +          innerCreate();
  +      } catch ( final JMSException e ) {
  +              // start a thread up to handle recovering the connection.
  +              new Thread() {
  +                     public void run() {
  +                             exListener.onException(e);
  +                     }
  +              }.start();
  +      }
  +   }
   
      /**
       * Initialize the container invoker. Sets up a connection, a server session
  @@ -406,7 +429,7 @@
       *
       * @throws Exception  Failed to initalize.
       */
  -   public void create() throws Exception
  +   public void innerCreate() throws Exception
   
      {
         boolean debug = log.isDebugEnabled();
  @@ -631,9 +654,10 @@
      {
         if (log.isDebugEnabled())
         log.debug("Starting JMSContainerInvoker for bean " + beanName);
  -      exListener = new ExceptionListenerImpl(this);
  -      connection.setExceptionListener(exListener);
  -      connection.start();
  +      if( connection != null ) {
  +           connection.setExceptionListener(exListener);
  +           connection.start();
  +      }
      }
      
      /**
  @@ -1010,11 +1034,11 @@
         {
            currentThread = Thread.currentThread();
            
  -         log.warn("MDB lost connection to provider", ex);
  +         log.warn("JMS provider failure detected: ", ex);
            boolean tryIt = true;
            while (tryIt && notStoped)
            {
  -            log.info("MDB Trying to reconnect...");
  +            log.info("Trying to reconnect to JMS provider");
               try
               {
                  try
  @@ -1030,14 +1054,14 @@
                  // Reboot container
                  invoker.innerStop();
                  invoker.destroy();
  -               invoker.create();
  +               invoker.innerCreate();
                  invoker.start();
                  tryIt = false;
  -               log.info("OK - reconnected");
  +               log.info("Reconnected to JMS provider");
               }
               catch (Exception e)
               {
  -               log.error("MDB error reconnecting", e);
  +               log.error("Reconnect failed: JMS provider failure detected:", e);
               }
            }
            currentThread = null;
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to