1

JInterface 経由で erlang gen_server メッセージを送信する Java プロセスがあります。私に送信されているメッセージには、Java 側で作成されたメールボックスの Pid が含まれています。その Pid は、その Pid にメッセージを送り返すことができるという意味で有効であり、それらのメッセージは Java 側のメールボックスに正常に保管されます。

ただし、モニター (プロセス、Pid) を実行すると、インスタント ノードダウン メッセージ (noproc) が生成されます。

このPidを監視する方法はありますか?

4

2 に答える 2

1

Java (and C) nodes are different from Erlang nodes. They are hidden and they do not implement everything Erlang nodes do. In particular, they do not implement monitor support.

This is documented with Erlang Distribution Protocol:

11.7 New Ctrlmessages for distrvsn = 4 (OTP R6)

These are only recognized by Erlang nodes, not by hidden nodes.

MONITOR_P

...

OTP implements a monitoring fallback mechanism for performing calls on (pseudo)-gen_servers on such nodes. The comment is enlightening:

    %% 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 に答える
1

Java メールボックスは終了シグナルを送信し、そこへのリンクを切断しますが、私の知る限り、モニターはサポートされていません。そのため、代わりにリンクすることができますが、リンクは双方向であるため注意してください。

于 2014-11-07T20:32:00.083 に答える