12.2 Release Notes

What’s New in this Release?

Cougaar 12.2 is a minor release.

Changes:

  • Defined new standard node/agent “template” parameters, which making it easy to enable/disable many related infrastructure services using a single “-D” system property. For details and examples, see the Cougaar Template Documentation.
  • Added support for optional $COUGAAR_RUNTIME_PATH and $COUGAAR_SOCIETY_PATH environment variables. The bin/cougaar script sets these as -Dorg.cougaar.runtime.path and -Dorg.cougaar.society.path, respectively. These environment variables can be used to separate the install directories into a shared, read-only $COUGAAR_INSTALL_PATH (e.g. in /usr/local/cougaar) and a private, read-write $COUGAAR_SOCIETY_PATH overlay path (e.g. in ~/my_app). The -Dorg.cougaar.jar.path and -Dorg.cougaar.config.path have been modified to search the additionally search the above directories. For an example, see the updated “hello world” and “ping” tutorials.
  • Added a new “ping” sample application, which is now included in the “core” jar. The example is comprised of:
    • A “ping sender” (javadoc, code)
    • A “ping receiver” (javadoc, code)
    • A “ping servlet” (javadoc, code)
  • This example is discussed in the Overview Slides as both a code tutorial and system benchmark.
  • Modified access to system properties, to allow Cougaar to run in environments where property access is restricted, such as:
    • An Applet, where the browser JVM security settings block access to most System properties.
    • A container engine such as Tomcat or WebLogic, where multiple Nodes can run in the same JVM, and would otherwise have property conflicts if they shared the same System properties table.
  • The code change was a replacement of all calls to “java.lang.System.getProperty(..)” with equivalent “org.cougaar.bootstrap.SystemProperties.getProperty(..)” methods, along with similar changes for calls to Java’s primitive wrapper classes (e.g. “Boolean.getBoolean(..)”). Developers are encouraged to use the new “SystemProperties” methods.
  • Added a “loopback” naming service implementation, for use in single-node environments. To enable, set the “wpserver” template parameter.
  • Implemented a new “NodeApplet” to run Cougaar in a browser JVM. Embed code like the following in your web page:
    <applet code=org.cougaar.core.node.NodeApplet.class archive="http://localhost/applet/lib/bootstrap.jar,lib/core.jar,lib/util.jar,lib/hello.jar,sys/log4j.jar" width=400 height=400>
        <param name="properties" value="
          -Dorg.cougaar.node.name=MyNode
          -Dorg.cougaar.society.file=Hello.xml
          -Dorg.cougaar.config.path=$CIP/configs/common;$CIP/configs/hello
          "/>
           Unable to load Applet.
      </applet>

    The Java Console should print:
    [HelloPlugin] - MyAgent: Hello, world!
    Currently IE and Firefox 1.5 are supported.

  • Added Node “shutdown()” support for use in container environments, such as JBoss.
  • Added support for optional “name” and “value” XML attributes in “vm_parameter” and “argument” elements, e.g.:
    <vm_parameter name="-Dalpha" value="beta"/>
    <argument name="x" value="123"/>

    At runtime these are simply concatenated together into the backwards-compatible format:
    <vm_parameter>-Dalpha=beta</vm_parameter>
    <argument>x=123</argument>
  • Added a message transport JMS link prototocol.
  • Added CommandLine “parse()” method to allow an external “exec(..)” application to extract the -Ds from a Cougaar society XML file. We expect to use this feature for better container and IDE integration, e.g. in Eclipse.
  • Modified “-Dorg.cougaar.jar.path” parser to support comma separators, in addition to the standard OS-specific path separator (“:” on Linux and “;” on Windows). This makes it easier to write cross-platform XML society files.
  • Prototyped a new kind of knowledge representation for Cougaar blackboard objects, called FrameSets. FrameSets are designed to create realtime models of physical systems on the Cougaar Blackboard. The models are updated in realtime and the FrameSet can infer additional updates. The FrameSet capability is purely experimental (i.e. expect sporadic support), but will have its own module for Cougaar v13. Currently, FrameSets are in the org.cougaar.core.qos.frameset package of the qos module. Minimal documentation can be found in the Cougaar Frames Documentation.