Just a second...

Upgrading from version 5.7 to version 5.8

Consider the following information when upgrading from Diffusion™ version 5.7 to version 5.8.

Upgrading your applications

Server-side components

Recompile all Java™ application components that are deployed to the Diffusion server, such as publishers and authorization handlers, against the new version diffusion.jar file. This file is located in the lib directory of your new Diffusion server installation.

Some features that your Java application components might use have been removed or deprecated. Pay attention to new deprecation warnings and compilation failures that occur during recompilation and review the API changes information in the following section to see if these changes affect your applications.

Clients

You can choose not to recompile your client applications and continue to use client libraries from a previous release. If you choose to use client libraries from a previous release, ensure that the libraries are compatible with the new server. For more information, see Interoperability.

You can choose to upgrade your client applications to use the new client libraries. To do this, recompile the client applications against the client libraries located in the clients directory of your new Diffusion server installation and repackage your client application with the new library.

Alternatively, the Java library is available in the Push Public Maven Repository and the JavaScript® library from NPM.

Some features that your client applications might use have been removed or deprecated. Review the API changes information in the following section to see if these changes affect your applications.

API changes

Further information about removed or deprecated features is available in following locations:
The following table lists API classes and methods that have been removed. If you attempt to recompile application code that uses these classes or methods against the version 5.8 APIs, it fails. Rewrite your application code to not include these features.
Table 1. API features removed in version 5.8
API affected Removed feature Suggested alternative
Java Classic API QueuesConfig This configuration can now only be done on the Diffusion server
MBeans MultiplexerLatencyNotification in the Multiplexer MBean and PermissionNotification in the AuthorisationManager MBean None
The following table lists API classes and methods that have been deprecated. If your application code uses these classes or methods, consider rewriting your application code to not include these features.
Table 2. API features deprecated in version 5.8
API affected Deprecated feature Suggested alternative
Configuration API setPriority and getPriority methods in ThreadPoolConfig None.
Configuration API setThreadPriority and getThreadPriority methods in MultiplexerConfig None
Configuration API ThreadPoolListenerConfig class None
Configuration API setThreadPoolListener, getThreadPoolListener, and removeThreadPoolListener methods in ThreadPoolConfig None. These methods are now no-ops.
Java Classic API getInboundThreadPool method in the ThreadService class None
The following list includes behavior that has changed in the API. If your application code relies on the previous behavior, rewrite your application code to take into account the new behavior.
  • For JavaScript, Android™, and Java clients that register session properties listeners, the Diffusion server can aggregate the initial batch of notifications into a single message. This decreases the risk of overflow in the message queue that is used to queue messages to be sent to the client. The client session registering the session properties listener might need to use a larger maximum message size to accommodate this message.
  • In Android, Java, and .NET, a session properties listener now receives a notification when a client becomes disconnected from the Diffusion server.
  • In Android, Java, and .NET, a session properties listener now receives a notification when a client fails over connection to another Diffusion server.
  • Clients can subscribe to a routing topic before a routing subscription handler is added. This subscription is now evaluated when a handler is added.
  • Publishers no longer receive not acknowledged notifications for messages sent to Unified API clients.

Upgrading your server installation

Note:

At release 5.8, the Diffusion server is tested and supported on Java HotSpot™ Development Kit 8 (latest update).

Java 7 is not supported.

To upgrade your Diffusion server installation, complete the following steps:
  1. Use the graphical or headless installer to install the new version of Diffusion.

    For more information, see Installing the Diffusion server.

  2. You can copy your existing license file from your previous installation to the etc directory of your new installation.
  3. You can copy most of your existing configuration files from the etc directory of your previous installation to the etc directory of your new installation. When you do, consider making the following changes:
    • In the Server.xml file remove the thread-priority elements for all types of thread. This element is deprecated and a no-op.
    • In the Server.xml file remove the keep-alive and priority elements for thread pool definitions. These elements are deprecated and a no-op.
    • In the WebServer.xml file ensure that the value of message-sequence-timeout is less that 1 hour. Values greater than 1 hour (3600000ms) cause a warning to be logged and the timeout is set to one hour.

      This parameter is used to re-order out-of-order messages received over separate HTTP connections opened by client browsers. It is rarely necessary to set this to more than a few tens of seconds.

Behavior changes at the Diffusion server

The following list includes behavior that has changed at the server. If your solution relies on the previous behavior, adjust your solution to take into account the new behavior.
  • You can no longer set a thread priority for threads.
  • You can no longer set a priority or keep-alive time for a thread pool.
  • Configuring max-size for a thread pool is now optional. If no value is define, the max-size defaults to the core-size.
  • You can no longer set the message sequence timeout to more that 1 hour.