2014-11-06 52 views
1

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

然而,做一个监视器(process,Pid)产生一个即时nodedown消息(noproc)。

有没有办法监控这个Pid?

回答

1

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. 
1

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