Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2006, Red Hat Middleware LLC, and individual contributors 
   * as indicated by the @author tags. 
   * See the copyright.txt in the distribution for a
   * full listing of individual contributors. 
   * This copyrighted material is made available to anyone wishing to use,
   * modify, copy, or redistribute it subject to the terms and conditions
   * of the GNU Lesser General Public License, v. 2.1.
  * This program is distributed in the hope that it will be useful, but WITHOUT A 
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  * You should have received a copy of the GNU Lesser General Public License,
  * v.2.1 along with this distribution; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
  * MA  02110-1301, USA.
  * 
  * (C) 2005-2006,
  * @author JBoss Inc.
  */
 /*
  * Copyright (C) 1999-2001 by HP Bluestone Software, Inc. All rights Reserved.
  *
  * HP Arjuna Labs,
  * Newcastle upon Tyne,
  * Tyne and Wear,
  * UK.
  *
  * $Id: TransactionStatusConnector.java 2342 2006-03-30 13:06:17Z  $
  */
 
 package com.arjuna.ats.internal.arjuna.recovery ;
 
 
 
 {
   
Recreate TransactionStatusManagerItem and attempt to establish a connection to the host/port of the TransactionStatusManager.
 
 
    public TransactionStatusConnectorString pidUid pidUid )
    {
           = pid ;
        = pidUid ;
    }
   
   
Check that a connection can be made to the Transaction Status Manager's process.
 
 
    public boolean testTransactionStatusManagerItem tsmi )
    {
        = true ;
        = tsmi ;
 
       boolean ok = establishConnection() ;
       
       if ( !ok )
       {
          setDeadTSM() ;
       }
 
       return ok ;
    }

   
If the TransactonStatusManagers' process is deemed dead, then its TransactonStatusManagerItem is removed from the object store.
 
 
    public void delete ()
    {
       if (  )
       {
          TransactionStatusManagerItem.removeThis ) ;
       }
       else {
       }
    }
   
   
Has the TransactionStatusManagers' process died.
 
 
   public boolean isDead ()
   {
      return  ;
   }
   
   
Retrieve the transaction status for the specified transaction, attempts to re-establish connection if necessary.
   public int getTransactionStatus ( String transaction_typeUid tranUid )
   {
      int status = . ;
      if ( !  )
      {
         if ( !  )
         {
            // try to establish/re-establish the connection
             = recreateTransactionStatusManagerItem() ;
            
            if (  )
            {
                = establishConnection() ;
            }
         }
         if (  )
         {
            try
            {
               // Send transaction type and transaction Uid to the
               // TransactionStatusManager.
               .println ( transaction_type ) ;
               .println ( tranUid.toString() ) ;
               .flush() ;
	       /*
		* TODO we should optimise this so we only close once
		* all transactions for a particular host have been sent.
		*/
               // Retrieve current status from the TransactionStatusManager.
               String server_data = .readLine() ;
               status = Integer.parseInt ( server_data ) ;
	       //	       _to_server.close();
	       //	       _from_server.close();
            }
            catch ( IOException ex ) {
                 = false;
            }
            catch ( Exception other ) {
                 = false;
            }
         }
      }
      return status ;
   }
   
   
Assume the Transaction Status Managers' process has died.
   private void setDeadTSM()
   {
       = true ;
      if ( != null)
   }

   
Create socket and input/output streams to/from the TransactionStatusManager.
   private boolean establishConnection()
   {
      boolean connectionEstablished = false ;
      
      if (  != null )
      {
         try
         {
            String serverHost = .host() ;
            int serverPort = .port() ;
             = new Socket ( serverHostserverPort ) ;
   
            // streams to and from the TransactionStatusManager
             = new BufferedReader ( new InputStreamReader.getInputStream() )) ;
                              
             = new PrintWriter ( new OutputStreamWriter.getOutputStream() ) ) ;
            // Check that the process id of the server is the same as
            // this connectors process id.
            String server_pid = .readLine() ;
          
            if ( Utility.hexStringToInt(server_pid) == Utility.hexStringToInt() )
            {
               if ( !  )
               {
                  .println ( "OK" ) ;
                  .flush() ;
                   ..info_recovery_TransactionStatusConnector_4(serverHost, Integer.toString(serverPort), .toString());
               }
               else
               {
                  .println ( "TEST" ) ;
                  .flush() ;
		  //		  _to_server.close();
                  .close() ;
               }
               
               connectionEstablished = true ;
            }
            else
            {
               .println ( "DEAD" ) ;
               .flush() ;
	       //	       _to_server.close();
               .close() ;
               
               setDeadTSM() ;
	       
	       
            }
         }
         catch ( IOException ex )
         {
         }
          = connectionEstablished ? 0 :  + 1 ;
         
         {
            setDeadTSM() ;
         }
      }
      
      return connectionEstablished ;
   }

   
Retrieve host/port item stored in the object store.
   private boolean recreateTransactionStatusManagerItem()
   {
      boolean tsmiFound = false ;
      
      if (  == null )
      {
         try
         {
             = TransactionStatusManagerItem.recreate ) ;
            tsmiFound = true ;
             = 0 ;
         }
         catch ( Exception ex )
         {
            if ( ++ >  )
            {
               setDeadTSM() ;
            }
             = null ;
         }
      }
      return tsmiFound ;
   }
   // Process id & process Uid.
   private String _pid ;        // HexString format
   private Uid    _pidUid ;
   
   // Host/port pair for TransactionStatusManager.
   private TransactionStatusManagerItem _tsmi = null ;
   
   // If transaction status manager item exists AND able to 
   // connect to its host/port then _tsmFound = true.
   private boolean _tsmFound = false ;
   
   // Several attempts are made to recreate _tsmi,
   // if limit reached then this connector is marked dead.
   private int _attempts_to_recreate_tsmi = 0 ;
   private int _max_attempts_to_recreate_tsmi = 3 ;
   
   // Several attempts are made to establish a connection to the
   // Transaction Status Manager, if limit reached then this connector
   // is marked dead.
   private int _attempts_to_establish_connection = 0 ;
   private int _max_attempts_to_establish_connection = 3 ;
   
   // Socket to connect to host/port pair maintained in _tsmi.
   private Socket _connector_socket ;
   private int    _socket_timeout_in_msecs = 1000 ;
   
   // IO to/from TransactionStatusManager
   private PrintWriter    _to_server;
   
   // Indicates the TransactionStatusManagers' process does not exist.
   private boolean _dead = false ;
   
   // Used to check that a connection can be established to the
   // TransactionStatusManagers' process.
   private boolean _testMode = false ;
New to GrepCode? Check out our FAQ X