FileDocCategorySizeDatePackage
ProcessMonitorThread.javaAPI DocJava SE 5 API2782Fri Aug 26 14:54:18 BST 2005com.sun.corba.se.impl.activation

ProcessMonitorThread

public class ProcessMonitorThread extends Thread
ProcessMonitorThread is started when ServerManager is instantiated. The thread wakes up every minute (This can be changed by setting sleepTime) and makes sure that all the processes (Servers) registered with the ServerTool are healthy. If not the state in ServerTableEntry will be changed to De-Activated. Note: This thread can be killed from the main thread by calling interrupThread()

Fields Summary
private HashMap
serverTable
private int
sleepTime
private static ProcessMonitorThread
instance
Constructors Summary
private ProcessMonitorThread(HashMap ServerTable, int SleepTime)


           
        serverTable = ServerTable;
        sleepTime = SleepTime;
    
Methods Summary
private voidcheckServerHealth(java.util.Iterator serverList)

        if( serverList == null ) return;
        while (serverList.hasNext( ) ) {
            ServerTableEntry entry = (ServerTableEntry) serverList.next();
            entry.checkProcessHealth( );
        }
    
static voidinterruptThread()

        instance.interrupt();
    
public voidrun()

        while( true ) {
            try {
                // Sleep's for a specified time, before checking
                // the Servers health. This will repeat as long as
                // the ServerManager (ORBD) is up and running.
                Thread.sleep( sleepTime );
            } catch( java.lang.InterruptedException e ) {
                break;
            }
            Iterator serverList;
            synchronized ( serverTable ) {
                // Check each ServerTableEntry to make sure that they
                // are in the right state.
                serverList = serverTable.values().iterator();
            }
            try {
                checkServerHealth( serverList );
            } catch( ConcurrentModificationException e ) { 
                break;
            }
        }
    
static voidstart(java.util.HashMap serverTable)

 
	int sleepTime = ORBConstants.DEFAULT_SERVER_POLLING_TIME;

	String pollingTime = System.getProperties().getProperty( 
	    ORBConstants.SERVER_POLLING_TIME ); 

	if ( pollingTime != null ) {
	    try {
		sleepTime = Integer.parseInt( pollingTime ); 
	    } catch (Exception e ) {
		// Too late to complain, Just use the default 
		// sleepTime
	    }
	}

	instance = new ProcessMonitorThread( serverTable, 
	    sleepTime );
	instance.setDaemon( true );
	instance.start();