我遇到需要向正在运行的java应用程序发送命令的情况,现在我正在使用tcp/ip套接字向使用internet explorer上下文菜单项的应用程序发送命令。但一旦应用程序启动,病毒扫描程序就会抱怨应用程序开始侦听,尽管我只侦听本地连接。我认为这可能会让用户感到困惑。我正在寻找其他不惹恼av扫描仪的沟通方式?
发布于 2009-09-13 03:51:08
要做到这一点,最好使用基于文件的FIFO队列。或者使用Java Native Access/Java Native Interface来写入NamedPipe或共享内存。如果采用JNA/JNI路线,则可以创建一个Named Event。
但是,如果不采用JNA/JNI路线,可能无法以任何效率完成您想要的工作。
发布于 2009-09-13 04:36:14
您可以使用Java Management Extentions (JMX)通过简单的web界面公开正在运行的流程中的方法。
发布于 2009-09-13 03:54:24
套接字几乎是执行IPC的传统方法,但是如果您真的想要避免使用套接字,您也许能够想出一个使用本地文件系统的变通方法。您不希望使用标准的文件读/写,因为您很可能希望在文件系统中有效地实现一个队列。
如果我打算通过文件系统实现IPC,我可能会使用SQLite (which can be threadsafe when compiled so) ),并为每个侦听器提供一个表。我可能会使用单列表来插入消息,侦听器只会取出rowid最低的行,然后删除该行。
但我的方法完全不是特定于Java的,所以使用Java可能有更好的方法(例如@darthcoder的响应)。
https://stackoverflow.com/questions/1416780
复制相似问题