我需要向我的 Web 应用程序添加一项服务,该服务从命令行打开 java 进程,并通过该 jvm 线程的输入/输出流进行通信,而不是使用 IDL 或套接字或数据库或文件。进程之间是否有这样的联系,很接近纯java?
C# Web 服务器打开 helloworld.jar 并向其控制台(console.in)写入 1M 字节,然后等待 console.out。我读到命令行参数不能超过千字节级别。如果有这样的通信,也许流可以达到兆字节?
仅与字符串进行通信就可以,但使用对象本身会更好。
最佳答案
在 this我演示了在 executiable-jar
(STW
应用程序)和 Winform
之间使用 stdin/out 进行 IPC
的方法应用程序。
答案已链接到解决方案 I made .
要读取和写入应用程序,您可以使用以下方法:WriteLine
和 OutputDataReceived
(Process
方法, see this class )。
在 Java
进程中,您使用 Scanner
进行读取,使用 Println
进行写入。( this is the java class )
通信是通过字符串进行的。您可以将对象序列化为 json,然后传递它们。(使用 Json.net
和 Gson
)
关于java - C# 进程读取 java 进程的输出流,而不使用套接字、IDL/CORBA、文件、数据库或 JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31686747/