getEndpoints
前置 / 配套
- 拉到 Endpoint 后用 构造函数 真正建立 Session.
- 跨服务发现请用 FindServers.
签名
public static List<EndpointDescription> getEndpoints(String endpointUrl);
public static List<EndpointDescription> getEndpoints(String endpointUrl, int timeoutMs);
通过临时 SecureChannel (None mode) 连服务端, 拉 Endpoint 列表后立即断开. 不需要 Session. 默认超时 10 秒.
EndpointDescription 字段
| 方法 | 类型 | 说明 |
|---|---|---|
getEndpointUrl() | String | 实际 endpoint URL |
getSecurityMode() | Enums.MessageSecurityMode | None / Sign / SignAndEncrypt |
getSecurityPolicyUri() | String | 算法套件 URI |
getServerCertificate() | byte[] | 服务端证书 (DER) |
getServerApplicationUri() | String | Server 应用 URI |
getServerProductUri() | String | Server 产品 URI |
getServerApplicationName() | String | Server 应用名 |
getServerApplicationType() | int | 0=Server / 1=Client / 2=ClientAndServer / 3=DiscoveryServer |
getUserTokens() | List<UserTokenPolicy> | 支持的登录方式 |
getTransportProfileUri() | String | 传输 Profile (通常 UA-TCP) |
getSecurityLevel() | byte | 服务端推荐优先级 |
UserTokenPolicy 字段
| 方法 | 说明 |
|---|---|
getPolicyId() | 服务端给的 ID, 客户端激活时传回 |
getTokenType() | Enums.UserTokenType Anonymous / Username / Certificate / Issued |
用法
List<EndpointDescription> endpoints =
OpcUaDiscovery.getEndpoints("opc.tcp://server:4840");
System.out.println("Server has " + endpoints.size() + " endpoints:");
for (EndpointDescription ep : endpoints) {
System.out.println();
System.out.println(" URL: " + ep.getEndpointUrl());
System.out.println(" Mode: " + ep.getSecurityMode());
System.out.println(" Policy: " + ep.getSecurityPolicyUri());
System.out.println(" Tokens:");
for (UserTokenPolicy t : ep.getUserTokens()) {
System.out.println(" - " + t.getTokenType() + " (PolicyId=" + t.getPolicyId() + ")");
}
}
典型输出
Server has 4 endpoints:
URL: opc.tcp://server:4840
Mode: None
Policy: http://opcfoundation.org/UA/SecurityPolicy#None
Tokens:
- Anonymous
URL: opc.tcp://server:4840
Mode: Sign
Policy: http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
Tokens:
- Anonymous
- Username
URL: opc.tcp://server:4840
Mode: SignAndEncrypt
Policy: http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
Tokens:
- Username
- Certificate
服务端通常暴露多个组合 (None / Sign / SignAndEncrypt × Anonymous / Username / Certificate), 客户端按需求挑.
异常
| 异常 | 含义 |
|---|---|
OpcUaException(BadCommunicationError) | 网络 / 服务端不可达 |
OpcUaException(BadServiceUnsupported) | 服务端不支持 Discovery (罕见) |