Pergunta

Eu tenho uma situação onde eu preciso para enviar comandos para uma aplicação java correr, agora estou usando TCP / IP socket para enviar comandos para o aplicativo usando um item de menu de contexto do Internet Explorer. Mas assim que o aplicativo é iniciado scanners de vírus se queixam de que a aplicação comecei a ouvir, embora eu só estou aguardando as conexões locais. Acho que isso pode ser confuso para os usuários. Estou olhando para outras formas de comunicação sem irritando scanners AV?

Foi útil?

Solução

Para isso, você é melhor fora de um arquivo baseado em fila FIFO. Ou usando Java Native Acesso / Java Native Interface para gravar em um NamedPipe ou de memória compartilhada. Se você vai a rota JNA / JNI, você poderia criar um Nomeado Evento .

Mas há provavelmente nenhuma maneira de fazer o que quiser, com qualquer quantidade de eficiência sem ir a rota JNA / JNI.

Outras dicas

Você pode usar Java Gestão Extentions (JMX) para expor métodos em um processo em execução através de uma interface web simples.

Sockets são praticamente a forma tradicional de fazer IPC, mas se você realmente quer evitá-los, você pode ser capaz de chegar a uma solução alternativa usando o local, sistema de arquivo. Você não gostaria de usar o arquivo padrão lê / escreve, já que você provavelmente iria querer implementar efetivamente uma fila no sistema de arquivos.

Se I foram indo para implementar IPC através do sistema de arquivos, eu provavelmente usar SQLite ( que pode ser threadsafe quando compilado assim) e ter uma tabela para cada ouvinte. Eu provavelmente usar uma tabela de coluna única para inserir a mensagem, e o ouvinte seria apenas puxe a linha com o menor rowid , em seguida, excluir a dita fila.

Mas a minha abordagem não é de todo específicos de Java, então pode haver melhores maneiras de fazer isso usando Java (como resposta de @ darthcoder).

Um monte de gente usar algo como JMS neste cenário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top