Technical Notes
Things to Note
- Lime currently uses multicast as the communication mechanism to implement
the engagement and disengagement protocol. Be aware of this when using Lime,
because multicast packets are automatically sent to hosts on the same
subnet. So, if different users are testing different Lime applications on the
same subnet, the engagement packets from one application are likely to
interfere with those of the other. To avoid such conflicts, be sure to specify
a different multicast port or address for one of the Lime systems (see the
lime.util.Launcher
API).
Current Limitations
- Arbitrary connection and disconnection is currently not supported. Changes in connectivity are explicitly triggered by the user using the API calls or with the SafeDistance protocol basedon GPS information. Work on a version of Lime that accounts for unannounced disconnection is ongoing.
- The integration of µCode and Lime currently requires that the classes used in tuple fields are already present at the destination. In other words, a mobile agent cannot write or access tuples using classes that are not present on the file system of the hosting Lime server.
Dependencies
- Lime requires a minimum of four jar files to run:
lime.jar
,groupmgmt.jar
,location.jar
andlights.jar
. Using mobile agents requiresmucode.jar
. Communicating with a GPS device through a serial port requires Sun'scomm.jar
. Note that Sun has not released a version ofjavacomm
for Linux or Macintosh, though unofficial ports may be available.
Lime 1.1 API Changes
A few minor changes have been made to the API for release 1.1:
- The
shutDown()
method in LimeServer is nowshutdown(boolean exit)
. Pass true if you want LimeServer to shutdown the JVM (by callingSystem.exit(0)
) when it's finished shutting down the LimeServer. Note also the change in capitalization. - The
declareLeader()
method has been removed as there is no longer the need to declare a leader. All agents should useengage()
instead. - The
getServerID()
method is no longer static. UseLimeServer.getServer().getServerID()
. - Some PropertyKeys have changed, so calls to
getProperty()
should be checked. Seelime.PropertyKeys
orlime.util.Launcher
for the current keys that can be used.