问题标签 [jinterface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
177 浏览

java - 分布式 Erlang,如何生成唯一的节点名称?

我正在构建一个 Erlang 服务器-客户端程序。服务器是用 Erlang OTP 编写的,客户端是用带有 Jinterface 的 Java 编写的。

创建 Jinterface 连接时,我必须在构造函数 OtpNode() 中设置节点名称。问题是这是在连接到服务器之前完成的(很明显),但是每个客户端都必须有唯一的名称。如果一个客户端在已经连接了同名客户端的情况下尝试连接到服务器,那么新的连接将失败。

我该如何解决这个问题?我的第一个教导是有一个没有名称的节点或让服务器为客户端提供一个名称,但这似乎不起作用......

0 投票
1 回答
269 浏览

java - 如何只处理 erlang 队列中的最新消息?

我正在用 Erlang 编写一个游戏引擎,其中服务器不断向客户端发送新位置。我只想使用最新的消息并将其余的扔掉,有什么办法可以做到吗?我在客户端使用 Jinterface,所以一个解决方案会很好。

0 投票
2 回答
118 浏览

erlang - 可以通过 JInterface 监控代表 Java 邮箱的邮箱 Pid 吗?

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

但是,执行 monitor(process, Pid) 会产生即时 nodedown 消息 (noproc)。

有没有办法监控这个 Pid?

0 投票
1 回答
426 浏览

erlang - 在不牺牲可伸缩性的情况下,在 Erlang 中执行计算密集型任务的最佳方法是什么?

Erlang 互操作性指南讨论了不同的互操作性机制。以下是我的结论:

  • 端口和 Erl_Interface 程序:操作系统调度,限制可扩展性。

  • 端口驱动程序:很危险,因为端口驱动程序崩溃也会导致模拟器崩溃。

  • C 节点:节点服务器需要像 Erlang 应用程序一样扩展,以避免牺牲可扩展性。

  • NIF:Loic很好地总结了它们。

一些人提倡使用 OpenCL,基本上将资源匮乏的计算委托给 GPU,同时让 Erlang 模拟器拥有 CPU。这听起来棒极了,但是你需要你的服务器有一个合适的 GPU。

使用 JInterface 并与为每个请求生成一个线程的 Java 进程通信可能是一种选择。

那么有没有人遇到过经过实践测试并证明效果很好的解决方案?

0 投票
3 回答
181 浏览

java - 使用 JInterface 将列表从 Erlang 发送到 Java

我正在编写一个需要使用 JInterface 在 Java 和 Erlang 之间进行通信的程序。我在从 Erlang 进程接收列表时遇到问题——不知何故,我在 Java 中得到的对象不是 OtpErlangList 而是 OtpErlangString,如果我尝试将接收到的对象强制转换为 OtpErlangList,则会出现强制转换异常。我试过解码字符串,但似乎并非如此。

在我看来,无法将列表从 Erlang 发送到 Java 似乎很奇怪,如果我没有犯任何基本错误,请你看看吗?

Java片段:

二郎片段:

我省略了其余的代码,因为我相信这些是问题所在 - 我已经尝试过其他类并且它有效。

0 投票
1 回答
470 浏览

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

是否可以使用JInterfacerpc:call从 erlang 到 java ?

如果是,调用Module函数中的参数应该设置为什么?

call(Node, Module, Function, Args) -> Res | {badrpc, Reason}

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

但不是 RPC 调用。这是我的尝试:

完整的 Java 代码

我的接口.java:

Java 节点输出

0 投票
1 回答
330 浏览

java - 使用 JInterface 将 java 与 erlang 连接起来

我正在尝试使用 java 连接到 erlang 节点,但出现错误。要启动 erlang,我使用了这个命令erl -sname db -setcookie erlang

这是我的java代码:

它编译得很好,但是我得到一个运行时错误,我不知道这意味着什么

拜托,谁能给我一个解决我的问题的方法。

0 投票
0 回答
203 浏览

server - Windows上的Erlang Jinterface节点名称服务器问题

我正在尝试使用 jinterface 为我的 erlang 程序实现一个接口。当我调用命令 OtpNode otpNode = new OtpNode(nodeName, cookie); java抛出一个IOException

java.io.IOException:发布 javanode 时,名称服务器在 DESKTOP-GIR29G3 上没有响应。

对于人们来说,这似乎不是常见的问题,因为我在网上找不到类似的东西。它是一个本地节点,节点名称为“javanode”,没有句号或破折号。为什么本地节点上会出现 DNS 问题?

我已经尝试在 java 程序启动的目录中启动一个 erlang 节点,以及在我的电脑上启动 erlang 控制台,但我对 erlang 很陌生,所以这些只是一些 erlang VM 必须运行的疯狂猜测。

以下是可能有帮助的代码:


公共 Erlterface() {


来自控制台的错误:

连接到目标 VM,地址:'127.0.0.1:54025',传输:'socket' java.io.IOException:在 com.stellar.base.schedule.com.ericsson 发布 javanode 时,名称服务器在 DESKTOP-GIR29G3 上没有响应。 otp.erlang.OtpEpmd.r4_publish(OtpEpmd.java:344) 在 com.stellar.base.schedule.com.ericsson.otp.erlang.OtpEpmd.publishPort(OtpEpmd.java:141) 在 com.stellar.base.schedule。 com.ericsson.otp.erlang.OtpNode$Acceptor.publishPort(OtpNode.java:784) 在 com.stellar.base.schedule.com.ericsson.otp.erlang.OtpNode$Acceptor.(OtpNode.java:776) 在 com .stellar.base.schedule.com.ericsson.otp.erlang.OtpNode.init(OtpNode.java:232) 在 com.stellar.base.schedule.com.ericsson.otp.erlang.OtpNode.(OtpNode.java:196 ) 在 com.stellar.base.schedule.com.ericsson.otp.erlang.OtpNode.(OtpNode.java:149) 在 com.stellar.base.schedule。Erlterface.setupMBox(Erlterface.java:40) 在 com.stellar.base.schedule.Erlterface.access$000(Erlterface.java:16) 在 com.stellar.base.schedule.Erlterface$1.run(Erlterface.java:26)在 java.lang.Thread.run(Thread.java:745)

提前致谢

戴尔


更新附加信息:

我进行了一次潜水,试图找出火车离开铁轨的确切位置,但我正在疯狂猜测我应该将哪些标记为潜在问题。我只想在此处添加一些其他信息以提供帮助:

在 OptEpmd 中,在抛出 io 异常之前捕获以下内容

java.net.ConnectException:连接被拒绝:连接

最终来源是本机 DeulSocketImpl 类,我想它会在 Windows 上调用以执行最终连接 thingamabob 广告,但它失败了:

静态原生 int connect0(int var0, InetAddress var1, int var2) 抛出 IOException;

我在设置 erlang 节点时遗漏了什么吗?我当然不必手动启动它?我已经完全禁用了我的防火墙来测试它。如何找出连接被拒绝的原因?

0 投票
1 回答
177 浏览

java - Elixir / JInterface - 从 Java 将字符串列表发送回 elixir

我正在运行 elixir/otp 应用程序。它需要使用一些 Java 代码,所以我使用 JInterface 来实现类似 RPC 的通信。

我现在可以进行这种通信。我可以从 elixir 向 Java 发送一条消息,并在概念上发回一些数据。

我需要发回一个字符串数组。

这似乎是一项简单的任务,但我正在努力寻找合适的文档来执行此操作。我能找到的唯一信息只有真正让我发回二进制字符串。

这是我的 JInterface 代码的重要部分:

如果有人这样做并且可以帮助我,我将非常感谢一些指导。提前致谢!

0 投票
1 回答
105 浏览

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

我有一个小型 Java 应用程序,我使用 JInterface 在我的 elixir 应用程序中将其本质上公开为 OTP 进程。我可以调用它并成功获得响应。

我的问题是我在 elixir 中得到的响应是二进制的,但我无法弄清楚如何将二进制转换为响应的字符串列表。

我使用 JInterface 在 Java 中的 OTP 节点的代码如下:

有必要将响应包装在 OtpErlangBinary 中,并且我已将字符串协调到 OTPErlangString。我也尝试过不将字符串转换为 OTPErlangString。

在长生不老药方面,我可以接收二进制响应并 IO.inspect 它。

当结果不是单个字符串时,有人知道如何使用 JInterface 正确反序列化结果吗?或者,如果我犯了一些错误,如何构建正确的响应类型以便我可以正确地反序列化它?

任何帮助将不胜感激,因为我多年来一直试图解决这个问题。提前致谢。