2014-11-06 2 views
1

У меня есть процесс Java, который отправляет мои сообщения erlang gen_server через JInterface. Сообщение, отправленное мне, включает Pid почтового ящика, созданного на стороне Java. Этот Pid действителен в том смысле, что я могу отправлять сообщения обратно на этот Pid, ​​и эти сообщения успешно депонируются в почтовом ящике Javan.Можно ли контролировать почтовый ящик Pid, ​​который представляет почтовый ящик Java через JInterface?

Однако выполнение монитора (процесс, Pid) создает мгновенное сообщение nodeown (noproc).

Есть ли способ контролировать этот Pid?

ответ

1

Узлы Java (и C) отличаются от узлов Erlang. Они скрыты, и они не реализуют все узлы Erlang. В частности, они не поддерживают поддержку монитора.

Это документирована Erlang Distribution Protocol:

11,7 Новый Ctrlmessages для distrvsn = 4 (OTP R6)

Они распознаются только узлами Erlang, а не скрытых узлов.

MONITOR_P

...

ОТП реализует механизм контроля резервный для выполнения вызовов на (псевдо) -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 отправляет сигналы выхода и разбивает любые ссылки на него, но, насколько мне известно, не поддерживает мониторы. Поэтому вы можете ссылаться на него, просто будьте осторожны, поскольку ссылки двунаправлены.

Смежные вопросы