gpt4 book ai didi

使用 HCL Domino NotesThread 时,Java 关闭钩子(Hook)被忽略(?)

转载 作者:行者123 更新时间:2023-12-05 06:59:59 28 4
gpt4 key购买 nike

我目前正在用 Java 开发一个基于 Vaadin 的程序,该程序从 Domino 数据库中提取文档并将它们写入 MongoDB 集合。该程序运行完美,但有一个小缺陷:

目前,除了向进程发送“KILL”之外,我没有找到停止程序的方法。我的关闭钩子(Hook)/信号处理程序被完全忽略了。我已将问题缩小到一行代码:

NotesThread.sinitThread();

当我删除这一行时,钩子(Hook)工作正常,我的程序正常关闭。插入行时,永远不会调用 Hook 。

下面是一些示例代码:

private boolean running = true;

...

@Override
public void run() {
try {
NotesGC.runWithAutoGC(() -> {
NotesThread.sinitThread() // --> "Kills" all signal handling
Session session = NotesFactory.createSession();

while (running) {
Thread.sleep(1000);
System.out.println("Running ...");
}

session.recycle();

return null;
});
} catch (Exception e) {
} finally {
NotesThread.stermThread();
}
}

public void kill() {
System.out.println("Killed!");
this.running = false;
}

...

Signal.handle(new Signal("TERM"), sig -> runner.kill()); // Signal handler from main-method

我问过 friend 和同事,没有人遇到过同样的问题。

最佳答案

NotesGC.runWithAutoGC如我所见,您正在使用 Domino JNA,这是一个副项目。它使用多米诺 CAPI。它是开源的:https://github.com/klehmann/domino-jna您可以创建问题单或提出问题。顺便说一句, func "runWithAutoGC"在他的体内调用 initThread() 。此源代码链接:https://github.com/klehmann/domino-jna/blob/master/domino-jna/src/main/java/com/mindoo/domino/jna/gc/NotesGC.java

关于使用 HCL Domino NotesThread 时,Java 关闭钩子(Hook)被忽略(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64239659/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com