<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	    <channel>
        <title>Prosys Forum - Forum: OPC UA SDK for Java</title>
        <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/</link>
        <description><![CDATA[Prosys OPC &#038; OPC UA related discussion]]></description>
        <generator>Simple:Press Version 6.11.14</generator>
        <atom:link href="https://forum.prosysopc.com/forum/opc-ua-java-sdk/rss/" rel="self" type="application/rss+xml"/>
		                <item>
                    <title>hbrackel on PubSub: Multiple PubSubSystems with 1 ea. connection vs.1 PubSubSystem with multiple connections</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-multiple-pubsubsystems-with-1-ea-connection-vs-1-pubsubsystem-with-multiple-connections/#p7587</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-multiple-pubsubsystems-with-1-ea-connection-vs-1-pubsubsystem-with-multiple-connections/#p7587</guid>
					                        <description><![CDATA[<p>When an application requires multiple connections (e.g. publishing on multiple UDP multicast addresses or subscribing from multiple multicast addresses) options would be to create either a single PubSubSystem with multiple connections or multiple PubSubSystems with one connection each.</p>
<p>Are there any benefits of one over the other option apart from the possibility to start/stop each individually or together?</p>
]]></description>
					                    <pubDate>Fri, 05 Jun 2026 17:51:02 +0300</pubDate>
                </item>
				                <item>
                    <title>hbrackel on PubSub - Adding and retrieving meta-data to/from udpuadp datasets</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7586</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7586</guid>
					                        <description><![CDATA[<p>Super cool! </p>
<p>The updated SDK is now able to transmit the desired meta-data. As a quick trial I sent the EngineeringUnits as an EUInformation structure and it is easily retrievable from the metadata.</p>
<p>Thank you very much for providing the SDK update so quickly.</p>
<p>Have an enjoyable holiday time.<br />
-HU</p>
]]></description>
					                    <pubDate>Thu, 04 Jun 2026 16:21:33 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on PubSub - Adding and retrieving meta-data to/from udpuadp datasets</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7585</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7585</guid>
					                        <description><![CDATA[<p>If you want to try, we now have a beta build that fixes the PubSubPublishedVariableConf metadata issue, ask via <a href="mailto:jsdk-support@prosysopc.com" target="_blank">jsdk-support@prosysopc.com</a></p>
<p>Now in the Publisher in com.prosysopc.ua.samples.pubsub.SamplePubSubConfiguration.addPublishedVariableDataSet(Builder, UaNodeId) you can add e.g.<br />
variableConfBuilder.putMetaDataPropertyMap(UaQualifiedName.standard("Test"), "TestValue");<br />
Tested via in Subscriber side in com.prosysopc.ua.pubsub.PubSubSystem.addEventListener if you print the event/metadata.</p>
<p>Note that the SDK doesn't support 'metadata versioning' and it is only created when the PubSubSystem starts. Thus only constant values work. Depending how things go, maybe at some point there could be some "selector" configuration similar to how EventFilter works in opc.tcp events that would select sub-node values from a node being published (and maybe even monitor those ..), but that is possible future exploration. </p>
<p>Also, use namespaces for the UaQualifiedName(s) that are known for both sides. We sort of did a bit of a mistake in the design that both sides are assumed to know the types, but for a generic Subscriber it would instead need a separate "type realm" for each PublisherId+WriterId combination. The DataSetMetaData inherits from DataTypeSchemaHeader (from which also UABinaryFileDataType inherits) that is intended to list types used by the Publisher (though, in a case where the data would get pushed to a node on the server, then it must also follow that the server must know the type, or there wouldn't be much sense as far as I can think of use-cases).</p>
]]></description>
					                    <pubDate>Wed, 03 Jun 2026 15:53:31 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on PubSub - Adding and retrieving meta-data to/from udpuadp datasets</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7584</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7584</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>Basically there is almost no information modelling in the PubSub side.</p>
<p>The metadata SamplePubSubConfiguration is related to which MQTT Broker topic the DataSetMetaData is published. You might be referring to the FieldMetaData <a href="https://reference.opcfoundation.org/specs/OPC-10000-14/6.2.3.2.4" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>...../6.2.3.2.4</a> that is contained in the DataSetMetaData. Currently there is no way in the SDK to cause anything be sent in the 'Properties' field related to it.</p>
<p>In UDP the Subscriber must ask for the metadata via the multicast network, the Publisher would then send a message that contains the DataSetMetaData. It would seem the spec also nowadays allows cyclic publishing (we could implement this in the future).</p>
<p>The only info our SDK Subscriber side would currently look from the DataSetMetaData are the field names. Custom types are not supported (but will probably work, if the Subscriber side already knows them) nor is the RAWDATA mode. Our Subscriber side will invent Field#### style names for fields of datasets for which it doesn't know the metadata. It will also send the "discovery request" messages for which our Publisher side will respond with the DataSetMetaData messages.</p>
<p>The received metadatas will cause SDK to update the PubSubSystemConf of the PubSubSystem. They can also be manually set via PubSubSystemConf.Builder.addDataSetMetaDatas(PubSubDataSetMetaDataConf). This only works for the Subscriber side, not for the Publisher side. The idea at least was that the SDK calculates the metadata from the nodes, as they already contain the information.</p>
<p>The com.prosysopc.ua.samples.pubsub.SampleUtils.addPubSubSystemListeners(PubSubSystem) shows how to listen for DataSet and DataSetMetaData messages. The metadata can be obtained also from PubSubDataSetMessage.getDataSetMetaData(), assuming it is known.</p>
<p>P.S.<br />
The PubSubSystemConf PubSubDataSetMetaDataConf is only used in the Subscriber side. </p>
<p>PubSubPublishedVariableConf.getMetaDataPropertyMap() I believe at the moment does nothing. Probably should be categorized as a missing feature or bug, some of the thing were originally added 1:1 mirroring the spec configuration. It probably should go to com.prosysopc.ua.pubsub.PubSubFieldMetaDataConf.getProperties(), then I think it might get sent. </p>
<p>P.S.2<br />
Vacation season starts soon, thus it might take after summer to do much</p>
<p>P.S.3<br />
If a Subscriber would need instead a .uabinaryfile for the publisher configuration (this used to be common), there is a prototype implementation via PubSubSystem.commands().execute(PubSubSystemCommands.INTERNAL_PUB_SUB_SYSTEM_CONF_TO_UABINARYFILE, command) and give PubSubSystemConfToUaBinaryFileCommand as the command. Then com.prosysopc.ua.UaBinaryFile.toBinary() and write the ByteString.getValue byte[] to a file.</p>
]]></description>
					                    <pubDate>Wed, 03 Jun 2026 14:27:29 +0300</pubDate>
                </item>
				                <item>
                    <title>hbrackel on PubSub - Adding and retrieving meta-data to/from udpuadp datasets</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7583</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-adding-and-retrieving-meta-data-to-from-udpuadp-datasets/#p7583</guid>
					                        <description><![CDATA[<p>I'd like to add meta-data to variable based datasets / PublishedDataSets, such as the engineeringUnits for individual variables or EURanges.. In the SDK samples I only saw meta data for broker based communication.</p>
<p>Could you please provide a short example of adding meta-data on the publisher side and retrieving it on the subscriber side? Both sides would be servers as well.</p>
<p>Many thanks</p>
<p>PS: I tried using PubSubPublishedVariableConf.putMetaDataPropertyMap` and `PubSubSystemConf.addDataSetMetaData'. But neither seems to serialize the meta data on the wire</p>
]]></description>
					                    <pubDate>Wed, 03 Jun 2026 00:19:18 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on PubSub Server AddressSpace - how to "synchronize" with actual pubsub configuration</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-server-addressspace-how-to-synchronize-with-actual-pubsub-configuration/#p7582</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-server-addressspace-how-to-synchronize-with-actual-pubsub-configuration/#p7582</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>Sorry, not supported by the SDK.</p>
<p>It might be implementable in the application level. However, some notes might be of use. To begin with, it would need to be differentiated do we talk about the ...  "complicated hierarchical version" or "single FileType node version" of the address space. Also the use-case would need more details.</p>
<p>Seems nowadays the spec actually has an official "single FileType way" <a href="https://reference.opcfoundation.org/specs/OPC-10000-14/9.1.3.7" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....14/9.1.3.7</a>. Something like this was typically seen as a custom solution when PubSub came out. Implementing the original information model is complicated, not sure has anyone done that. And if has, then does anything actually use it. For example, UaExpert back then had PubSub configuration view just writing a UABinaryFile to a custom FileType node. Lets just say PubSub is more "work-in-progress" than 'opc.tcp'  (in general and our SDK-wise).</p>
<p>Probably the FileType way (PubSubConfigurationType) is a lot easier to implement in an application and since it is also atomic swap it probably would be the way to go for tools. Though, it is harder to visualize, as it needs to be read first.</p>
<p>PubSubConfigurationType might be implementable using SDK 5.7.0 by implementing custom FileTypeNode.FileWrapper + FileTypeNode.RandomAccessFileWrapper. You will also need to set an implementation of the com.prosysopc.ua.types.opcua.server.PubSubConfigurationTypeNodeBase.setCloseAndUpdateMethodImplementation(PubSubConfigurationTypeCloseAndUpdateMethod) as the PubSubConfigurationType methods are not implemented in the SDK. This could be something we could maybe implement in the SDK itself, though unlikely to happen "exactly now", maybe after summer.</p>
<p>For the "complicated hierarchical version" I can mention that UaServer.setPubSubConfigurator(PubSubConfigurator) was originally created as a hook for all the Method calls related to PubSub (<a href="https://documentation.prosysopc.com/JSDK/javadoc/com/prosysopc/ua/server/PubSubConfigurator.html" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....rator.html</a>, there is a lot, Codegen creates code that handles the routing to this interface). Though, in addition one would need to handle other services as well such as some Writes. Maybe this model could better serve as a read-only variation and possibly for e.g. restarting a failed Writer or something like that (as that is not a configuration change, sort of). </p>
<p>One of the downsides of us going with our own configuration style com.prosysopc.ua.pubsub.PubSubSystemConf, is that you need to convert it to com.prosysopc.ua.stack.core.PubSubConfiguration2DataType and back. SDK does not yet offer a method for this. Skipping details.</p>
<p>com.prosysopc.ua.UaBinaryFile offers some support for com.prosysopc.ua.stack.core.UABinaryFileDataType. Skipping a lot of details about custom types.</p>
]]></description>
					                    <pubDate>Tue, 02 Jun 2026 16:42:35 +0300</pubDate>
                </item>
				                <item>
                    <title>hbrackel on PubSub Server AddressSpace - how to "synchronize" with actual pubsub configuration</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-server-addressspace-how-to-synchronize-with-actual-pubsub-configuration/#p7581</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/pubsub-server-addressspace-how-to-synchronize-with-actual-pubsub-configuration/#p7581</guid>
					                        <description><![CDATA[<p>Good day,</p>
<p>I am undertaking my first steps using the Prosys SDK for PubSub (UDP Binary). One benefit of an OPC UA server used for pubsub, as advertised by the OPC UA standard, is the ability to configure pubsub via the Server/PublishSubscribe part of the Server addressSpace.</p>
<p>Is there any support for this built-in to the SDK? I created a publisher as per pubsub tutorial and samplepublishserver, yet the addressSpace does not reflect anything of that configuration. Is there any automatic synchronization in either direction between the server addressSpace and the effective pubsub configuration or is this to be managed in application code?</p>
<p>Many thanks, Hans-Uwe</p>
]]></description>
					                    <pubDate>Mon, 01 Jun 2026 14:23:39 +0300</pubDate>
                </item>
				                <item>
                    <title>hbrackel on Duplicate methods in generated code from MDIS Companion Standard</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7577</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7577</guid>
					                        <description><![CDATA[<p>The gradle script distinguishes between method calls and setters using the presence of the ServiceException clause. This should leave all method declarations and implementation untouched.</p>
<p>Let me reformulate my "wish" for an ideal code generator:<br />
Assuming a / any valid nodeset.xml as an input, the generated code should be compileable without errors and expose all features of the nodeset design. I am very aware that this presents a real challenge and that this is hardly - if at all- ever accomplishable. So this is not any criticism - just a Christmas wish 🙂</p>
]]></description>
					                    <pubDate>Thu, 28 May 2026 17:48:21 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Duplicate methods in generated code from MDIS Companion Standard</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7576</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7576</guid>
					                        <description><![CDATA[<p>Codegen-InstanceDeclaration-excluded nodes do still exist in the node-graph at runtime and are accessible via UaNode.getComponent(QualifiedName). Though, excluded Methods cannot be implemented in the generated XXXTypeNode (and the XXXTypeNodeBase will not have the routing logic to it either). I do recognize that in a development flow e.g. checking via autocomplete has every component been set could miss the excluded one as there is no individual method so it is easier to forget.</p>
<p>As far as I'm aware, AccessLevel in the InstanceDeclarations is more like a "default value", not a "contract". At least based on the base spec I mean. A companion spec might be able to limit this (in the text, not in a way for Codegen to know). Some Attributes have limits, <a href="https://reference.opcfoundation.org/specs/OPC-10000-3/6.2.7" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....00-3/6.2.7</a> + <a href="https://reference.opcfoundation.org/specs/OPC-10000-3/6.2.8" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....00-3/6.2.8</a>, but to my knowledge nothing is said for AccessLevel. Also, the generated setters are mostly for server side, but there it is usable always for setting the value, even if it would be read-only from a client's point of view.</p>
<p>Just be careful to remove the component-setter version from all of the generated files (i.e. not accidentally removing the method one in e.g. one file). The method one does also have ServiceException in addition to the StatusException. Note that the only difference to the Codegen-InstanceDeclaration-exclusion-way is that the getter and "node-getter" generated methods exist still (but this could be important).</p>
<p>P.S.<br />
This of course causes me to think could we have some day an option to exclude "any generated method". We do have class-level exclusions <a href="https://documentation.prosysopc.com/JSDK/tutorial/html/Prosys_OPC_UA_SDK_for_Java_Codegen_Manual.html#excluding-output-classes" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....ut-classes</a>, basically to avoid generating XXXTypeNodes that are in version control due to implemented methods. </p>
<p>Though it would still be more of a workaround than an actual solution.</p>
]]></description>
					                    <pubDate>Thu, 28 May 2026 17:28:42 +0300</pubDate>
                </item>
				                <item>
                    <title>hbrackel on Duplicate methods in generated code from MDIS Companion Standard</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7575</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7575</guid>
					                        <description><![CDATA[<p>Thank you very much for looking into this. </p>
<p>I am reluctant to exclude anything from code generation because most of the variables/components/methods are indeed important and required.<br />
While the nodeset design is a bit unfortunate from a code generation perspective, it is still quite common to use explicit UA methods as setters and have likewise named read-only variables. It would be "cool" if some time in the future the code generator could consider the accesslevel of a variable.as well. if it is "CurrentRead", then not generate a setter, if it is CurrentWrite and a setter method exists as well, then emit a warning.</p>
<p>I created (or rather Github Copilot) a gradle task to analyze the generated code, looking for setter and method definitions with conflicting signatures and remove just the duplicate setters. This way I don't need to exclude any components and the code is compiling okay.</p>
<p>Once again, many thanks for looking into this.</p>
]]></description>
					                    <pubDate>Thu, 28 May 2026 15:12:54 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Duplicate methods in generated code from MDIS Companion Standard</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7574</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7574</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>It is a known issue: <a href="https://documentation.prosysopc.com/JSDK/tutorial/html/Prosys_OPC_UA_SDK_for_Java_Codegen_Manual.html#known-issues" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....own-issues</a></p>
<p>The model <a href="https://reference.opcfoundation.org/specs/OPC-30020/6.6.3" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....0020/6.6.3</a> defines both a CalculatedPosition component and a SetCalculatedPosition Method. Thus it will conflict when we create the setter for the CalculatedPosition component and then the actual method for calling the Method. Codegen is not yet smart enough that it would detect and report this as an error directly. (There are also few other types in this model that do the same); we can hopefully do this at some point.</p>
<p>You must exclude one of them via <a href="https://documentation.prosysopc.com/JSDK/tutorial/html/Prosys_OPC_UA_SDK_for_Java_Codegen_Manual.html#excluding-sub-nodes-under-a-type-node-from-generation" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....generation</a>. I would recommend excluding the CalculatedPosition component, as it is easier to get via the generic UaNode.getComponent(QualifiedName) than implementing the Method call via <a href="https://documentation.prosysopc.com/JSDK/samples/sampleconsoleserver/src-html/com/prosysopc/ua/samples/server/MyMethodManagerListener.html" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....tener.html</a> style.</p>
<p>Thus, something like this in the Codegen configuration should do it:</p>
<p></p>
<div class="sfcode" id="sfcode994">
&#060;excludes&#062;<br />
	&#060;instanceDeclarations&#062;<br />
		&#060;instanceDeclaration&#062;<a href="http://opcfoundation.org/UA/MDIS:CalculatedPosition&lt;/instanceDeclaration&amp;gt" rel="nofollow" target="_blank"><a href="http://opcfoundation.org/UA/MD" rel="nofollow">http://opcfoundation.org/UA/MD</a>.....on&#038;gt</a>;<br />
	&#060;/instanceDeclarations&#062;<br />
&#060;/excludes&#062;
</div>
<p>(...some day better code-snippet way.... but anyway have "http://opcfoundation.org/UA/MDIS:CalculatedPosition" without quotes as the 'instanceDeclaration' tag data)<br />
Note that it does exclude the CalculatedPosition node from all types of <a href="http://opcfoundation.org/UA/MDIS" rel="nofollow" target="_blank">http://opcfoundation.org/UA/MDIS</a>. This was originally designed to avoid conflicts with the SDK API itself.</p>
<p>P.S.<br />
Personally I would say it is a bit of an odd choice in the model that there seems to be Methods that just serves the same role as what a simple Write operation could do. There is maybe a bit of nuances regarding the async clause <a href="https://reference.opcfoundation.org/specs/OPC-30020/6.6.7" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....0020/6.6.7</a> though Write does have that as well <a href="https://reference.opcfoundation.org/specs/OPC-10000-4/5.11.4.4" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....4/5.11.4.4</a>. (though only in the presence of an "intermediate system", though an UA Client doesn't anyway know nothing of that so.. why does it matter). However, this is not the first time we see such models, so it is probably too late anyway to try to change them. Also, there could be valid cases, if more parameters would be involved the very least. (Or there could be something I miss here).</p>
<p>P.S.2.<br />
It is possible we some day do something for this. Though it is .. somewhat complicated to find a good solution that doesn't involve excluding. We could e.g. start to use prefixes for methods i.e. 'callXXX' instead of 'xXX' where XXX is the method name (though this would change all existing ones). It could maybe be a flag in the Codegen configuration, though then it gets tricky with overriding of methods (even more if doing so from the core model that is already generated in the SDK). We could try doing that only for methods starting with 'set'/'get', but then it is different based on the name (and could still maybe theoretically conflict). We could add a unused parameter as the first java-parameter in the method, but that too is a bit clunky solution.</p>
]]></description>
					                    <pubDate>Thu, 28 May 2026 14:47:41 +0300</pubDate>
                </item>
				                <item>
                    <title>hbrackel on Duplicate methods in generated code from MDIS Companion Standard</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7573</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/duplicate-methods-in-generated-code-from-mdis-companion-standard/#p7573</guid>
					                        <description><![CDATA[<p>Good afternoon,</p>
<p>I would like to generate code from the MDIS Companion standard, v1.3. The code generation itself succeeds without warnings or errors. The code does not compile, though, because some method declarations occur twice within the same class or interface.</p>
<p>Is this a problem with/of the companion standard or does the code generator need to be configured in a custom way?</p>
<p>As an example:</p>
<p></p>
<div class="sfcode" id="sfcode743">
@TypeDefinitionId(&#034;nsu=http://opcfoundation.org/UA/MDIS;i=1066&#034;)<br />
public interface MDISChokeObjectType extends MDISBaseObjectType {<br />
...<br />
line 100:<br />
@Mandatory<br />
  void setCalculatedPosition(Float value) throws StatusException;<br />
...<br />
line 189: void setCalculatedPosition(Float f_position) throws StatusException, ServiceException;<br />
...
</div>
<p>Edit: Taking a closer look at the nodeset / companion standard, there is a read-only variable for each method, reflecting the value, which the method is expected to set. It looks like the code generator creates a setter method for those variables nonetheless. Another indicator for this are the declared exception types.<br />
Is there any way to configure the code generator to NOT generate setters for any variable at all?</p>
]]></description>
					                    <pubDate>Wed, 27 May 2026 22:13:01 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Fine control over client connections and requests</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/fine-control-over-client-connections-and-requests/#p7572</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/fine-control-over-client-connections-and-requests/#p7572</guid>
					                        <description><![CDATA[<p>Probably it would be best that you contact <a href="mailto:sales@prosysopc.com" target="_blank">sales@prosysopc.com</a> regarding <a href="https://prosysopc.com/services/opc-ua-consulting/" rel="nofollow" target="_blank"><a href="https://prosysopc.com/services" rel="nofollow">https://prosysopc.com/services</a>.....onsulting/</a>. Without knowing specifics it is hard to say, plus I might not be the best person to answer.</p>
<p>Define 'isolation' and 'user'. </p>
<p>Some levels of 'isolation' is impossible, as the network and execution environment is shared. For example, the message processing does use a shared thread pool (but even if not, individual threads would share the CPU). You would need a separate server per user and different hardware or container execution limits to avoid that. (Then you could use <a href="https://prosysopc.com/products/opc-ua-forge/" rel="nofollow" target="_blank"><a href="https://prosysopc.com/products" rel="nofollow">https://prosysopc.com/products</a>.....-ua-forge/</a> to aggregate them to create an "admin view" server).</p>
<p>For 'user' are we talking about your customers (i.e. "your users") or an OPC UA 'User'. Note that the UA User is only known at ActivateSession, before that you do not know it, thus you can only have "global limits". Non-UA-users would then be e.g. IP-ranges (socket connection), ApplicationUris (client certificates, UA Applications, OpenSecureChannel) or ApplicationDescription (CreateSession, has more detail than just ApplicationUri, though not much more). Personally I would say socket-level limitations should be done on the firewall already, maybe we some-day have things in the SDK, but at the moment it is not possible to limit on that level (other than the global limit).</p>
<p>There is a thing UaServer.setOperationLimits(OperationLimits) (set before UaServer.init()), that does control how many operations a ServiceRequest can contain. Default is 10000 in each type. This is also global though. And assuming relatively normal hardware I would keep it at 10000. One reason is that our client side by default does Read/Browse the entire Types part of the address space on connect (skipping some details, but mostly for Structure metadata; not ideal, but I would say best option so far). It doesn't typically result in that many individual ServiceRequests, but the total number of operations of them might be in 10000-30000 range total. </p>
<p>P.S.<br />
This forum will most likely be down for a few hours later today due to infrastructure changes.</p>
]]></description>
					                    <pubDate>Tue, 26 May 2026 14:59:29 +0300</pubDate>
                </item>
				                <item>
                    <title>t.tulka on Fine control over client connections and requests</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/fine-control-over-client-connections-and-requests/#p7571</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/fine-control-over-client-connections-and-requests/#p7571</guid>
					                        <description><![CDATA[<blockquote class="spPostEmbedQuote">
<p><strong>Bjarne Boström said </strong><br />
SDK already limits sessions and connections.</p>
</blockquote>
<p>Yes, but those limits are global and not user-specific, right? As I said, we have a multi-tenant service (OPCUA as a service), where users should be isolated from each other and handled individually.</p>
]]></description>
					                    <pubDate>Tue, 26 May 2026 11:53:55 +0300</pubDate>
                </item>
				                <item>
                    <title>Bjarne Boström on Fine control over client connections and requests</title>
                    <link>https://forum.prosysopc.com/forum/opc-ua-java-sdk/fine-control-over-client-connections-and-requests/#p7570</link>
                    <category>OPC UA SDK for Java</category>
                    <guid isPermaLink="true">https://forum.prosysopc.com/forum/opc-ua-java-sdk/fine-control-over-client-connections-and-requests/#p7570</guid>
					                        <description><![CDATA[<p>The RequestResponseListener is ok there as well. </p>
<p>The SessionServiceHandler lacks the protected xxx(ServiceContext serviceContext, XXXRequest request, XXXResponse response) methods what are in the others. It goes more directly to the SessionManager. In the others they are sort of a "last effort place" to try to implement something, but regarding sessions SDK already should be implementing it .. completely (compared to e.g. data related to a Node's Attributes).</p>
<p>We do have intended ways for this as well: UaServer.getSessionManager().addListener(SessionManagerListener) see <a href="https://documentation.prosysopc.com/JSDK/javadoc/com/prosysopc/ua/server/SessionManagerListener.html" rel="nofollow" target="_blank"><a href="https://documentation.prosysop" rel="nofollow">https://documentation.prosysop</a>.....tener.html</a>. Also, for just user-validation there is UaServer.setUserValidator(UserValidator).</p>
<p>We have also build ways to override the SessionManager via a subtype, similar to the handlers, though the raw ServiceRequest is not available (but the relevant parameters of it are, in the protected methods). It is also possible to use a subtyped Session.</p>
<p>Note that SDK already limits sessions and connections. They are separate things, though most of the time it is 1:1. By default SessionManager.getMaxSessionCount() defines max number of sessions and by default 10% more (at least +1) opc.tcp connections can be made. This so that a client can see that the server is at session limit. UaServer.setMaxOpcTcpConnections(Integer) can be used to set a different limit. Note that in the SDK (and per UA spec), non-properly-ActivateSession'd connections are dropped if at connection limit and a new one arrives. Note that there is not a way to observe the actual connections (we might build this some day).</p>
]]></description>
					                    <pubDate>Fri, 22 May 2026 15:13:31 +0300</pubDate>
                </item>
				    </channel>
	</rss>
