I'm sponsoring the following proposal for fast-track approval. The timer 
is set for 10/28/2008.

Proposed release binding is minor.

Fastrack content is [now] included below (it will look better if viewed 
as html)

The attached zip file [additional.zip] contains copies of the functional 
specs referenced in this document.
The document (and related files) is also available at:  
http://sac.sfbay/arc/LSARC/2008/648/robin.html

------------------------------------------------------------------------


      FastTrack: /OpenMQ / Sun Java System Message Queue 4.3 (Robin)/

      Sponsor: /Linda Schneider/

      Release Binding: / Minor/

This is a FastTrack request for minor interface changes in Open Message 
Queue (OpenMQ) / Java System Message Queue 4.3 (Robin). Robin is a 
maintenance release to Message Queue 4.2 (LSARC/2008/387) 
<http://sac.sfbay/Archives/CaseLog/arc/LSARC/2008/387/>. It includes bug 
fixes and a small number of minor enhancements.

This FastTrack adds modifies several committed and uncommitted exported 
interfaces and adds two new imported interfaces. It does not change the 
classification or remove any existing interface.


      Overview of Changes

    Several changes were added to 4.3 which impact the product's interface:

        * A REST style API was added to allow messages to be produced or
          consumed to the MQ provider
        * A new bundling and layout scheme was added to support the
          product installed by our new Zip based installer (which will
          also be used in future releases for IPS packages)
        * Minor administration changes
        * Minor modifications to the windows installer
        * Addition of a command to make it easier to locate the
          uninstaller on the OpenMQ packages.

    _Public interface changes_

       1. /*New Exported Interfaces*/: Creation of the Universal Message
          Service (UMS) API:
              * The UMS Protocol <#umsproto> used by applications to
                connect to the service.
              * The UMS Configuration <#umsconfig> which contains the
                set of configuration parameters for the service.
              * A new war file (imqums.war) containing the servlet
                required by UMS.
       2. /*New Exported Interface*/: Creation of a the new filesystem
          layout for use by the new packages. This layout will also be
          used for our new install bundles specifically:
              * Our OpenMQ product
              * Our AIX product (the platform is new to 4.3)
          No changes have been made to our existing packages used in
          earlier releases. (They will still use the old filesystem
          laytout)
       3. /*New Exported Interface*/: A new uninstall bat/shell script
          has been added as a shortcut for uninstalling the openMQ-only
          release.
       4. /*Modified Exported Interface*/: Minor changes have been made
          to JMX to add additional information for destinations and
          consumers.
       5. */New Imported Interfaces/*: Installation of the product on
          windows (both for SJSMQ and OpenMQ) now uses Java registry
          keys as a fallback to locate a JRE to use to start the installer.

    _Private interface changess_

    Additional changes have been made to private interfaces:

       1. */Modified Interface/*: Output of imqcmd. This interface is
          Uncommitted.


      Descriptions of Changes

    *_Universal Message Service (UMS)_* - a REST style API

        The Universal Message Service is a simple REST based API that
        allows any HTTP capable device to access Message Queue. This
        allows clients written in languages such as c-sharp and phython
        to send and receive messages.

        A new web component (imqums.war) can be deployed on any web
        container. That component serves as a bridge between the ums
        client and the JMS provider. The ums client sends the ums
        protocol (which uses http posts) to connect to the imqums
        service. That service uses standard JMS apis to connect to the
        MQ server (the broker).

        [High level Diagram of UMS]

        _Client->web component protocol_

            The protocol has two types of messages service requests
            (messages sent to the messaging system) and service
            responses (responses received from the messaging system).
            There are also two services (XML and basic text) which are
            provided in this release.

            The API supports the following commands:

                * _login_ logs into the system and creates a UMS session
                  (note: the password must be sent in plaintext since it
                  is going as part of the http command line, however use
                  of SSL is recommended).
                * _send_ Sends a message (which will become a JMS
                  message) to MQ.
                * _receive_ Receive a message from MQ.
                * _commit_ Commit a transaction (provided the UMS
                  session is transacted).
                * _rollback_ Rollback a transaction. (provided the UMS
                  session is transacted).
                * _close_ Close the UMS session.

            All messages are request/response:

            /Service Requests/
                The http POST method is used for all interaction with
                the UMS. Each protocol message is represented with the
                following syntax:

                
/http://host:port/<ums-context-root>/<service>[?<query_string_if_simple>];/

                Where:

                    * /ums_conext-root/: the location where the WAR file
                      was deployed
                    * /simple/: the type of service used (simple or XML)
                    * /query_string/: used for the simple service.
                      Provides a set of name value pairs separated by &
                      which specify information such as the service
                      type, messaging domain, and destination name

                For the Messages:

                    * For XML messages, the body contains the command
                      information in XML format
                    * For the simple service, the body is empty (since
                      the protocol information in in the URL)

            /Service Responses/

                For the XML service, the body of the HTTP request
                returns a SOAP message containing return information.
                For the simple message service, the body of the message
                may contain some specific return information.

            Lower level details of the Protocol are found in the UMS
            Protocol description
            <http://sac.sfbay/arc/LSARC/2008/648/specs/ums/protocol.html>.

        _UMS configuration_
            When the war file is deployed, several configuration options
            are available for the servlet including password to be used
            to the broker, how often to poll for messages and the broker
            address. Specific configuration parameters are found in the
            UMS Configuration specification
            <http://sac.sfbay/arc/LSARC/2008/648/specs/ums/config.html>. 

    *_Filesystem layout and packaging change_* - support for new
    packages which can handle multi-install

        In MQ 4.3 we are adding a new zip based packaging bundle. In the
        following release (Crane), we will be replacing the zip bundles
        for IPS packages. This layout is the one we will be using for
        going forward for all future unbundled products (either zip
        based or IPS).

        *Note:* Our current SVR4 or Linux RPM based packaging is
        unaffected by these changes.

        MQ's filesystem will be laid out following the JES Filesystem
        Layout for Unbundled Software
        
<http://sac.sfbay.sun.com/WSARC/2006/239/final.materials/FSL_Unbundled_v1.0.pdf>.
        ||

        <install_home>
           |
           |-------- etc
           |          |
           |          |-mq [MQ etc files]
           |
           |-------- var
           |          |
           |          |- install [contains installer information]
           |          |
           |          |-mq [used by the server for storing data]
           |
           |-------- mq
           |         |-------- bin   [MQ executables]
           |         |          |
           |         |          |- sparcv9 (amd64) [64 bit solaris executables]
           |         |
           |         |-------- lib [MQ jar files and libraries]
           |         |          |
           |         |          |- sparcv9 (amd64) [64 bit libraries for the MQ 
C API]
           |         |
           |         |-------- include [C-API file system headers]
           |         |
           |         |-------- lib64  [note: linux libs used instead of sparcv9]
           |         |
           |         |-------- examples [demos]
           |         
           |-------- install
                       |
                       |- open installer implementation and jar files

                

        For more details and specific locations for each file installed
        by MQ see the MQ 4.3 Filesystem and Packaging specification
        <http://sac.sfbay/arc/LSARC/2008/648/specs/filelayout.html>.

    *_mquninstall[.bat]_* - script to improve uninstall experience

        The installer places the script to uninstall the product in:
        /<install_home>/var/install/contents/mq/uninstaller/

        A low level install script (used by the mq installer) is located at:
        /<install_home>/install/bin/uninstaller/

        While we do document the location of the uninstaller, it is
        difficult to find and users often attempt to uninstall with the
        wrong uninstaller executable.

        For this release, we are adding a new script (or bat file)
        called /mquninstall/ that is being placed in the
        /<install_home>/mq/bin/ directory. This will will only be in
        OpenMQ bundles for this release (it will not be available in
        package based installs).

    *_JMX Administration API changes_ * - minimal JMX attribute and
    CompositeData changes

        The following changes will be made to the JMX monitoring api:

            * A new attribute NextMessageID will be added to consumers
              and destinations
            * A new attribute NumMsgsPending to consumers

        The specific changes are:

            * DestinationMonitorMBean

              *New Attributes:*
              Name      Set/Get         Type    Description
              NextMessageID     G       String  JMS Message Id of the next
              message to be sent to any consumer

            * ConsumerMonitorMBean:

              *new Keys for Composite Data*
              Key       Value Type      Description
              NextMessageID     String  JMS Message Id of the next message
              to be sent to this consumer
              NumMsgsPending    Long    The number of messages which have
              been sent to this consumer but have not been acknowledged.
              They may either be queued for delivery or delivered to the
              consumer

    *_Administration API (imqcmd) output changes_ * - imqcmd output
    changes for durable subscribers

        *Note: the output returned from this application has a
        classification of uncommitted.*

        This changes the output of the command imqcmd list dur to list
        all destinations (and include a directory name) if the -d is
        omitted. The following examples show the ouptut changes:

            * Output when listing durables when a destination passed in
              on the command line. (Unchanged from previous releases)

              /imqcmd list dur -d mydest /

              ||

              Listing all durable subscriptions on the topic 'mydest'
              on the broker specified by:

              -------------------------
              Host         Primary Port
              -------------------------
              localhost    7676

              
---------------------------------------------------------------------------
              Durable Sub. Name   Client ID   Number of Messages   Durable Sub. 
State   -
              
---------------------------------------------------------------------------
              mydn                mycid       0                    INACTIVE     
        -

              Successfully listed durable subscriptions.
                          

            * Output when listing durables when a destination is not
              provided on the command line (adds new column
              DestinationName)

              /imqcmd list dur -- listing all destinations/

              |
              Listing all durable subscriptions
              -------------------------
              Host         Primary Port
              -------------------------
              localhost    7676

              
------------------------------------------------------------------------------------------
              Durable Sub. Name   Client ID   *Destination Name*   Number of 
Messages   Durable Sub. State
              
------------------------------------------------------------------------------------------
              456                 123         **.foo*              0            
        INACTIVE
              mydn                mycid       *mydest*             0            
        INACTIVE

              Successfully listed durable subscriptions.

              |

    *_Additional Installation Imported interfaces_ *

        The windows Installer.vbs script now uses the following
        variables to locate a JRE for the installer:

            * /HKLM\SOFTWARE\JavaSoft\Java Runtime
              Environment\CurrentVersion/
            * /HKLM\SOFTWARE\JavaSoft\Java Runtime
              Environment\<version>\JavaHome/

        During installation, the installer will first attempt to use the
        jdk (if any) which was passed into the installation script, if
        no jdk is passed in it will look for a jre installed as part of
        the bundle, if no jre is found it will look at the keys to find
        the current JDK and its javahome.

    *_Additional Logging Messages_ *

        Some bug fixes require the addition or modification of log
        messages. No change was made in the format of those messages.


      Imported/Exported Intefaces

    *Exported Interfaces*
    Interface   Classification  Comments
    imqcmd Ouput        Uncommitted     Modifies an existing interface to 
support
    listing of all durables including their destination. See specific
    changes above.
    MQ MBean Attributes names   Committed       Modifies an existing interface
    to add support for NextMessageID method. See specific changes above
    MQ MBean Lookup keys for CompositeData      Committed       Modifies an
    existing interface to add support for NextMessageID method and
    NumMsgsPending. See specific changes above.
    Unbundled Filesystem Layout         Committed       *New Interface.*

    Creates a new filesystem layout for the product when it is not
    shipped with native packaging. See the Filesystem Layout
    specification
    <http://sac.sfbay/arc/LSARC/2008/648/specs/filelayout.html>

    Broker Log Infomation       Uncommitted     Modified an existing interface
    by adding new log messages (no format changes)
    UMS Protocol        Committed       *New Interface.*

    Defines the protocol for the new ums service.See the UMS Protocol
    Specification
    <http://sac.sfbay/arc/LSARC/2008/648/specs/ums/protocol.html>

    UMS Configuration   Committed       *New Interface.*

    Defines the configuration properties for the new ums service. See
    the UMS Configuration Specification
    <http://sac.sfbay/arc/LSARC/2008/648/specs/ums/config.html>

    imqums.war  Committed       *New Interface.*

    Defines the name of the war file used for deploying the new ums
    service. See specific changes above.

    <mq_home>/bin/mqunistall[.bat]      Committed       *New Interface.*

    A new script file which is available only on the new openMQ bundles
    that makes it easier for users to find the uninstaller. See specific
    changes above.

    *Imported Interfaces*
    Interface   Classification  Comments
    HKLM\SOFTWARE\Java Soft\Java Runtime Environment\CurrentVersion
    Standard    *New Interface*

    Location of the latest release of the JRE on a windows system.

    HKLM\SOFTWARE\Java Soft\Java Runtime
    Environment\<version>\JavaHome      Standard        *New Interface*

    Location of the java home for a release of the JRE on a windows system.


      References

    *Current Release*:

    Message Queue 4.3 feature functional specifications:

        * UMS protocol
          <http://sac.sfbay/arc/LSARC/2008/648/specs/ums/protocol.html>
        * UMS configuration specification
          <http://sac.sfbay/arc/LSARC/2008/648/specs/ums/config.html>
        * MQ Filesystem Layout and packaging specification for Robin
          <http://sac.sfbay/arc/LSARC/2008/648/specs/filelayout.html>

    *Previous Release*:

    Message Queue 4.2 (Harrier) LSARC case:
    http://sac.sfbay.sun.com/arc/LSARC/2008/387

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.opensolaris.org/pipermail/opensolaris-arc/attachments/20081022/6435545f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ums.gif
Type: image/gif
Size: 6880 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/opensolaris-arc/attachments/20081022/6435545f/attachment.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: additional.zip
Type: application/zip
Size: 45322 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/opensolaris-arc/attachments/20081022/6435545f/attachment.bin>

Reply via email to