Methods Summary |
---|
synchronized void | activate()
state = ACTIVATED;
try {
if (debug)
printDebug("activate", "activating server");
process = Runtime.getRuntime().exec(activationCmd);
} catch (Exception e) {
deActivate();
if (debug)
printDebug("activate", "throwing premature process exit");
throw wrapper.unableToStartProcess() ;
}
|
synchronized void | checkProcessHealth()
// If the State in the ServerTableEntry is RUNNING and the
// Process was shut down abnormally, The method will change the
// server state as De-Activated.
if( state == RUNNING ) {
try {
int exitVal = process.exitValue();
} catch (IllegalThreadStateException e1) {
return;
}
synchronized ( this ) {
// Clear the PortInformation as it is old
orbAndPortInfo.clear();
// Move the state to De-Activated, So that the next
// call to this server will re-activate.
deActivate();
}
}
|
synchronized void | deActivate()
state = DE_ACTIVATED;
if (debug)
printDebug( "deActivate", "server deactivated" ) ;
notifyAll();
|
synchronized void | destroy()
Server localServerObj = null;
Process localProcess = null;
synchronized (this) {
localServerObj = serverObj;
localProcess = process;
deActivate();
}
try {
if (localServerObj != null)
localServerObj.shutdown();
if (debug)
printDebug( "destroy", "server shutdown successfully" ) ;
} catch (Exception ex) {
if (debug)
printDebug( "destroy",
"server shutdown threw exception" + ex ) ;
// ex.printStackTrace();
}
try {
if (localProcess != null)
localProcess.destroy();
if (debug)
printDebug( "destroy", "process destroyed successfully" ) ;
} catch (Exception ex) {
if (debug)
printDebug( "destroy",
"process destroy threw exception" + ex ) ;
// ex.printStackTrace();
}
|
synchronized java.lang.String[] | getORBList()
String [] orbList = new String[orbAndPortInfo.size()];
Iterator setORBids = orbAndPortInfo.keySet().iterator();
try {
int numElements = 0;
while (setORBids.hasNext()) {
String orbId = (String) setORBids.next();
orbList[numElements++] = orbId ;
}
} catch (NoSuchElementException e) {
// have everything in the table
}
return orbList;
|
int | getServerId()
return serverId;
|
synchronized void | holdDown()
state = HELD_DOWN;
if (debug)
printDebug( "holdDown", "server held down" ) ;
notifyAll();
|
void | install()
Server localServerObj = null;
synchronized ( this ) {
if (state == RUNNING)
localServerObj = serverObj;
else
throw wrapper.serverNotRunning() ;
}
if (localServerObj != null) {
localServerObj.install() ;
}
|
boolean | isActive()
return (state == RUNNING) || (state == ACTIVATED);
|
synchronized boolean | isValid()
if ((state == ACTIVATING) || (state == HELD_DOWN)) {
if (debug)
printDebug( "isValid", "returns true" ) ;
return true;
}
try {
int exitVal = process.exitValue();
} catch (IllegalThreadStateException e1) {
return true;
}
if (state == ACTIVATED) {
if (activateRetryCount < ActivationRetryMax) {
if (debug)
printDebug("isValid", "reactivating server");
activateRetryCount++;
activate();
return true;
}
if (debug)
printDebug("isValid", "holding server down");
holdDown();
return true;
}
deActivate();
return false;
|
synchronized com.sun.corba.se.spi.activation.ORBPortInfo[] | lookup(java.lang.String endpointType)
while ((state == ACTIVATING) || (state == ACTIVATED)) {
try {
wait(waitTime);
if (!isValid()) break;
} catch(Exception e) {}
}
ORBPortInfo[] orbAndPortList = null;
if (state == RUNNING) {
orbAndPortList = new ORBPortInfo[orbAndPortInfo.size()];
Iterator setORBids = orbAndPortInfo.keySet().iterator();
try {
int numElements = 0;
int i;
int port;
while (setORBids.hasNext()) {
String orbId = (String) setORBids.next();
// get an entry corresponding to orbId
EndPointInfo [] serverListenerPorts = (EndPointInfo []) orbAndPortInfo.get(orbId);
port = -1;
// return the port corresponding to the endpointType
for (i = 0; i < serverListenerPorts.length; i++) {
if (debug)
System.out.println("lookup num-ports " + serverListenerPorts.length + " " +
serverListenerPorts[i].endpointType + " " +
serverListenerPorts[i].port );
if ((serverListenerPorts[i].endpointType).equals(endpointType)) {
port = serverListenerPorts[i].port;
break;
}
}
orbAndPortList[numElements] = new ORBPortInfo(orbId, port);
numElements++;
}
} catch (NoSuchElementException e) {
// have everything in the table
}
return orbAndPortList;
}
if (debug)
printDebug("lookup", "throwing server held down error");
throw new ServerHeldDown( serverId ) ;
|
synchronized com.sun.corba.se.spi.activation.EndPointInfo[] | lookupForORB(java.lang.String orbId)
while ((state == ACTIVATING) || (state == ACTIVATED)) {
try {
wait(waitTime);
if (!isValid()) break;
} catch(Exception e) {}
}
EndPointInfo[] portList = null;
if (state == RUNNING) {
try {
// get an entry corresponding to orbId
EndPointInfo [] serverListenerPorts = (EndPointInfo []) orbAndPortInfo.get(orbId);
portList = new EndPointInfo[serverListenerPorts.length];
// return the port corresponding to the endpointType
for (int i = 0; i < serverListenerPorts.length; i++) {
if (debug)
System.out.println("lookup num-ports " + serverListenerPorts.length + " "
+ serverListenerPorts[i].endpointType + " " +
serverListenerPorts[i].port );
portList[i] = new EndPointInfo(serverListenerPorts[i].endpointType, serverListenerPorts[i].port);
}
} catch (NoSuchElementException e) {
// no element in HashMap corresponding to ORBid found
throw new InvalidORBid();
}
return portList;
}
if (debug)
printDebug("lookup", "throwing server held down error");
throw new ServerHeldDown( serverId ) ;
|
private void | printDebug(java.lang.String method, java.lang.String msg)
System.out.println("ServerTableEntry: method =" + method);
System.out.println("ServerTableEntry: server =" + serverId);
System.out.println("ServerTableEntry: state =" + printState());
System.out.println("ServerTableEntry: message =" + msg);
System.out.println();
|
private java.lang.String | printState()
String str = "UNKNOWN";
switch (state) {
case (DE_ACTIVATED) : str = "DE_ACTIVATED"; break;
case (ACTIVATING ) : str = "ACTIVATING "; break;
case (ACTIVATED ) : str = "ACTIVATED "; break;
case (RUNNING ) : str = "RUNNING "; break;
case (HELD_DOWN ) : str = "HELD_DOWN "; break;
default: break;
}
return str;
|
synchronized void | register(com.sun.corba.se.spi.activation.Server server)
if (state == ACTIVATED) {
serverObj = server;
//state = RUNNING;
//notifyAll();
if (debug)
printDebug("register", "process registered back");
} else {
if (debug)
printDebug("register", "throwing premature process exit");
throw wrapper.serverNotExpectedToRegister() ;
}
|
synchronized void | registerPorts(java.lang.String orbId, com.sun.corba.se.spi.activation.EndPointInfo[] endpointList)
// find if the ORB is already registered, then throw an exception
if (orbAndPortInfo.containsKey(orbId)) {
throw new ORBAlreadyRegistered(orbId);
}
// store all listener ports and their types
int numListenerPorts = endpointList.length;
EndPointInfo [] serverListenerPorts = new EndPointInfo[numListenerPorts];
for (int i = 0; i < numListenerPorts; i++) {
serverListenerPorts[i] = new EndPointInfo (endpointList[i].endpointType, endpointList[i].port);
if (debug)
System.out.println("registering type: " + serverListenerPorts[i].endpointType + " port " + serverListenerPorts[i].port);
}
// put this set of listener ports in the HashMap associated
// with the orbId
orbAndPortInfo.put(orbId, serverListenerPorts);
if (state == ACTIVATED) {
state = RUNNING;
notifyAll();
}
// _REVISIT_, If the state is not equal to ACTIVATED then it is a bug
// need to log that error, once the Logging framework is in place
// for rip-int.
if (debug)
printDebug("registerPorts", "process registered Ports");
|
public java.lang.String | toString()
return "ServerTableEntry[" + "state=" + printState() +
" serverId=" + serverId +
" activateRetryCount=" + activateRetryCount + "]" ;
|
void | uninstall()
Server localServerObj = null;
Process localProcess = null;
synchronized (this) {
localServerObj = serverObj;
localProcess = process;
if (state == RUNNING) {
deActivate();
} else {
throw wrapper.serverNotRunning() ;
}
}
try {
if (localServerObj != null) {
localServerObj.shutdown(); // shutdown the server
localServerObj.uninstall() ; // call the uninstall
}
if (localProcess != null) {
localProcess.destroy();
}
} catch (Exception ex) {
// what kind of exception should be thrown
}
|
public int | verify()Verify whether the server definition is valid.
try {
if (debug)
System.out.println("Server being verified w/" + activationCmd);
process = Runtime.getRuntime().exec(activationCmd);
int result = process.waitFor();
if (debug)
printDebug( "verify", "returns " + ServerMain.printResult( result ) ) ;
return result ;
} catch (Exception e) {
if (debug)
printDebug( "verify", "returns unknown error because of exception " +
e ) ;
return ServerMain.UNKNOWN_ERROR;
}
|