Prosys OPC UA Java SDK 1.1.2
This is a new bug fix release, with some new features and optimizations. Memory consumption of a typical alarm node structure, for example, is reduced by 95%.
The SDK was also tested in the OPC Foundation Interoperability (IOP) Workshop - and fixed accordingly.
Changes to both SDK Client and Server
- Interface change!: return type of UaNode.removeComponent() changed from void to UaNode
- Interface change!: New: UaNode.addComponent
- ApplicationIdentity.loadOrCreateCertificate to read private key from .pfx file (if present)
- Fixed: MethodCallStatusException to include DiagnosticInfo
Changes to SDK Client
- Fixed: Do not use SoftReferences for permanent nodes in NodeCache (caused DataTypeConverter to fail occasionally)
- Fixed: UaNodeImpl.addReference was not creating inverse references correctly
- Fixed: Changes in client.MonitoredItem trigger modifyMonitoredItem requests to the server
- Changed: Log browse errors with Bad_NodeIdUnknown in AddressSpace.ReadReferences as warnings, instead of errors - some servers seem to return that for property nodes
- Changed: return type of UaClient.historyRead to HistoryReadResult[]
- New: UaClient.historyUpdate
- New: UaClient.get/setSessionName
- New: set/getMaxResponseMessageSize
Changes to SDK Server
- Interface change!: NodeManagerListener.onModifyMonitoredDataItem takes a parameter of type MonitoredDataItem, instead of MonitoredItem
- Changed: method nodes of all ConditionTypes point to the method defined in the type, instead of creating a new node for every instance
- Changed: state and transition nodes of ShelvedStateMachineType point to the method defined in the type, instead of creating a new node for every instance
- Changed: NodeManager internals changed to better enable custom node manager implementations without UaNode objects (requires still a bit more work)
- Changed: MethodManager.checkInputArguments to return Bad_ArgumentsMissing + diagnosticInfo, if nr of inputArguments is incorrect - and Bad_TypeMismatch for arguments with incorrect datatype (used to return Bad_InvalidArgument for all errors)
- Changed: ServerNode.addReference will add the target node of any hierarchical reference to the respective NodeManager, if it is not there already, releasing you from the need to call NodeManager.addNode or addNodeAndReference (see the sample code & tutorial)
- Fixed: NodeManagerUaNode.browseNode did not use includeSubtypes parameter
- Fixed: Discovery service did not work
- Fixed: UaServer with empty ServerName did not work
- Fixed: Missing parts of ServerType added
- Fixed: Default array dimensions in variables
- Fixed: MonitoredDataItem.SamplingInterval was not considered
- Fixed: ModifySubscription did not work properly (i.e. publish time checks)
- Fixed: Confirm method was not handled on EventManager level -> argument types were not checked
- Fixed: AcknowledgableConditionType.Acknowledge & Confirm (which are the default implemntations) to return an error if eventId does not match with the latest eventId. Also Confirm cannot be called if the condition is not Acked
- New: ServerNode, the new base class of all nodes, without any attribute data
- New: InstanceVariable + descendants to reduce memory consumption of structural nodes
- Tuned: ConcurrentHashMaps used to keep references in nodes, replaced by CopyOnWriteArrayLists to reduce memory consumption
- Tuned: LocalizedTextMap
- Tuned: fully using ReflectiveInstanceVariable/Property nodes instead of the heavy weight Cache or Plain versions
+ a number of other internal optimizations to the server nodes
+ a number of smaller fixes
30.11.10