FileDocCategorySizeDatePackage
Log.javaAPI DocGlassfish v2 API9954Wed Jun 13 23:03:46 BST 2007com.sun.jts.CosTransactions

Log

public class Log extends Object
The Log class provides operations that control the physical log as an entity versus the individual LogFiles that form the log. It supports the initialisation, opening and termination of the log. Different physical logs can be placed on the system with only minor changes to the methods contained in this class.
version
0.01
author
Simon Holdsworth, IBM Corporation
see

Fields Summary
private LogControl
logControl
A reference to the LogControl object.
private String
logPath
The log path.
static Logger
_logger
Constructors Summary
Log()
Default Log constructor.

param
return
see


              
     
        // We need to ensure that messaging is initialised as this may be called
        // prior to SOMTR_Init.

        // Initialise the instance variables.

        logControl = null;

        // Get the log path.  If it is not set, or blank, then set it to the current
        // directory.

        if( logPath == null ) {
            int[] result = new int[1];
            logPath = Configuration.getDirectory(Configuration.LOG_DIRECTORY,
                                                 Configuration.JTS_SUBDIRECTORY,
                                                 result);

            // If a default was used, display a message.

            if( result[0] == Configuration.DEFAULT_USED ||
                result[0] == Configuration.DEFAULT_INVALID ) {

                // In the case where the SOMBASE default is used, only display a message
                // if an invalid value was specified in the environment value.

                if( logPath.length() > 0 ) {
						_logger.log(Level.WARNING,"jts.invalid_log_path",logPath);
                }

                // In the case where the SOMBASE default is invalid, the value returned is
                // the invalid default. We then default to the current directory.

                if( result[0] == Configuration.DEFAULT_INVALID ) {
						_logger.log(Level.WARNING,"jts.invalid_default_log_path");
                    logPath = "."/*#Frozen*/;
                }
            }
        }

    
Log(String logPath)

        logControl = null;
        this.logPath = logPath;
    
Methods Summary
static booleancheckFileExists(java.lang.String serverName)
Determines whether a log file exists for the given server.

This method may be used without initialising the Log object to determine whether recovery should be performed, without initialising the log or the OTS.

param
String
return
see

        boolean exists = false;

        // Check whether the file exists.

        if( serverName != null ) {
            String logPath = null;
            int[] result = new int[1];
            logPath = Configuration.getDirectory(Configuration.LOG_DIRECTORY,
                                                 Configuration.JTS_SUBDIRECTORY,
                                                 result);

            // If a default was used, display a message.

            if( result[0] == Configuration.DEFAULT_USED ||
                result[0] == Configuration.DEFAULT_INVALID ) {

                // In the case where the SOMBASE default is used, only display a message
                // if an invalid value was specified in the environment value.

                if( logPath.length() > 0 ) {
                     _logger.log(Level.WARNING,"jts.invalid_log_path",logPath);
                }

                // In the case where the SOMBASE default is invalid, the value returned is
                // the invalid default. We then default to the current directory.

                if( result[0] == Configuration.DEFAULT_INVALID ) {
                                                _logger.log(Level.WARNING,"jts.invalid_default_log_path");
                    logPath = "."/*#Frozen*/;
                }
            }
            exists = LogControl.checkFileExists(serverName,logPath);
        }


        return exists;
    
voiddump()
Dumps the state of the object.

param
return
see

        //! somtrDUMP_OBJECT_HEADER;

        // Dump all of the instance variables in the LogFile object, without going
        // any further down object references.

        logControl.dump();
    
booleaninitialise()
Initialises the log.

param
return
see

        boolean result = true;

        // Call the initialize operation for the log

        logControl = new LogControl();
        logControl.initLog(false,false,logPath);

        return result;
    
LogFileopen(java.lang.String serverName, LogUpcallTarget upcall)
Opens the log for the given server.

The given LogSOS object, if any, will be called in the event of the log going short-on-storage. A LogFile object reference is returned that is used for operations on the specific portion of the log.

param
serverName The name of the server whose log file is being opened.
param
upcall The object which will handle upcalls from the log.
return
The object representing the physical log file.
see


        LogFile logFile = null;

        boolean[] newLog = new boolean[1];  newLog[0] = true;

        // Open the log using the server name.

        try {
            LogHandle handle = logControl.openFile(serverName,upcall,null,newLog);

            // Create a new LogFile object with the handle to represent the open log.

            logFile = new LogFile(handle);
        }

        // If the log open failed, report the error.

        catch( LogException le ) {
			_logger.log(Level.SEVERE,"jts.log_error",le.toString());
			 String msg = LogFormatter.getLocalizedMessage(_logger,"jts.log_error",
			 							new java.lang.Object[] {le.toString()});
			  throw  new org.omg.CORBA.INTERNAL(msg);
        }

        return logFile;
    
booleanterminate()
Terminates the log.

param
return
see


        boolean result = true;

        // No special action needed after the close for the logger

        return result;