Pregunta

Tengo una situación en la que necesito enviar comandos a una aplicación Java en ejecución, ahora estoy usando el socket tcp / ip para enviar comandos a la aplicación usando un elemento del menú contextual de Internet Explorer. Pero tan pronto como la aplicación se inicia, los escáneres de virus se quejan de que la aplicación comenzó a escuchar, aunque solo escucho conexiones locales. Creo que esto puede ser confuso para los usuarios. ¿Estoy buscando otras formas de comunicación sin molestar a los escáneres av?

¿Fue útil?

Solución

Para esto, es mejor que esté en una cola FIFO basada en archivos. O usando Java Native Access / Java Native Interface para escribir en una NamedPipe o Memoria compartida. Si sigue la ruta JNA / JNI, podría crear un Evento con nombre .

Pero probablemente no hay forma de hacer lo que quieres, con alguna cantidad de eficiencia sin seguir la ruta JNA / JNI.

Otros consejos

Puede usar Extensiones de administración de Java (JMX) para exponer métodos en un proceso en ejecución a través de una interfaz web simple.

Los sockets son casi la forma tradicional de hacer IPC, pero si realmente quiere evitarlos, podría ser capaz de encontrar una solución usando el local sistema de archivos No querrá usar lecturas / escrituras de archivos estándar, ya que lo más probable es que desee implementar efectivamente una cola en el sistema de archivos.

Si I implementara IPC a través del sistema de archivos, probablemente usaría SQLite ( que puede ser seguro para subprocesos cuando se compila) y tiene una tabla para cada oyente. Probablemente usaría una tabla de una sola columna para insertar el mensaje, y el oyente simplemente extraería la fila con el rowid , luego elimine dicha fila.

Pero mi enfoque no es en absoluto específico de Java, por lo que podría haber mejores formas de hacerlo utilizando Java (como la respuesta de @ darthcoder).

Mucha gente usa algo como JMS en este escenario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top