Package com.arjuna.ats.arjuna.recovery

Source Code of com.arjuna.ats.arjuna.recovery.TransactionStatusManager

/*     */ package com.arjuna.ats.arjuna.recovery;
/*     */
/*     */ import com.arjuna.ats.arjuna.common.arjPropertyManager;
/*     */ import com.arjuna.ats.arjuna.exceptions.FatalError;
/*     */ import com.arjuna.ats.arjuna.logging.tsLogger;
/*     */ import com.arjuna.ats.arjuna.utils.Utility;
/*     */ import com.arjuna.ats.internal.arjuna.recovery.Listener;
/*     */ import com.arjuna.ats.internal.arjuna.recovery.TransactionStatusManagerItem;
/*     */ import com.arjuna.ats.internal.arjuna.utils.SocketProcessId;
/*     */ import com.arjuna.common.util.logging.Logi18n;
/*     */ import com.arjuna.common.util.propertyservice.PropertyManager;
/*     */ import java.io.IOException;
/*     */ import java.net.ServerSocket;
/*     */ import java.util.ResourceBundle;
/*     */
/*     */ public class TransactionStatusManager
/*     */ {
/*     */   private Listener _listener;
/*     */   private static final String _defaultTsmService = "com.arjuna.ats.arjuna.recovery.ActionStatusService";
/*     */   private static final int _defaultTsmPort = 0;
/* 275 */   private boolean _finalizeCalled = false;
/*     */
/*     */   public TransactionStatusManager()
/*     */   {
/*  76 */     int port = getTsmPort();
/*     */
/*  78 */     start("com.arjuna.ats.arjuna.recovery.ActionStatusService", port);
/*     */   }
/*     */
/*     */   public TransactionStatusManager(int port)
/*     */   {
/*  83 */     start("com.arjuna.ats.arjuna.recovery.ActionStatusService", port);
/*     */   }
/*     */
/*     */   public TransactionStatusManager(String serviceName)
/*     */   {
/*  88 */     int port = getTsmPort();
/*     */
/*  90 */     start(serviceName, port);
/*     */   }
/*     */
/*     */   public TransactionStatusManager(String serviceName, int port)
/*     */   {
/*  95 */     start(serviceName, port);
/*     */   }
/*     */
/*     */   public void addService(Service service, ServerSocket serverSocket)
/*     */   {
/*     */     try
/*     */     {
/* 105 */       this._listener = new Listener(serverSocket, service);
/* 106 */       this._listener.setDaemon(true);
/*     */
/* 108 */       if (tsLogger.arjLoggerI18N.isInfoEnabled())
/*     */       {
/* 110 */         tsLogger.arjLoggerI18N.info("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_1", new Object[] { service.getClass().getName(), Integer.toString(serverSocket.getLocalPort()) });
/*     */       }
/*     */
/* 115 */       this._listener.start();
/*     */     }
/*     */     catch (IOException ex)
/*     */     {
/* 119 */       tsLogger.arjLoggerI18N.warn("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_2");
/*     */     }
/*     */   }
/*     */
/*     */   public void finalize()
/*     */   {
/* 129 */     if (!this._finalizeCalled)
/*     */     {
/* 131 */       this._finalizeCalled = true;
/*     */
/* 133 */       this._listener.stopListener();
/* 134 */       TransactionStatusManagerItem.removeThis(Utility.getProcessUid());
/*     */     }
/*     */   }
/*     */
/*     */   private void start(String serviceName, int port)
/*     */   {
/* 143 */     int localPort = 0;
/*     */     try
/*     */     {
/* 147 */       Class serviceClass = Thread.currentThread().getContextClassLoader().loadClass(serviceName);
/*     */
/* 149 */       Service service = (Service)serviceClass.newInstance();
/*     */
/* 151 */       ServerSocket socketServer = getTsmServerSocket(port);
/*     */
/* 153 */       localPort = socketServer.getLocalPort();
/*     */
/* 155 */       addService(service, socketServer);
/*     */
/* 157 */       TransactionStatusManagerItem.createAndSave(socketServer.getLocalPort());
/*     */
/* 159 */       if (tsLogger.arjLoggerI18N.isInfoEnabled())
/*     */       {
/* 161 */         tsLogger.arjLoggerI18N.info("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_3", new Object[] { Integer.toString(localPort), serviceName });
/*     */       }
/*     */
/*     */     }
/*     */     catch (ClassNotFoundException ex)
/*     */     {
/* 167 */       if (tsLogger.arjLoggerI18N.isWarnEnabled())
/*     */       {
/* 169 */         tsLogger.arjLoggerI18N.warn("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_4", new Object[] { serviceName });
/*     */       }
/*     */
/*     */     }
/*     */     catch (InstantiationException ex)
/*     */     {
/* 175 */       if (tsLogger.arjLoggerI18N.isWarnEnabled())
/*     */       {
/* 177 */         tsLogger.arjLoggerI18N.warn("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_5", new Object[] { serviceName });
/*     */       }
/*     */
/*     */     }
/*     */     catch (IllegalAccessException ex)
/*     */     {
/* 183 */       if (tsLogger.arjLoggerI18N.isWarnEnabled())
/*     */       {
/* 185 */         tsLogger.arjLoggerI18N.warn("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_6", new Object[] { serviceName });
/*     */       }
/*     */
/*     */     }
/*     */     catch (IOException ex)
/*     */     {
/* 191 */       if (tsLogger.arjLoggerI18N.isWarnEnabled())
/*     */       {
/* 193 */         tsLogger.arjLoggerI18N.warn("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_7", new Object[] { Integer.toString(localPort) });
/*     */       }
/*     */
/* 197 */       throw new FatalError(tsLogger.log_mesg.getString("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_9"));
/*     */     }
/*     */   }
/*     */
/*     */   private static final ServerSocket getTsmServerSocket(int port)
/*     */     throws IOException
/*     */   {
/* 211 */     ServerSocket socket = SocketProcessId.getSocket();
/*     */
/* 213 */     return socket == null ? new ServerSocket(port) : socket;
/*     */   }
/*     */
/*     */   private static final int getTsmPort()
/*     */   {
/* 227 */     if (SocketProcessId.getSocket() == null)
/*     */     {
/* 229 */       int port = 0;
/*     */
/* 233 */       String tsmPortStr = arjPropertyManager.propertyManager.getProperty("com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort");
/*     */
/* 235 */       if (tsmPortStr != null)
/*     */       {
/*     */         try
/*     */         {
/* 239 */           port = Integer.parseInt(tsmPortStr);
/*     */         }
/*     */         catch (Exception ex)
/*     */         {
/* 243 */           if (tsLogger.arjLoggerI18N.isWarnEnabled())
/*     */           {
/* 245 */             tsLogger.arjLoggerI18N.warn("com.arjuna.ats.arjuna.recovery.TransactionStatusManager_8", new Object[] { ex });
/*     */           }
/*     */         }
/*     */
/*     */       }
/*     */
/* 251 */       return port;
/*     */     }
/*     */
/* 254 */     return SocketProcessId.getSocket().getLocalPort();
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     com.arjuna.ats.arjuna.recovery.TransactionStatusManager
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of com.arjuna.ats.arjuna.recovery.TransactionStatusManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.