Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JInteface从Erlang/Elixir对Java进行rpc调用_Erlang_Elixir_Jinterface - Fatal编程技术网

通过JInteface从Erlang/Elixir对Java进行rpc调用

通过JInteface从Erlang/Elixir对Java进行rpc调用,erlang,elixir,jinterface,Erlang,Elixir,Jinterface,是否可以使用从erlang到java进行rpc:call 如果是,函数中的模块参数应设置为什么 调用(节点、模块、函数、参数)->Res{badrpc、Reason} 我的工作是这样的(简单的消息发送,见下面的代码): Java节点输出 Java端没有模块的概念,因此您可以在RPC中使用任何名称。检查来源,查看呼叫是如何编码为消息的,不要忘记将应答发送回。我发现对简单消息进行推理比较容易,但您可能不想关心远程节点是erlang还是java。希望这有帮助 嗯。。。已尝试rpc:call(serve

是否可以使用从erlang到java进行
rpc:call

如果是,函数中的
模块
参数应设置为什么

调用(节点、模块、函数、参数)->Res{badrpc、Reason}

我的工作是这样的(简单的消息发送,见下面的代码):

Java节点输出
Java端没有模块的概念,因此您可以在RPC中使用任何名称。检查来源,查看呼叫是如何编码为消息的,不要忘记将应答发送回。我发现对简单消息进行推理比较容易,但您可能不想关心远程节点是erlang还是java。希望这有帮助

嗯。。。已尝试
rpc:call(server@javaapp,废话,问候,500)。
rpc:call(server@javaapp没有运气。你指的是什么来源?金面?我认为JInterface只是不知何故对rpc没有反应。。。奇怪的是,这里他们说你应该首先建立连接:我现在不能访问我的PC,但我的意思是你检查rpc模块的源代码,看看请求和答案是如何编码的。然后在java中接收消息,解码并回答它。您可能希望在线程中运行接收器循环。
> {javambox, server@javaapp} ! {self(), greet, <<"Hello man">>}.
> flush().
Shell got {bye,10000}
> rpc:call(server@javaapp, javambox, greet, <<"Hello man">>, 1000).
{badrpc,timeout}
import com.ericsson.otp.erlang.*;

import java.lang.reflect.InvocationTargetException;

public class MyInterface {

    OtpErlangPid from = null;
    OtpMbox myOtpMbox = null;

    public static void main(String[] args) {
        MyInterface i = new MyInterface();
    }

    public MyInterface() {
        setupMBox();
    }
    private void setupMBox() {
        System.out.println("Setting up mbox");
        try {
            // server@java-app??
            OtpNode myOtpNode = new OtpNode("server");
            myOtpNode.setCookie("secret");

            myOtpMbox = myOtpNode.createMbox("javambox");
            System.out.println("System ready to accept messages.");
            System.out.println("Hostname is:");
            System.out.println(java.net.InetAddress.getLocalHost().getHostName() );
            System.out.println("List of known names:");
            System.out.println(String.join(" , ", myOtpNode.getNames()));
            System.out.println("Secret cookie is:");
            System.out.println(myOtpNode.cookie());

            while (true) {
                OtpErlangTuple tuple = (OtpErlangTuple) myOtpMbox.receive();
                System.out.println("GOT MESAGE!");

                from = (OtpErlangPid) tuple.elementAt(0);
                OtpErlangAtom dispatch = (OtpErlangAtom) tuple.elementAt(1);

                if (dispatch.toString().equals("settext")) {

                    final OtpErlangBinary message = (OtpErlangBinary) tuple.elementAt(2);

                    System.out.println("Setting text to: " + new String(message.binaryValue()));
                } else if (dispatch.toString().equals("greet")) {
                    final OtpErlangBinary message = (OtpErlangBinary) tuple.elementAt(2);
                    // Send reply
                    OtpErlangAtom myAtom = new OtpErlangAtom("bye");
                    OtpErlangObject[] reply = new OtpErlangObject[2];
                    reply[0] = myAtom;
                    reply[1] = new OtpErlangInt(10000);
                    OtpErlangTuple myTuple = new OtpErlangTuple(reply);
                    myOtpMbox.send(from, myTuple);
                    System.out.println("Greet got, bye!");

                } else{
                    System.out.println("Got unexpected message....");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Setting up mbox
System ready to accept messages.
Hostname is:
javaapp
List of known names:
javambox
Secret cookie is:
secret
GOT MESAGE!
Greet got, bye!