我有一个Java进程,通过JInterface发送我的erlang gen_server消息。发送给我的消息包括在Java端创建的邮箱的Pid。该Pid是有效的,因为我可以将消息发送回该Pid,并且这些消息已成功存入Javan端邮箱。可以通过JInterface监控代表Java邮箱的邮箱Pid吗?
然而,做一个监视器(process,Pid)产生一个即时nodedown消息(noproc)。
有没有办法监控这个Pid?
我有一个Java进程,通过JInterface发送我的erlang gen_server消息。发送给我的消息包括在Java端创建的邮箱的Pid。该Pid是有效的,因为我可以将消息发送回该Pid,并且这些消息已成功存入Javan端邮箱。可以通过JInterface监控代表Java邮箱的邮箱Pid吗?
然而,做一个监视器(process,Pid)产生一个即时nodedown消息(noproc)。
有没有办法监控这个Pid?
Java(和C)节点与Erlang节点不同。它们是隐藏的,它们不会实现Erlang节点所做的一切。特别是,他们不实现监视器支持。
这是记录与Erlang Distribution Protocol:
11.7新Ctrlmessages为distrvsn = 4(OTP R6)
这些仅由Erlang节点识别,而不是由隐藏节点。
MONITOR_P
...
OTP实现用于上(伪)执行呼叫的监视回退机制-gen_servers这样的节点上。 comment有启发性:
%% 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.
Java邮箱发送退出信号并断开与它的任何链接,但据我所知不支持监视器。所以你可以链接到它,只要小心,因为链接是双向的。