通过 Jinterface 调用 gen_server?

Posted

技术标签:

【中文标题】通过 Jinterface 调用 gen_server?【英文标题】:Make a call to gen_server via Jinterface? 【发布时间】:2014-06-11 01:59:10 【问题描述】:

如何拨打这样的电话:

order_cat(Pid, Name, Color, Desc) ->
    gen_server:call(Pid, order, Name, Color, Desc).

到这样的事情:

handle_call(order, Name, Color, Desc, _From, Cats) ->
    if Cats =:= [] ->
        reply, make_cat(Name, Color, Desc), Cats;
       Cats =/= [] ->
        reply, hd(Cats), tl(Cats)
    end;
handle_call(terminate, _From, Cats) ->
    stop, normal, ok, Cats.

通过使用 java 和 Jinterface 而不是第一个代码?我知道如何使用 Jinterface 向 pid 发送消息,但是我有一个处理它的接收语句。我想改用 OTP,但我不明白怎么做。

【问题讨论】:

【参考方案1】:

有两种方法可以通过 Jinterface 连接到您的 Erlang 代码:消息和 RPC。

RPC 记录在这里:http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html#id57655

请注意,使用消息不是“非 OTP”。如果你有一个gen_server,你可以直接给它发消息,并在handle_info函数中接收消息。

【讨论】:

以上是关于通过 Jinterface 调用 gen_server?的主要内容,如果未能解决你的问题,请参考以下文章

gen_server:使用新状态调用

将来自 JInterface Java 应用程序的二进制响应转换回 Elixir 中的字符串列表

gen_server 中的错误也会终止调用进程?

从 Mod:handle_cast 调用 gen_server:cast

Erlang:如何在主管中正确调度带有 start_child 的 gen_server 并调用 API

Erlang,尝试制作 gen_server: 调用有很多响应