Java进程间通信

时间:2009-09-13 03:34:43

标签: java ipc

我有一种情况需要向正在运行的java应用程序发送命令,现在我使用tcp / ip socket使用Internet Explorer上下文菜单项向应用程序发送命令。但是一旦应用程序启动,病毒扫描程序就会抱怨应用程序开始监听,尽管我只是在监听本地连接。我认为这可能会让用户感到困惑。我正在寻找其他方式进行沟通而不会诋毁av扫描仪?

4 个答案:

答案 0 :(得分:4)

为此,您最好关闭基于文件的FIFO队列。或使用Java Native Access / Java Native Interface写入NamedPipe或共享内存。如果你去JNA / JNI路线,你可以创建一个Named Event

但是如果不采用JNA / JNI路线,可能无法实现您想要的任何效率。

答案 1 :(得分:3)

您可以使用Java Management Extentions (JMX)通过简单的Web界面公开正在运行的进程中的方法。

答案 2 :(得分:1)

套接字几乎是传统的IPC方式,但是如果真的希望避免使用它们,那么可能会能够使用本地解决方法文件系统。您不希望使用标准文件读/写,因为您很可能希望在文件系统中有效地实现队列。

如果要通过文件系统实现IPC,我可能会使用SQLite(which can be threadsafe when compiled so)并为每个监听器设置一个表。我可能会使用单列用于插入消息的表,并且侦听器只会拔出具有最低rowid的行,然后删除所述行。

但我的方法根本不是特定于Java的,所以使用Java可能有更好的方法(例如@darthcoder的响应)。

答案 3 :(得分:-1)

很多人在这种情况下使用类似JMS的东西。