org.portico.binding.jvm
Class JVMBootstrap
java.lang.Object
com.lbf.commons.component.AbstractComponent
org.portico.core.Bootstrap
org.portico.binding.jvm.JVMBootstrap
- All Implemented Interfaces:
- com.lbf.commons.component.IComponent
public class JVMBootstrap
- extends Bootstrap
The JVMBootstrap class acts as a something of a singleton through which an federate that
is running in a separate thread can access the RTI. When an RTIExec
starts up, it notifies all of the bootstraps that it contains. The RTIExec will call the
Bootstrap.execute() method on the Bootstrap subclasses to perform this. When the
JVMBootstrap class sees the execute method, it will assign itself to the
shared static variable INSTANCE.
If there is not a running RTIExec (or none of those that are running contain the JVM bootstrap),
the instance will remain null and JVM binding federates will not be able to contact the RTI.
Only once an RTIExec that is configured with the JVM bootstrap has been started will access be
possible.
Starting Multiple RTIs
WARNING: If multiple RTIs are started, they may each overwrite one-another in the static
INSTANCE variable. That static variable will contain a link to the *last*
RTIExec that started up. However, if there was some time between the startups, there may be
some federates with links to the older RTIExec, and as such, they won't be able to talk to
federates in the new one (as it is a different execution). This only happens when someone is
trying to run multiple RTIExec's in the same JVM. It is wise to avoid this situation and just
run a single RTIExec.
| Fields inherited from class com.lbf.commons.component.AbstractComponent |
executing, name, shutdown |
| Methods inherited from class com.lbf.commons.component.AbstractComponent |
getName, isExecuting, isShutdown, setName |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
INSTANCE
protected static JVMBootstrap INSTANCE
- The shared JVMBoostrap. Clients use this to access the RTIExec
JVMBootstrap
public JVMBootstrap()
cleanup
public void cleanup()
throws com.lbf.commons.component.ComponentException
- Set the
INSTANCE variable to null, thus removing the ability of any jvm federates to
access the RTI. Actual cleanup of the RTI is left to it.
- Specified by:
cleanup in interface com.lbf.commons.component.IComponent- Overrides:
cleanup in class com.lbf.commons.component.AbstractComponent
- Throws:
com.lbf.commons.component.ComponentException
startBootstrap
public void startBootstrap()
throws com.lbf.commons.component.ComponentException
- Puts this bootstrap in the static
INSTANCE variable within this class. This method
is called when the bootstrap is being told by the RTI to start up.
- Specified by:
startBootstrap in class Bootstrap
- Throws:
com.lbf.commons.component.ComponentException
stopBootstrap
public void stopBootstrap()
- This method is empty in
JVMBootstrap
- Specified by:
stopBootstrap in class Bootstrap
getBootstrapHandler
public com.lbf.commons.messaging.IMessageHandler getBootstrapHandler()
- Get the bootstrap message handler. This should be the target of the big-three request
messages (create,destroy,join).
- Overrides:
getBootstrapHandler in class Bootstrap