最近我在一次采访中被问到这个问题:你如何在两个JVM之间传递一个对象?我的回答是使用序列化,但我不知道它是否是正确的答案。如何在两个JVM之间传递对象?
答案 0 :(得分:3)
因为您有两个不同的Java虚拟机,所以将对象从一个传递到另一个的唯一方法是以某种方式序列化对象。
答案 1 :(得分:3)
序列化可能是唯一的出路。根据您的堆栈,您可以拥有多种可能性之一
我个人的偏好是拥有一个用于交换数据的小型服务器端组件(服务)。
答案 2 :(得分:2)
您可以在分布式环境中的2个JVM之间传递Java对象,只要这两个JVM版本相同即可。请注意,您的JVM依赖于平台(平台包括硬件(处理器)+ OS)。但是,您需要确保所有依赖库文件在两个JVM上均可用。另一个缺点是,即使您的JVM相同,但是如果您将一个JVM中运行的Java对象传递给接收JVM中运行的JRuby,则对象传递也是没有用的,因为两种之间的数据类型不同。
如果JVM相同且所有库均可用,则不建议使用对象传递,因为您可能决定在OS上从32位升级到64位,在这种情况下,还需要升级JVM。
仅在同一JVM中,我更喜欢对象传递。
答案 3 :(得分:0)
您可以在外部存储对象。可以使用像redis https://redis.io/这样的快速访问数据结构存储来代替文件。两个(或多个)实例都可以将数据读取和写入同一数据存储。您还可以研究JMS(Java消息服务)