Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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
Java文件单编写器、单读取器_Java_Io - Fatal编程技术网

Java文件单编写器、单读取器

Java文件单编写器、单读取器,java,io,Java,Io,一,;我正在寻找Java程序之间的一种非常基本的IPC机制。我不喜欢使用套接字,因为我的“代理”正在生成新的JVM,在这样的环境中设置套接字有点复杂 我在考虑每个生成的JVM有2个文件:in和out。在in上,代理向工作进程发送命令。在输出时,工作者将响应发送回代理 最大的问题是,到目前为止,我还没有设法让通讯正常运行。仅仅创建ObjectOutputStream/ObjectInputStream并不是现成的,因为readObject方法没有阻塞。当没有内容而不是阻塞时,它将抛出一个EOFEE

一,;我正在寻找Java程序之间的一种非常基本的IPC机制。我不喜欢使用套接字,因为我的“代理”正在生成新的JVM,在这样的环境中设置套接字有点复杂

我在考虑每个生成的JVM有2个文件:in和out。在in上,代理向工作进程发送命令。在输出时,工作者将响应发送回代理

最大的问题是,到目前为止,我还没有设法让通讯正常运行。仅仅创建ObjectOutputStream/ObjectInputStream并不是现成的,因为readObject方法没有阻塞。当没有内容而不是阻塞时,它将抛出一个EOFEException。幸运的是,这很容易修复,只需添加一个延迟,稍后再试

所以我启动了我的POC并开始运行,但最终我遇到了流腐败问题。所以很明显,即使在仅附加模式下,您仍然可能遇到损坏问题。因此,我开始研究文件锁,但现在运行的是一个主java.lang.Error:java.io.IOException:Bad file descriptor


到目前为止,“让我们做简单的文件事情”是一个相当大的任务,我不确定我是否在正确的道路上。我不想引入像JMS这样的重量级解决方案,也不想引入像套接字这样的轻量级解决方案。有人知道解决这个问题的非常简单的方法吗?我仍然倾向于基于文件的方法。

代理JVM是跨工作JVM的,还是两个JVM是独立启动的?我想知道这是否是一个XY问题。您能详细说明一下为什么在这样的环境中设置套接字要复杂一些吗?以您试图使用文件的方式使用文件似乎很复杂。代理JVM产生了工作者JVM。我没有从一开始就选择套接字的原因是,我正在设置的系统旨在通过引发各种问题来强调/破坏工作者进程。例如OOME、网络等。在这种情况下,基于文件的方法比基于套接字的方法问题小。使用System.In/out worker JVM如何?如果代理JVM通过runtime.exec调用生成工作JVM,则代理JVM可以从工作JVM获取对System.in/out的引用。您可以通过这些流读取/写入命令。