最近の円で回って、OPC UAライブラリーの多様性を見て、特にOPC Foundationのライブラリーは、例えば、マイロServerデータベースを通して座る後まで、特に混乱、後に見て、どのようにOPC UAサーバーを書き込みます最後に、私たちは一定の理解を持っています。
:ミロは、GitHubのアドレス、Eclipseのオープンソースプロジェクトの一つであるミロ
全体Serverが実行されている方法を学ぶために私たちに直接サーバー・ルーチンを通じて:
1.主な機能
public static void main(String[] args) throws Exception {
ExampleServer server = new ExampleServer();
server.startup().get();
final CompletableFuture<Void> future = new CompletableFuture<>();
Runtime.getRuntime().addShutdownHook(new Thread(() -> future.complete(null)));
future.get();
}
これは、身体のサーバーの主な機能である、それは以下の主なポイントが含まれています。
- Serverオブジェクトを生成し、サーバーを起動します
- 非同期書き込みモードの定義(CompletableFutureライブラリがどのように表示されません)
定義された方法2.Server
私たちは、主にサーバーを定義する方法を確認する次の
証明書を取得
SelfSignedHttpsCertificateBuilder httpsCertificateBuilder = new SelfSignedHttpsCertificateBuilder(httpsKeyPair);
httpsCertificateBuilder.setCommonName(HostnameUtil.getHostname());
HostnameUtil.getHostnames("0.0.0.0").forEach(httpsCertificateBuilder::addDnsName);
X509Certificate httpsCertificate = httpsCertificateBuilder.build();
これは特に参照、OPC UA、暗号化された伝送を必要とX509証明書ファイルの方法によって生成される証明書を生成します。
証明書の検証後に関連しています。
OPC UAサーバーの設定
String applicationUri = CertificateUtil
.getSanUri(certificate)
.orElseThrow(() -> new UaRuntimeException(
StatusCodes.Bad_ConfigurationError,
"certificate is missing the application URI"));
Set<EndpointConfiguration> endpointConfigurations = createEndpointConfigurations(certificate);
URIアドレスが証明書を取得し、設定方法の方法により、エンドポイントの構成を達成するためにミロExampleServerを詳述
OpcUaServerConfig serverConfig = OpcUaServerConfig.builder()
.setApplicationUri(applicationUri)
.setApplicationName(LocalizedText.english("Eclipse Milo OPC UA Example Server"))
.setEndpoints(endpointConfigurations)
.setBuildInfo(
new BuildInfo(
"urn:eclipse:milo:example-server",
"eclipse",
"eclipse milo example server",
OpcUaServer.SDK_VERSION,
"", DateTime.now()))
//设置对应的证书管理器
.setCertificateManager(certificateManager)
//获取信任列表 --- 用于信任Application
.setTrustListManager(trustListManager)
.setCertificateValidator(certificateValidator)
// 这个还不太明白
.setHttpsKeyPair(httpsKeyPair)
.setHttpsCertificate(httpsCertificate)
//验证身份
.setIdentityValidator(new CompositeValidator(identityValidator, x509IdentityValidator))
//s设定生成的服务器URI
.setProductUri("urn:eclipse:milo:example-server")
.build();
server = new OpcUaServer(serverConfig);
設定OPCUAサーバー、コード内の特定の情報を説明し、最後に例のserrverクラスで定義されているサーバー、に割り当てられています
private final OpcUaServer server;
3.サーバーの構成の名前空間 - サーバーの属性
ExampleServerfangプロセスで定義された詳細な構成。
- で必要とされるものを次の例に大きなしこりを最前面
super.onStartup()
自身のノード情報サーバを生成するために、親クラスを使用して、この起動方法
// Create a "HelloWorld" folder and add it to the node manager
NodeId folderNodeId = newNodeId("HelloWorld");
UaFolderNode folderNode = new UaFolderNode(
getNodeContext(),
folderNodeId,
newQualifiedName("HelloWorld"),
LocalizedText.english("HelloWorld")
);
getNodeManager().addNode(folderNode);
// Make sure our new folder shows up under the server's Objects folder.
folderNode.addReference(new Reference(
//产生引用的结点ID
folderNode.getNodeId(),
//引用的类型
Identifiers.Organizes,
//引用连接的对象
Identifiers.ObjectsFolder.expanded(),
//Reference的指向
false
));
ルート・ファイルとObjectsFolder天国への参照を生成し、そしてそれは、オブジェクトの直下に生成されたオブジェクトであると述べました。
参照の偽のポイント、真の前進、偽逆の代表ということ、ここで注意してください。
FolderNodeはここに参照を追加するために、オブジェクトですされているので、その結果は次のようになります。