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