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

有帮助吗?

解决方案

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

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

其他提示

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

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

如果要通过文件系统实现IPC,我可能会使用SQLite(编译时可以是线程安全的)并为每个监听器提供一个表。我可能会使用单列表来插入消息,而侦听器只会拉出最低行 rowid ,然后删除所述行。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top