当前位置: 首页 > 知识库问答 >
问题:

Eclipse milo:尝试读取数据时关闭会话

齐俊贤
2023-03-14

我有一个外部OPC UA服务器,我想从中读取数据。我使用用户名和密码身份验证,因此我的客户端初始化如下:

public class MyClient {

    // ...

    public MyClient() throws Exception {
        EndpointDescription[] endpoints =
            UaTcpStackClient.getEndpoints(OPCConstants.OPC_SERVER_URI).get();

        // using the first endpoint
        EndpointDescription endpoint = endpoints[0];

        // client configuration
        OpcUaClientConfig config = OpcUaClientConfig.builder()
            .setApplicationName(LocalizedText.english("Example Client"))
            .setApplicationUri(String.format("some:example-client:%s",
                    UUID.randomUUID()))
            .setIdentityProvider(new UsernameProvider(USERNAME, PWD))
            .setEndpoint(endpoint)
            .build();
    }
}

客户的要求如下:

public CompletableFuture<DataValue> getData(NodeId nodeId) {
    LOGGER.debug("Sending request");
    return client.readValue(60000000.0, TimestampsToReturn.Server, nodeId);
}

初始化客户端并将其连接到服务器后,我从main方法调用此请求:

MyClient client = new MyClient();

NodeId requestedData = new NodeId(DATA_ID, DATA_KEY);
LOGGER.info("Sending synchronous TestStackRequest NodeId={}",
       requestedData);
client.connect();
DataValue response = client.getData(requestedData).get();
LOGGER.info("Received response value={}", response.getValue());
client.disconnect();

但是,此代码不起作用(尝试从服务器读取信息时会话关闭)。我得到以下输出:

Bad_SessionClosed(CompletableFuture.java:1999)
atcom.mycompany.opcua.participants.Communications icationMain.testClient(Communications icationMain.java:70)
atcom.mycompany.opcua.participants.Communications icationMain.main(Communications icationMain.java:51)
由以下原因引起:UaException: status=2018-04-12 17:43:28,212,消息=会话被客户端关闭。
atorg.eclipse.milo.opcua.stack.core.util.FutureUtils.failedUaFuture(FutureUtils.java:100)
atorg.eclipse.milo.opcua.stack.core.util.FutureUtils.failedUaFuture(FutureUtils.java:88)
atorg.eclipse.milo.opcua.sdk.client.session.states.Inactive。(我nactive.java:28)
atorg.eclipse.milo.opcua.sdk.client.session.SessionFsm。(SessionFsm.java:69)
atorg.eclipse.milo.opcua.sdk.client.OpcUaClient。(OpcUaClient.java:159)java.base/java.util.concurrent.CompletableFuture.getINFO---[NonceUtilSecureRandom]NonceUtil:SecureRandom在0ms中播种。

在com上。我的公司。opcua。参与者。我的客户。(MyClient.java:112)
在com上。我的公司。opcua。参与者。沟通主管。testClient(CommunicationMain.java:60)
。。。还有1个

我使用Eclipse milo 0.2.1作为OPC UA库。

你能告诉我什么会导致这个问题,以及如何解决它吗?这可能是与此相关的比赛条件吗?

我可以使用其他客户端(UaExpert)连接到同一台服务器。

提前谢谢你。

共有1个答案

钱跃
2023-03-14

您正在进行的所有调用(connect()disconnect()、和readValues())都是异步的,因此这里可能发生的情况是,您在尝试读取时没有连接。

在进入下一步之前,请确保为这些示例屏蔽结果。(您没有在connect()上执行此操作)

 类似资料:
  • 问题内容: 我使用Apache HTTP Client进行HTTPPost调用,然后尝试使用Jackson响应创建一个对象。这是我的代码: 方法makePublisherApiCall()将在一个循环中被调用,该循环运行100次。当我取消注释该行时,基本上会出现问题: 取消注释后,我得到异常: 否则,它将正常工作。有人可以让我知道我在做什么错。 问题答案: 什么是与响应实体呢?我会怀疑它正在消耗实

  • ap.getSessionData(OPTION | keys | key, CALLBACK) 读取会话级数据。可用于页面间传递数据。 可直接传入一个数组作为 OPTION.keys,或直接传入一个字符串,作为 OPTION.keys 数组中的某一个 key。 OPTION 参数说明 名称 类型 必填 描述 keys String Array 是 要读取的数据的 key CALLBACK 参数说

  • 问题内容: 我通常会在Chrome的开发工具面板中调试Selenium测试。但是,在升级了操作系统(Ubuntu Linux)之后,我的E2E测试完全失败了:Chrome并没有打开第一页,而是处于空闲状态,仅显示空白页。最终,我升级了ChromeDriver,现在测试可以再次使用。但是,有了这个新的Chrome版本(在操作系统升级之后)和这个新的ChromeDriver,开发工具窗口就会出现一个奇

  • 我正在使用Maven创建一个Selenium项目,其中我试图从Excel文件(xlsx)中读取“username”和“password”。 这是密码- 我得到的错误在这一行: Driver.FindElement(By.XPath(“//input[@type='text']”)).SendKeys(Sheet.GetRow(i).GetCell(j).GetStringCellValue());

  • 问题内容: 我正在尝试从golang中的SSH会话读取数据。我编写了以下函数来尝试实现此目的。 我遇到了一个问题,尝试从stdout读取内容,它为空,导致程序锁定。为了解决这个问题,我编写了BufferSocketData,它检查ReadDataFromSocket应该附加到的通道,如果它有数据,则将其添加到缓冲区。如果1秒钟后仍未收到任何数据,它将停止读取。 但是,这不能正常工作,我不确定为什么

  • 致命异常:main java.lang.RuntimeException:无法启动活动组件Info{com.example.increative/com.example.increve.comments}:java.lang.nullpointerException 1at android.app.activitythread.performLaunchActivity(activitythrea