可以通过JInterface监视代表Java邮箱的邮箱Pid吗?

时间:2014-11-06 20:47:52

标签: erlang jinterface

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

但是,执行监视器(进程,Pid)会生成即时节点关闭消息(noproc)。

有没有办法监控这个Pid?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

Erlang Distribution Protocol记录了这一点:

  

11.7 distrvsn = 4(OTP R6)的新Ctrlmessages

     

这些只能由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.