Upgrading from version 5.x to version 6.0
Consider the following information when upgrading from Diffusion™ version 5.x to version 6.0.
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
-
Note:
The Classic API has been removed and is no longer supported. To upgrade your solution to use Diffusion version 6, you must create clients that use the Unified API.
From this point onward all references to clients are to Unified API 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.
The minimum supported framework or platform version for a number of our client libraries has changed:- Java client must use Java 8 or above (minimum update 1.8.0_131-b11).
The C client now depends on zLib. Ensure that you have zLib version 1.2 or later available on your development system and add -lz to the LDFLAGS in your Makefile. For more information, see http://www.zlib.net.
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
- The release notes provided online at http://docs.diffusiondata.com/docs/6.11.2/ReleaseNotice.html
- The API documentation located at http://docs.pushtechnology.com/docs/6.0
API affected | Removed feature | Suggested alternative |
---|---|---|
Classic API | Every Classic client API | Rewrite your clients to use the API |
All APIs | Methods and classes related to removed topic types, see Removed components. | Use alternative topic types. |
All APIs | Methods and classes related to removed transport protocols, see Removed components. | Use alternative transport protocols. |
Apple® API | All methods that use content when creating and interacting with topics and messages. | Equivalent methods that use value. |
Apple API | PTDiffusionSessionErrorHandler | The error property on PTDiffusionSessionState |
Apple API | diffusionTopicStream:didUnsubscribeFromTopicPath:reason: in PTDiffusionTopicStreamDelegate | diffusionStream:didUnsubscribeFromTopicPath:reason: |
Apple API | removeTopicStream: in PTDiffusionTopicsFeature | removeStream: |
.NET API | The SetSessionDetailsListener, SetSessionDetails, and GetSessionDetails in IClientControl | Use a session properties listener instead. |
.NET API | Session.Start method and the CONNECTED_INITIALISING and RECOVERING_FAILOVER states | None |
Java API | The setSessionDetailsListener, setSessionDetails, and getSessionDetails in ClientControl | Use a session properties listener instead. |
Java API | ClientControl.close methods that include a String reason parameter | Use ClientControl.close methods that do
not include this parameter. The reason parameter is not passed to the client being closed. If you want to notify the client being closed of the reason for its closure, use the MessagingControl feature to send a message to the client. To ensure that the message is received before closing the client session, wait for callback to return before calling ClientControl.close. |
Java API | Topics.removeTopicStream method | Topics.removeStream method |
Java API | TopicControl.removeTopics method | TopicControl.remove method |
Java API | sendFetchReply method | None |
Java API | Session.start method and the CONNECTED_INITIALISING and RECOVERING_FAILOVER states | None |
Java API | SessionClosedException exception thrown from synchronous methods. |
API affected | Deprecated feature | Suggested alternative |
---|---|---|
Apple API | PTDiffusionTopicDetails | PTDiffusionTopicSpecification |
Apple API | sendWithTopicPath | sendWithPath |
Java API | Messaging.getStreamsForTopic | None |
Java API | TopicDetails | TopicSpecification |
.NET API | IMessaging.GetStreamsForTopic | None |
.NET API | ITopicDetails | ITopicSpecification |
JavaScript® API | TopicDetails | TopicSpecification |
All APIs | Setting headers on one-way messages | Send information in the message body instead. Note this only applies to the legacy one-way messaging. Custom headers are not supported for request-response messaging. |
Publisher API | Unused values in TopicProperty: LOAD_ENCODING, DELTA_ENCODING, LOAD_HEADERS, LOAD_ACK_REQUIRED, DELTA_ACK_REQUIRED. Methods in PublishingTopicData that get and set these values. | None |
Configuration API | ServerStatisticsConfig | None |
- Java API methods throw a NullPointerException when a null value is provided for a non-optional parameter. In previous releases, an IllegalArgumentException was thrown.
- Slave topics created by the client API no longer require that the master topic exists when the slave topic is created. The behavior of slave topics created by the Publisher API remains unchanged.
- Slave topics created by the client API are no longer removed when the master topics they are linked to are deleted. The behavior of slave topics created by the Publisher API remains unchanged.
- If a client session selects a set of topics to remove, all those that the session has permission to remove are removed. This is a change from the previous behavior, where the remove operation failed if the session did not have permission for one or more of the selected topics.
- "Remove with session" now removes only those topics that the session has permission to remove at the time the session closes. Previously, "remove with session" was able to remove all topics in a branch if the session had remove permission at the branch path.
- The client API can no longer remove topics created using the Publisher API and the Publisher API can no longer remove topics created using the client API.
- The Publisher API no longer supports message filters. It is no longer possible to filter topic updates on a session by session basis. Session properties filters can be used to manage subscriptions to topics and to address messages sent to sessions.
- The Publisher API no longer supports message acknowledgements. The Publisher API methods and configuration that control acknowledgements now have no effect and are deprecated.
- Topics created using TopicDetails (in Java / JavaScript ), ITopicDetails (in .NET) or PTDiffusionTopicDetails (in Apple APIs) will not work with topic persistence. Use the equivalent TopicSpecification class instead.
Removed components
- Legacy topic types:
- Paged string topics
- Paged record topics
- Protocol buffer topics
- Service topics
- Child list topics
- Topic notify topics
- Custom topics
- Legacy transport protocols:
- DPT
- HTTP Duplex
- HTTP Chunked Streaming
- The Introspector/Eclipse plugin
Instead use the console.
- JMS adapter version 5.1
Instead use the latest JMS adapter.
Upgrading your server installation
At release 6.0, the Diffusion server is tested and supported on Oracle® JDK 8 (minimum update 1.8.0_131-b11).
Earlier versions of Java are not supported.
- Use the graphical or headless installer to install the new version of
Diffusion
.
For more information, see Installing the Diffusion server.
- Contact DiffusionData for an updated license file.
- 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:
- The following configuration items are no longer valid. Remove them
from your configuration files.
- In Connectors.xml
- acceptors element
- In Logs.xml
- rotate-daily element
- In Management.xml
- JMS user and password definitions
- In Publishers.xml
- servers element
- In Servers.xml
- multiplexers and its child elements, write-selectors, auto-fragment, retry-interval in the fan-out configuration, elements that set thread priority, and outbound thread pool configuration.
- In WebServer.xml
- websocket-secure-response and close-callback-requests
- The following configuration items are now deprecated and are
ignored. Consider removing them from your configuration files.
- In Connectors.xml
- type and policy-file elements in the connectors definition.
- In Publishers.xml
- topic-aliasing element
- The following configuration items are no longer valid. Remove them
from your configuration files.
Behavior changes at the Diffusion server
- Topic replication is no longer supported for these deprecated topic types:
- single value
- record
- Topic replication is no longer supported for publisher-created topics.
- The Connectors.xml file included in the installation no longer includes backlog elements to define the maximum number of incoming clients that can be waiting to connect. Instead the Diffusion default of 1000 is used. For more information, see Connectors.
- The Statistics.xml server-statistics element and the related ServerStatisticsConfig API have no function and are deprecated. The Statistics.xml file included in the installation no longer includes the server-statistics element.
- The enabled attribute on the replication element of the Replication.xml configuration file has been deprecated. The related methods for the ReplicationConfig interface have also been deprecated. The attribute has been made optional and defaults to true. The attribute continues to control whether replication is enabled. Replication can be controlled by the individual settings for session and topic replication.
- The JMS adapter has moved from the adapters directory in the Diffusion server installation to the adapters/jms directory.
- The Push Notifications bridge has moved from the pushnotifications directory in the Diffusion server installation to the adapters/pushnotifications directory.