org.objectweb.carol.util.bootstrap
Class ProcessesManager

java.lang.Object
  extended byorg.objectweb.carol.util.bootstrap.ProcessesManager
All Implemented Interfaces:
java.rmi.Remote, RemoteProcessesManager

public class ProcessesManager
extends java.lang.Object
implements RemoteProcessesManager

Class ProcessesManager Provide a Process Manager for boostraping Process and send file to a process directory Thie class extends a remote interface for RMI calls

Version:
1.0, 15/11/2002
Author:
Guillaume Riviere (Guillaume.Riviere@inrialpes.fr)

Nested Class Summary
 class ProcessesManager.ProcessStopThread
          Process Shudown process Thread For cleanong the Process's Hashtable
 
Field Summary
static boolean CLEAN_PROCESSES
          clean processes/configuration hashtable at shudow (default TRUE) commands.clear(); directories.clear(); Be carful, TRUE for this variable mean one more shudow THREAD in the daemon
static java.util.Hashtable commands
          Object configuration with id
static java.util.Hashtable directories
          Object configuration with id
static java.lang.String JAVA_CMD
          Java command line
static java.util.Hashtable processes
          Processes Hashtable with id
static int START_WAIT_TIME
          wait time for processe starting before getting error stream
 
Constructor Summary
ProcessesManager()
          empty constructor
ProcessesManager(boolean cleanb, boolean vb)
          constructor with 2 param:
 
Method Summary
 java.util.Hashtable getAllProcess()
          Get the all Process id with there command line
 java.lang.String getProcessCommand(java.lang.String id)
          Get the Process command line
 java.lang.String getProcessDirectory(java.lang.String id)
          Get the Process directory
protected  java.lang.String getProcessError(java.lang.Process p)
          get Process error
 int getProcessExitValue(java.lang.String id)
          Test if a Process is not alive the exit value
protected  java.lang.String getProcessOutput(java.lang.Process p)
          get Process output
 void killAllProcesses()
          Kill all processes and remove all process id and configuration
 void killProcess(java.lang.String id)
          Kill a process (if existe) and remove it's process id and configuration
 boolean pingProcess(java.lang.String id)
          Test if a Process is always alive
 java.lang.String readProcessError(java.lang.String id)
          get the rjvm ErrorStream
 java.lang.String readProcessOutput(java.lang.String id)
          get the rproc OutputStream
 void sendFile(java.lang.String dirName, java.lang.String fileName, byte[] b)
          Send a file to a directory (FileImputStream/FileOutputStream format) this method build a directory in the current directory if the directory does not exite.
 java.lang.String startJVM(JVMConfiguration jvmConf, java.lang.String[] envp)
          Start a jvm process on the remote host in a tmp directory
 java.lang.String startJVM(JVMConfiguration jvmConf, java.lang.String[] envp, java.lang.String processDir)
          Start a jvm process on the remote host
 void startJVM(JVMConfiguration jvmConf, java.lang.String[] envp, java.lang.String processDir, java.lang.String id)
          Start a jvm process on the remote host
 java.lang.String startProcess(java.lang.String processLine, java.lang.String[] envp)
          Start a process on the remote host in a tmp directory
 java.lang.String startProcess(java.lang.String processLine, java.lang.String[] envp, java.lang.String processDir)
          Start a process on the remote host
 void startProcess(java.lang.String processLine, java.lang.String[] envp, java.lang.String processDir, java.lang.String id)
          Start a process on the remote host
 void stop()
          Stop the damemon and kill all the process
 void writeProcessInput(java.lang.String id, java.lang.String s)
          send a String to the rjvm inputStream
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLEAN_PROCESSES

public static boolean CLEAN_PROCESSES
clean processes/configuration hashtable at shudow (default TRUE) commands.clear(); directories.clear(); Be carful, TRUE for this variable mean one more shudow THREAD in the daemon


START_WAIT_TIME

public static final int START_WAIT_TIME
wait time for processe starting before getting error stream

See Also:
Constant Field Values

JAVA_CMD

public static java.lang.String JAVA_CMD
Java command line


processes

public static java.util.Hashtable processes
Processes Hashtable with id


commands

public static java.util.Hashtable commands
Object configuration with id


directories

public static java.util.Hashtable directories
Object configuration with id

Constructor Detail

ProcessesManager

public ProcessesManager()
                 throws java.rmi.RemoteException
empty constructor


ProcessesManager

public ProcessesManager(boolean cleanb,
                        boolean vb)
                 throws java.rmi.RemoteException
constructor with 2 param:

Method Detail

getProcessOutput

protected java.lang.String getProcessOutput(java.lang.Process p)
get Process output

Parameters:
p - process
Returns:
String process output or null if p is not available

getProcessError

protected java.lang.String getProcessError(java.lang.Process p)
get Process error

Parameters:
p - process
Returns:
String process error or null if p is not available

startJVM

public java.lang.String startJVM(JVMConfiguration jvmConf,
                                 java.lang.String[] envp)
                          throws ProcessException,
                                 java.rmi.RemoteException
Start a jvm process on the remote host in a tmp directory

Specified by:
startJVM in interface RemoteProcessesManager
Returns:
String the process id
Throws:
ProcessException - if an exception occurs at bootstrapting
java.rmi.RemoteException

startJVM

public java.lang.String startJVM(JVMConfiguration jvmConf,
                                 java.lang.String[] envp,
                                 java.lang.String processDir)
                          throws ProcessException,
                                 java.rmi.RemoteException
Start a jvm process on the remote host

Specified by:
startJVM in interface RemoteProcessesManager
Returns:
String the process id
Throws:
ProcessException - if an exception occurs at bootstrapting
java.rmi.RemoteException

startJVM

public void startJVM(JVMConfiguration jvmConf,
                     java.lang.String[] envp,
                     java.lang.String processDir,
                     java.lang.String id)
              throws ProcessException,
                     java.rmi.RemoteException
Start a jvm process on the remote host

Specified by:
startJVM in interface RemoteProcessesManager
Throws:
RProcessException - if an exception occurs at bootstrapting
ProcessException
java.rmi.RemoteException

startProcess

public java.lang.String startProcess(java.lang.String processLine,
                                     java.lang.String[] envp)
                              throws ProcessException,
                                     java.rmi.RemoteException
Start a process on the remote host in a tmp directory

Specified by:
startProcess in interface RemoteProcessesManager
Returns:
String the process id
Throws:
ProcessException - if an exception occurs at bootstrapting
java.rmi.RemoteException

startProcess

public java.lang.String startProcess(java.lang.String processLine,
                                     java.lang.String[] envp,
                                     java.lang.String processDir)
                              throws ProcessException,
                                     java.rmi.RemoteException
Start a process on the remote host

Specified by:
startProcess in interface RemoteProcessesManager
Returns:
String the process id
Throws:
ProcessException - if an exception occurs at bootstrapting
java.rmi.RemoteException

startProcess

public void startProcess(java.lang.String processLine,
                         java.lang.String[] envp,
                         java.lang.String processDir,
                         java.lang.String id)
                  throws ProcessException,
                         java.rmi.RemoteException
Start a process on the remote host

Specified by:
startProcess in interface RemoteProcessesManager
Throws:
RProcessException - if an exception occurs at bootstrapting
ProcessException
java.rmi.RemoteException

killProcess

public void killProcess(java.lang.String id)
                 throws ProcessException,
                        java.rmi.RemoteException
Kill a process (if existe) and remove it's process id and configuration

Specified by:
killProcess in interface RemoteProcessesManager
Parameters:
id - the Process id
Throws:
ProcessException - if the id doesn't existe
java.rmi.RemoteException

killAllProcesses

public void killAllProcesses()
                      throws java.rmi.RemoteException
Kill all processes and remove all process id and configuration

Specified by:
killAllProcesses in interface RemoteProcessesManager
Throws:
java.rmi.RemoteException

pingProcess

public boolean pingProcess(java.lang.String id)
                    throws ProcessException,
                           java.rmi.RemoteException
Test if a Process is always alive

Specified by:
pingProcess in interface RemoteProcessesManager
Parameters:
id - the Process String id
Returns:
true if the Process is always alive and false if this Process doens't existe anymore or if the process of this Process is stopped
Throws:
ProcessException
java.rmi.RemoteException

getProcessExitValue

public int getProcessExitValue(java.lang.String id)
                        throws ProcessException,
                               java.rmi.RemoteException
Test if a Process is not alive the exit value

Specified by:
getProcessExitValue in interface RemoteProcessesManager
Parameters:
id - the jvm id
Returns:
int the Process is always alive
Throws:
ProcessException - if - the id doen'st existe (with the CLEAN_Process_PROCESSES=true for example) - teh jvm with this id is not yet terminated
java.rmi.RemoteException

getProcessCommand

public java.lang.String getProcessCommand(java.lang.String id)
                                   throws ProcessException,
                                          java.rmi.RemoteException
Get the Process command line

Specified by:
getProcessCommand in interface RemoteProcessesManager
Returns:
String the process command line
Throws:
ProcessException - if: - The Process id doesn't exist - The Process process is stop
java.rmi.RemoteException

getProcessDirectory

public java.lang.String getProcessDirectory(java.lang.String id)
                                     throws ProcessException,
                                            java.rmi.RemoteException
Get the Process directory

Specified by:
getProcessDirectory in interface RemoteProcessesManager
Returns:
String the process directory
Throws:
ProcessException - if: - The Process id doesn't exist - The Process process is stop
java.rmi.RemoteException

getAllProcess

public java.util.Hashtable getAllProcess()
                                  throws java.rmi.RemoteException
Get the all Process id with there command line

Specified by:
getAllProcess in interface RemoteProcessesManager
Returns:
Hashtable the process id and his command line
Throws:
java.rmi.RemoteException

readProcessOutput

public java.lang.String readProcessOutput(java.lang.String id)
                                   throws ProcessException,
                                          java.rmi.RemoteException
get the rproc OutputStream

Specified by:
readProcessOutput in interface RemoteProcessesManager
Parameters:
id - the proc id
Throws:
ProcessException - if - the id doen'st existe
java.rmi.RemoteException

readProcessError

public java.lang.String readProcessError(java.lang.String id)
                                  throws ProcessException,
                                         java.rmi.RemoteException
get the rjvm ErrorStream

Specified by:
readProcessError in interface RemoteProcessesManager
Parameters:
id - the jvm id
Throws:
ProcessException - if - the id doen'st existe
java.rmi.RemoteException

writeProcessInput

public void writeProcessInput(java.lang.String id,
                              java.lang.String s)
                       throws ProcessException,
                              java.rmi.RemoteException
send a String to the rjvm inputStream

Specified by:
writeProcessInput in interface RemoteProcessesManager
Parameters:
s - String to send to the InputStream
id - the jvm id
Throws:
ProcessException - if - the id doen'st existe
java.rmi.RemoteException

sendFile

public void sendFile(java.lang.String dirName,
                     java.lang.String fileName,
                     byte[] b)
              throws java.rmi.RemoteException
Send a file to a directory (FileImputStream/FileOutputStream format) this method build a directory in the current directory if the directory does not exite. Your are not allow to write some thing outside of the current directory

Specified by:
sendFile in interface RemoteProcessesManager
Throws:
java.rmi.RemoteException

stop

public void stop()
          throws java.rmi.RemoteException
Stop the damemon and kill all the process

Specified by:
stop in interface RemoteProcessesManager
Throws:
java.rmi.RemoteException