RTI_Wrapper Logo RTI_Wrapper - Integrating HLA and CORBA

ReadMe



Welcome to the RTI_Wrapper, a tool for integrating HLA and CORBA.

The core RTI_Wrapper contains a Java implementation of slightly modified IDL definitions, derived from the CORBA Manufacturing domain specification Distributed Simulation System Facility. There is also a simple rti-count federation sample, showing HLA and CORBA in action. The sample is given in two different programming languages: Java and Common Lisp.

Seven libraries make up the complete RTI_Wrapper package:

File Name Description
corba-tools-java-src.zip Full Java source code for easier CORBA initialization and object activation.
rti-wrapper-java-src.zip Full Java source code of the wrapper implementation.
rti-wrapper-java-idl.zip IDL definitions for HLA, according to the wrapper implementation.
rti-count-java-src.zip A Java/Swing based demo application establishing a control desk for federations.
corba-tools-lisp-src.zip Full lisp source code for easier CORBA initialization and object activation.
rti-wrapper-lisp-idl.zip Cut down IDL definitions for accessing the wrapper implementation from LispWorks.
rti-count-lisp-src.zip A LispWorks CAPI based demo application establishing a control desk for federations.

To let the demo run, there is quite a litte bit of installation work left:

Install the HLA RTI-NG 1.3 Version 3 (Download available at http://sdc.dmso.mil).
Install the HLA RTI-NG 1.3 Version 3, Java Binding (Download available at http://sdc.dmso.mil).
Startup the rtiexec executable with appropiate -endpoint and -multicastDiscoveryEndpoint switch settings. You must associate a fixed IP-Address with your workstation, even when running this demo locally.

Install a CORBA 2.3 compliant Java environment (VisiBroker, OrbixWeb, Orbacus and JacORB should all do the job). Note that using only the ORB and idlj integrated with Sun's JDKs will not be sufficient, as this ORB does not implement the org.omg.PortabeServer-package needed for activating objects in a portable manner.
Unpack and compile the IDL definitions in rti-wrapper-java-idl.zip to Java stubs and skeletons, according to you CORBA/Java environment. The Description.idl file contained therein needs an IDL definition for the CORBA Repository. This definiton is found in a file orb.idl, which most CORBA environments will be equipped with. Add an appropiate inclusion path to your idl-compiler upcall.

Install the Java Generic Library (JGL 3.1.0) available at http://www.objectspace.com.

Unpack and compile corba-tools-java-src.zip. The code therein will initialize some ORB variables and allowes easier object activation. You will need your CORBA/Java environment classes and the JGL classes to be available on your classpath for compilation.

Unpack and compile rti-wrapper-java-src.zip. You will need your CORBA/Java environment classes, your compiled corba-tools classes, the RTI-Java-Binding classes and the JGL classes to be available on your classpath for compilation.
Setup a RTI.rid file, according to your definitions of -endpoint and -multicastDiscoveryEndpoint for rtiexec.
Ensure that a java upcall will find the associated RTI libraries. On Solaris this will mean to include them in the LD_LIBRARY_PATH environment variable.
Startup the rti-wrapper class de.unihh.informatik.bachmann.rti.wrapper.Factory_Impl with an application parameter of start for startup or stop for shutdown.
Ensure that your CORBA/Java environment classes, your compiled stub/skeleton classes, your compiled corba-tools classes, your compiled rti-wrapper classes, the RTI-Java-Binding classes and the JGL classes are available from the classpath settings.
Some java properties should be set (by -D switches) to let the rti-wrapper work correctly:

Property Name Default Value Description
org.omg.CORBA.ORBClass Set this property according to your CORBA/Java environment
(e.g. com.inprise.vbroker.orb.ORB for Visibroker).
org.omg.CORBA.ORBSingletonClass Set this property according to your CORBA/Java environment
(e.g. com.inprise.vbroker.orb.ORB for Visibroker).
de.unihh.informatik.bachmann.rti.wrapper.factory_ior_file ./factory.ior The RTI_Wrapper implementation will write out an IOR representing an object serving the RTI_Factory definiton. This definition can be found in rti-count-java-idl.zip
de.unihh.informatik.bachmann.rti.wrapper.federation_directory ./federations The RTI_Wrapper implementation will create a FED file for each federation established. The rtiexec process needs this federation description file. Specifiy an existing direcotry path where all FED files will be put.
de.unihh.informatik.bachmann.rti.wrapper.ticker_min 0.0 The RTI_Wrapper implementation will create a separate Java thread for each federate joining a federation. This thread is ticking the associated RTIambassador regularly. Specify the minimum time (in seconds) for the RTI to spend into federate callbacks.
de.unihh.informatik.bachmann.rti.wrapper.ticker_max 0.1 Specify the maximum time (in seconds) for the RTI to spend into federate callbacks.
de.unihh.informatik.bachmann.rti.wrapper.ticker_int 0.9 Specify the ticking thread's time interval (in seconds) to wait between tick calls to the RTIambassador.

Unpack and compile rti-count-java-src.zip. You will need your CORBA/Java environment classes, your compiled stub/skeleton classes, your compiled corba-tools classes, your compiled rti-wrapper classes, the JGL classes to be available on your classpath for compilation.
Startup the rti-count class de.unihh.informatik.bachmann.rti.count.Console.
Ensure that your CORBA/Java environment classes, your compiled stub/skeleton classes, your compiled corba-tools classes, your compiled rti-wrapper classes, your compiled rti-count classes, the RTI-Java-Binding classes and the JGL classes are available from the classpath settings.
Some java properties should be set (by -D switches) to let the rti-count example work correctly:

Property Name Default Value Description
org.omg.CORBA.ORBClass Set this property according to your CORBA/Java environment
(e.g. com.inprise.vbroker.orb.ORB for Visibroker).
org.omg.CORBA.ORBSingletonClass Set this property according to your CORBA/Java environment
(e.g. com.inprise.vbroker.orb.ORB for Visibroker).
de.unihh.informatik.bachmann.rti.wrapper.factory_ior_file ./factory.ior The rti-count implementation looks for an IOR written by the rti-wrapper implementation, so put the same filename here as before.

Now you are ready to use the Java/Swing control panel for federations.
Create a new federation by pushing the Create Federation ... button and enter a new federation name. The new federation is driven by a time regulating federate called "Creator". A messenger window appears with messages pushed ontop of the list shown.
To shutdown a running federation, select the federation name in the console window and push the Delete Federation ... button. A new federate called "Destroyer" sends out a "shutdown" interaction as long as any other federates is yet involved into the federation. After all federates have left the federation, the federation itself is destroyed. The shutdown process is also shown in a messenger window.
You may use the Stop messenger button in a messenger window to make the associated federate leave its federation. After leaving the federation, the window is closed.

The lisp implementation is specialized on LispWorks 4.1 Enterprise. At the time of writing this was the only lisp ORB featuring Portable Object Adapters, Dynamic Anys, the Dynamic Skeleton Interface and the Dynamic Invocation Interface. You will need to buy a license at Xanalys to execute the lisp part.
After installation, be sure you load all patches for the current minor version 4.1.20.
There is a private patch available fixing marshalling issues with the CORBA Repository; ask Xanalys for that patch.

Unpack corba-tools-lisp-src.zip and load its system defining file defsys.lisp.
Unpack rti-wrapper-lisp-src.zip and load its system defining file defsys.lisp.
Unpack rti-count-lisp-src.zip and load its system defining file defsys.lisp.
Compile and load the 'rti-count system.
Startup the CORBA environment by evaluating (corba-init).
Startup the rti-count control panel by evaluating (make-console). You will need to specify the RTI_Factory IOR file of the Java rti-wrapper.

Now you are ready to use the lisp control panel for federations.
While there is a running federation created from the Java control panel, create a new federate listening to attributes by pushing the Receive Attributes ... button. You have to specify the federation name and how long the federate will listen to attributes.


This Page: http://asi-www.informatik.uni-hamburg.de/personen/bachmann/rti_wrapper/readme.html.en
Last Update: 16.02.2001, 08:30
Contact: bachmann@informatik.uni-hamburg.de