1

我有一个通过 JInterface 发送我的 erlang gen_server 消息的 Java 进程。发送给我的消息包括在 Java 端创建的邮箱的 Pid。该 Pid 是有效的,因为我可以将消息发送回该 Pid,并且这些消息已成功存入 Javan 端邮箱。

但是,执行 monitor(process, Pid) 会产生即时 nodedown 消息 (noproc)。

有没有办法监控这个 Pid?

4

2 回答 2

1

Java 邮箱发送退出信号并断开任何指向它的链接,但据我所知不支持监视器。所以你可以链接到它,只是要小心,因为链接是双向的。

于 2014-11-07T20:32:00.083 回答
1

Java(和 C)节点与 Erlang 节点不同。它们是隐藏的,它们并没有实现 Erlang 节点所做的一切。特别是,它们没有实现监视器支持。

Erlang Distribution Protocol对此进行了记录:

11.7 distrvsn = 4 的新 Ctrl 消息 (OTP R6)

这些只能被 Erlang 节点识别,而不是隐藏节点。

MONITOR_P

...

OTP 实现了一种监控回退机制,用于在此类节点上对(伪)-gen_servers 执行调用。评论很有​​启发性:

    %% Node (C/Java?) is not supporting the monitor.
    %% The other possible case -- this node is not distributed
    %% -- should have been handled earlier.
    %% Do the best possible with monitor_node/2.
    %% This code may hang indefinitely if the Process 
    %% does not exist. It is only used for featureweak remote nodes.
于 2014-11-07T21:19:28.990 回答