Universal Messaging 10.3 | Release Notes | What's New In Universal Messaging 10.2
What's New In Universal Messaging 10.2
Universal Messaging 10.2 is the successor of Universal Messaging 10.1.
Universal Messaging 10.2 includes new features, enhancements, and changes as described in the following topics.
Updates for the HealthChecker tool
New checks
The set of available checks provided by the HealthChecker tool has been extended.
New checks are:
Extended syntax allowing custom values
The syntax for running the HealthChecker has been extended to allow custom values to be specified by using additional parameters. For example, the DurableSubscriberLargeStoreCheck check examines the number of remaining events to be consumed in a shared durable, and if the number is greater than a certain threshold a warning will be displayed. The default value for the threshold is 1000, but the additional parameter -threshold allows you to specify a different value for the threshold.
For more information, refer to the section Running a Configuration Health Check in the Administration Guide.
New Diagnostic Tool - Realm Information Collector
The Realm Information Collector is a new command-line diagnostic tool that gathers files and live data from one or more Universal Messaging realm servers. The tool makes it easier for you to collect information that Software AG support may require to diagnose issues with Universal Messaging, but the information collected may also be useful for internal support within your organization.
For more information, refer to the section The "Realm Information Collector" Diagnostic Tool in the Administration Guide.
Heap Dump following a JVM "Out of Memory Error"
Universal Messaging now automatically generates a heap dump file when an OutOfMemoryError occurs in the Java Virtual Machine (JVM).
For more information, refer to the section The Dump file for Out-of-Memory Errors (OOME) in the Installation Guide.
JVM behavior on Out of Memory Exception
In the initial version of the current product release, the Java client library triggered a JVM exit when an out of memory exception (OOME) occurred. In some updated versions of the product release, the client configuration parameter StopJVMonOOM has been introduced to allow this behavior to be configurable.
For details, see the description of StopJVMonOOM in the section Client Parameters in the Concepts guide.
Documentation of Command Line Tools
For several product versions, Universal Messaging has provided a set of command line administration tools that display online help when called on the command line. The product documentation set has now been extended to include this online help.
For more information, refer to the section Command Line Administration Tools in the Administrator Guide.
Horizontal Scalability
In the 10.2 release we have introduced the horizontal scalability (HS) feature, which allows clients to seamlessly publish and consume events from multiple independent realms and clusters using a single connection. This feature is available for both the Universal Messaging native API for Java and the Universal Messaging API for JMS. It is enabled by using the newly defined horizontal scalability URL syntax.
HS is generally a client-side function, and a server that is used in a HS set can also be used (at the same time) as a normal standalone realm or cluster. However, we don't recommend using the same channels/queues in both HS and non-HS modes.
The horizontal scalability feature is a replacement of the JMS layer round-robin publishing feature which is now deprecated. Also, the term round-robin connection factory in the product documentation has been replaced by the term horizontal scalability connection factory.
For more information, refer to the section Horizontal Scalability in the Concepts guide.
Check for version compatibility of Universal Messaging server and administration API client
In previous product versions, there was no explicit version compatibility check between the Universal Messaging server and administration API clients connecting to the server, so for example an administration API client v9.12 could connect to a v10.1 server. In general, this resulted in an undefined behavior, but usually in a stream corruption, since cross-version administration API compatibility is not supported.
Starting from v10.2, the Universal Messaging server includes a version check that rejects connection requests from administration API clients whose protocol version differs from that of the server. The Universal Messaging server adds an entry in the log file nirvana.log, clearly describing the protocol mismatch.
If the Universal Messaging server detects a version mismatch, the server replies to the client with a security exception that is intended to be compatible across Universal Messaging protocol versions. If, however, the security exception is not compatible with the protocol version of the administration API client, the client re-throws the received security exception.
Changed behavior following file system I/O exceptions
In previous product versions, the Universal Messaging server would keep running even after experiencing serious file system I/O exceptions, such as being unable to create a file for channel persistence due to using an invalid filename. In such situations, the application would not be made aware that these exceptions had been received, and so would continue processing without the expected persistence guarantees being in place.
This issue has been resolved by modifying the server to shut down when a non-recoverable I/O exception is received. This fail-fast behaviour may impact server availability but will avoid the worse situation where an application incorrectly assumes that it has persistence guarantees that are not in fact provided.
Client API for C++
New functionality
In the client API for C++, you can now get the header of an nConsumeEvent and iterate through its values. This functionality is already available in the client API for Java.
This can be achieved by getting the header from the event and then getting an iterator from the header.
You have to dispose of the iterator after you have finished using it.
void someMethod(nConsumeEvent* event) {
nHeader* header = event->getHeader();
nHeaderIterator* headerIterator = header->getIterator();

while (headerIterator->hasNext()) {
// get the key and value
std::string headerKey = headerIterator->getKey(); // nrvdead.orig.eid, nrvpub.time etc.
fObject* headerValue = headerIterator->getValue();

// do something with them

// move the next value in the header

delete headerIterator;
Support for JAAS login with a client X.509 Certificate chain
Universal Messaging now supports authenticating users through the Software AG Security Infrastructure component (SIN) with a client X.509 certificate chain. This allows users to access a Universal Messaging server that requires authentication, over an SSL/TLS enabled interface with a client certificate.
For more information, refer to the section Server JAAS Authentication with Software AG Security infrastructure component in the Concepts guide.
Added Support for creating Windows service and UNIX daemon during Installation
The Software AG Installer now contains an option that allows you to install the default instance of the Universal Messaging server as a Windows service or a UNIX daemon.
In the Installer you can also specify that the Windows service or UNIX daemon will start up automatically when the host machine starts up.
The executables used to start the Universal Messaging server in console mode have been replaced by nserver.bat (Windows) and nserver (UNIX). The new scripts start the Universal Messaging server either as a command line console or as a service (Windows) or daemon (UNIX), depending on in the mode in which the server was installed.
As described in the section Replacement of configuration file nserver.conf by nserverdaemon.conf, the configuration file nserver.conf used in previous product releases has been removed. The new scripts do not use the configuration file nserver.conf - they use nserverdaemon.conf instead.
Support for registering a Windows service using Command Central CLI
Command Central command-line interface can now be used to register a Windows service when creating a Universal Messaging server instance.
For more information, refer to the section Universal Messaging Instance Management Commands in the Administrator Guide.
Support for configuring JVM options using Command Central
Command Central web user interface and command-line interface can now be used to configure JVM options.
For more information, refer to the section JVM Options in the Administrator Guide.
Enterprise Manager Enhancements
*The Enterprise Manager now offers an option to convert clustered transient channels and queues to mixed channels and queues when you import a realm configuration from an XML file.
For more information, refer to the section Importing a Realm Configuration from an XML File in the Administrator Guide.
*The Named Objects tab for a channel has been renamed to Durables tab, and the Get button has been removed. Now, the Enterprise Manager updates the durables table automatically when a durable is added or removed, or the attributes of a durable are changed.
For more information, refer to the section Viewing and Managing Durables for a Channel in the Administrator Guide.
Client API for Java
The Java client API provides a new option, -autoconvert, to convert clustered transient channels and queues to mixed channels and queues when you import a realm configuration from an XML file.
For more information, refer to the section Java Client: Import a realm's configuration information in the Developer Guide.
Replacement of configuration file nserver.conf by nserverdaemon.conf
In previous product releases, the Universal Messaging server could be configured using either of the configuration files nserver.conf or nserverdaemon.conf. The file nserver.conf file was used if the server was started from the command line, and nserverdaemon.conf was used if the server was started as a Window service or UNIX daemon.
In the new release, the configuration file nserver.conf has been removed, and internal scripts that previously used nserver.conf use nserverdaemon.conf instead.
Use of terms "named object" and "durable subscription"
In previous product releases, we used the terms named object and durable subscription as synonyms. As of v10.2, we are phasing out the term named object and focusing on using the term durable subscription or its abbreviated form durable.
Documentation Corrections
MQTT Quality of Service (QoS) Level Support
In previous product releases, the documentation stated that Universal Messaging supports MQTT QoS levels 0, 1 and 2.
However, support is only provided for QoS levels 0 and 1. Connections requesting QoS level 2 will be downgraded to QoS level 1 at connection time, as allowed by the MQTT specification.
For more information, refer to the section MQTT: An Overview in the Concepts guide.
Deprecated features in v10.2
The following Universal Messaging features are now deprecated in Universal Messaging 10.2. Features listed as deprecated are still available in the product, but will be removed in a future release.
*XML document type
Currently it is possible to publish and consume messages that are stored in XML format. This functionality is now deprecated.
Note that this deprecation notice only applies if the entire message is in XML format. It does not apply if only the event payload is in XML format.
*Simple, Paged and Offheap store types
The following store types (i.e. channel types and queues types) are now deprecated:
*SSL certificate generator
The Certificate Generator utility, that can be used to generate a self signed server certificate, a self signed client certificate and a trust store, is now deprecated.
*Client API for Python
The Client API for Python is now deprecated.
*Server plugins
The following server plugins are now deprecated:
*Proxy passthrough
*Round Robin publication via JMS
All APIs and classes under the package com.pcbsys.nirvana.nJMS.roundRobin are deprecated and the functionality has been placed into the package com.pcbsys.nirvana.nJMS using the Horizontal Scalability feature of Universal Messaging introduced in v10.2.
Any existing JMS Round Robin scenarios will need to recreate or modify their JNDI environments to not use these classes but to use their equivalent in the package com.pcbsys.nirvana.nJMS.
The term round-robin connection factory in the product documentation has been replaced by the term horizontal scalability connection factory.
*Enterprise Manager Scheduler
The Scheduler feature of the Enterprise Manager is now deprecated.
Removed features in v10.2
The following features that were available in previous product releases have been removed in Universal Messaging 10.2.
*TradeSpace demo
The TradeSpace demo that was available in previous versions has been removed from the product.