質問

実行中のJavaアプリケーションにコマンドを送信する必要がある状況があります。現在、Internet Explorerのコンテキストメニュー項目を使用してアプリケーションにコマンドを送信するためにtcp / ipソケットを使用しています。しかし、アプリケーションが起動するとすぐに、ウイルススキャナはアプリケーションがリッスンを開始したと文句を言いますが、私はローカル接続のみをリッスンしています。これはユーザーを混乱させるかもしれません。私は他の方法でAVスキャナーを怒らせずに通信する方法を見ていますか?

役に立ちましたか?

解決

このためには、ファイルベースのFIFOキューを使用するのが最善です。または、Java Native Access / Java Native Interfaceを使用して、NamedPipeまたはShared Memoryに書き込みます。 JNA / JNIルートに行く場合、名前付きイベント

しかし、おそらく、JNA / JNIルートに行かずに効率を上げても、あなたが望むことをする方法はありません。

他のヒント

Java Management Extentions(JMX)を使用できます。 を使用して、実行中のプロセスのメソッドを単純なWebインターフェースで公開します。

ソケットはIPCを行う従来の方法とほぼ同じですが、実際に回避したい場合は、ローカルを使用して回避策を考え出すことができます ファイルシステム。ほとんどの場合、ファイルシステムにキューを効果的に実装する必要があるため、標準のファイルの読み取り/書き込みを使用したくないでしょう。

I がファイルシステムを介してIPCを実装する場合、おそらくSQLite(これはコンパイル時にスレッドセーフになる可能性があります。リスナーごとに1つのテーブルがあります。私はおそらく単一列のテーブルを使用してメッセージを挿入し、リスナーは最も低い rowid 、次にその行を削除します。

しかし、私のアプローチはまったくJava固有ではないため、Javaを使用してこれを行うより良い方法があるかもしれません(@darthcoderの応答など)。

このシナリオでは、多くの人がJMSのようなものを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top