【问题标题】:javascript to java remote method interfacejavascript 到 java 远程方法接口
【发布时间】:2015-07-09 18:10:47
【问题描述】:

背景:

前段时间,我从事 Java 服务器-客户端应用程序(构建自动化是范围)。在第一次尝试之后,我们用 java 编写服务器和客户端,并通过 java RMI(远程方法接口)将它们连接起来,我们发现用 Javascript 编写客户端会更好,原因有几个(我不会在这里给出它们) ,没关系)。

由于 RMI 不能在 Javascript 和 Java 之间工作,因此我们使用 WebSockets 连接它们并获得几乎实时的连接。这是大约 3 年前,websockets 仍处于早期测试阶段,完全没有文档和许多“尚未实现”的功能。对于 protocool 部分,我编写了类似自己的基于 JSON 的 RMI。我反序列化了来自客户端的 JSON 对象,并使用 java.lang.reflection 查询我自己的服务器应用程序以获取客户端想要执行的方法。

一切都很好,我把它相当通用,所以我可以在运行时动态插入其他子类,我的 RMI 仍然能够访问它们。

TL;DR:

我一直想知道是否有一种标准方法可以在 RMI 中将 java 连接到 javascript(比如必须扩展一些接口,然后能够使用 javascript 访问这些接口方法)我不能成为第一个拥有那个问题。

对我自己说:我是一名电气工程师,所以 Java、Javascript 或 Web 技术一般来说我在大学里没有学到任何东西。当谈到 java 时,我确实知道我在谈论什么,但我完全是 javascript 的菜鸟。

【问题讨论】:

  • 用 JavaScript 编写客户端?它是纯 JavaScript 吗?还是网络前端?
  • @Evan Knowles 我认为我们在 Ajax 中使用了 JavaScript。我不知道这是否回答了你的问题,因为我还没有写过那个客户

标签: java javascript json rmi inter-process-communicat


【解决方案1】:

为了实现客户端和服务器之间的异步通信,有一些可用的框架,如AtmosphereSpring ReactorDWFSpring websockets.

基本方法是这些框架具有客户端 js 文件,该文件充当服务器端方法的存根。框架不允许从浏览器关闭请求响应周期。他们继续定期发送空白消息以保持连接打开并保持数据同步。

市场上也有一些专有 API 可以实现这一点,例如 Pusher

【讨论】:

  • 也许我遗漏了一些东西,但认为那些异步通信框架和我使用的 websocket 库一样。简单地说,他们“发送消息”。如果我想因为这些消息而执行方法,我必须自己写。那正确吗?澄清一下:在低级别,RMI 也“发送消息”。但在此之上还有更高层,它们执行 RMI 消息中指定的功能或方法。是否有更高级别的框架可以为我做到这一点?
  • 从浏览器接收websocket消息就像一个ajax代码的工作,你可以在服务器端编写方法来处理请求对象中的数据。还要查看消息传递任务队列,它在后端即服务器端异步运行差事。查看 Atmosphere 框架,它提供您需要的任何功能
猜你喜欢
  • 2012-12-28
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多