Prosys OPC UA Java SDK 1.3.0
This is a new minor release, with some new features and improvements.
This release includes a lot of fixes due to interoperability testing, especially the Server SDK has a huge number of details which have been corrected while running the Compliance Test Tool (CTT) tests, defined by the OPC Foundation.
This release raises the level of compliance to a very high level and we hope to receive a full Tested status for the SDK later on. The CTT is still under development to finish the Base Profile tests and we will continue the tests as the tool and test scripts evolve.
On client side, communication breaks are now handled automatically with a proper reconnect sequence, which also ensures that all subscription notifications are handled and "republished" if some packets are missed.
This version of the SDK also supports Android development for the Android Dalvik virtual machine. Version 2.3.3 (Phone) and 3.0 (Tablet) onwards are supported, only without security, though.
OPC Foundation Java Stack changes
- version 1.01.313.6
- Fixed: EndpointDiscoveryService details
- New methods: .parseXxx
- Fixed: UnsignedInteger/UnsignedShort.compareTo
- Encoding of a few StructureTypes, which were hard-coded
- Useless SecurityMode constants removed
Changes to both SDK Client and Server
- Improved: DataTypeConverter, parseVariant to support more types
- New: Support for PEM files for private keys - new self-signed private keys are saved as PEM by default now - used internally in ApplicationIdentity.loadOrCreateInstanceCertificate, for example
- Changed: various certificate related exceptions in SecureIndentity and ApplicationIdentity changed to SecureIdentityException (wrapping the original)
- Changed: Subscription.MaxKeepAliveCount is now 20, was 5
Changes to SDK Client
- Changed: UaClient.reconnect() to work according to the OPC Foundation specifications (first, try to renew the secure channel and reactivate the session. If it fails, recreate the session)
- New: UaClient.set/getAutoReconnect() to automatically call reconnect, when the server status changes to CommunicationFault: this is ON by default!
- New: UaClient and Subscription use republish internally to re-request notifications that were missed (tracking the SequenceNumber of the notifications)
- New: UaClient.set/getStatusCheckTimeout() (Default 10 s)
- Changed: Default value of UaClient.StatusCheckInterval to 1 s (was 30 s)
- New: UaClient.getServerState()
- Changed: Default value of Subscription.KeepAliveCount to 20 (was 5)
- Changed: SubscriptionNotificationListener.onDataChange to use MonitoredDataItem parameters instead of MonitoredItem
- Changed: SubscriptionNotificationListener.onEvent to use MonitoredEventItem parameter instead of MonitoredItem - and added Subscription as a parameter
- Fixed: SubscriptionNotificationListener.onEvent was never called
- Changed: SubscriptionNotificationListener to use the Subscription parameters of type Subscription instead of SubscriptionBase
- Fixed: AddressSpace.BrowseNext to accept several continuationPoints
- Fixed: MonitoredItem.equals failed to verify that the items are in the same subscription!
+ a number of smaller fixes
Changes to SDK Server
- Changed: NodeManager.hasNode() made abstract
- Changed: SubscriptionManager.getMaxSubscriptionCount limits the number of subscriptions per session- not the total number
- Changed: SubscriptionManager.isClosed() renamed to isRunning(); start() and close() changed to protected
- Changed: ShelvingState of AlarmConfditionNode instances is no longer exposing the coplete structure with new nodes. Instead it is referring just to the type and the structure should be used from the type.
- Removed: NodeManagerUaNode.set/getNodeIdFormat()
- New: NodeManagerUaNode.set/getNodeIdDelimiter()
- New: SubscriptionManager.set/getMaxPublishingInterval()
- New: SubscriptionManager.set/getMinPublishingInterval()
- New: Session.getSubscriptionCount()
- New: ExclusiveLimitStateMachineType & ExclusiveLimitAlarmType.LimitState property added
- Hidden: Session members that are to be used internally only
- Fixed: Handling of requested SamplingInterval=-1 (do not revise)
- New: Absolute Deadband handling in MonitoredDataItem
- New: DataChangeTrigger handling in MonitoredDataItem (enable data changes of plain timestamp changes, for example)
- New: SessionManager.set/getMaxBrowseContinuationPoints()
- Fixed: Details of DiscoveryServer registration - fixing an unterminated thread issue at server shutdown
- Fixed: UaServer.removeEndpoint
- Fixed a big number of compliance details to satisfy the Compliance Test Tool, this includes a lot of error code changes for various incorrect input
+ a big number of smaller fixes
Changes to the Sample applications
- New: SampleConsoleClient can take a "CmdSequence" from the command line
- Do not disconnect at onShutdown
- Changed: SampleConsoleServer reorganized to enable inheritance (static methods and members changed to non-static)
- Renamed: DataItemsFolder to MyBigNodeManager in the sample
- Fixed: DataType of the DataItems in MyBigNodeManager was not set
- Fixed: UaServer.DiscoveryServerUrl updated to the actual one after success, to prevent additional warnings of the "changed" Url
- New: StaticData folder including static data nodes to enable compliance testing