問題タブ [watchservice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ディレクトリ内で発生したイベントをキャプチャする
Java 7 nio WatchService以下の方法を使用してディレクトリを監視しています。
ただし、上記の方法は、そのフォルダーで発生したイベントにウォッチャーが応答しなかった後、ディレクトリで発生した 1 つのイベントにのみ応答します。これを変更して、フォルダー内で発生するすべてのイベントをキャプチャする方法はありますか。また、これを変更して、サブフォルダーでも発生するイベントをキャプチャしたいと考えています。誰かがそれを手伝ってくれますか。
ありがとうございました。
java - ファイル Java への変更を監視する
コードの一部が変更、作成、または削除されるたびに特定のアクションを実行する監視サービスを開発しようとしています。
WatchService を実装し、監視する特定のパッケージへのパスを取得するデーモンを作成しました。たとえば、「../JDV/src/randompackage/java/test/money_scenario」です。
このデーモンには次のコードがあります。
何が起こるかは次のとおりです。デーモンを実行すると、アクティブになります。money_scenario パッケージ (クラス自体を削除/作成できるサブパッケージがあります) でクラスを作成または削除するたびに、デーモンはそれを検出し、作成/削除の代わりに「変更が検出されました」と出力します。money_scenario パッケージのクラスを変更すると、何も検出されません。
私は何を間違っていますか?
編集:解決しましたが、別の問題が発生しました。複数のイベント: たとえば、クラスを削除すると、次のようになります。
money_scenario で変更が検出されました money_scenario で削除が検出されました money_scenario で変更が検出されました
java - シングルトン WatchServiceHandler クラスが印刷されない
次のようにインスタンス化されるシングルトンHandlerクラスがあります。
作成時に、WatchService を含むいくつかのクラスを作成し、その WatchService からのイベントを処理します (無限ループと .take() を使用)。
これを行うメインメソッドがある場合:
何も印刷されません!ウォッチサービスと関係があると思います。しかし、それは自動的に別のスレッドで実行されると思いました。
java - デーモン スレッドのプールを管理する
それぞれが監視サービスを実装するデーモンのグループを処理する必要があります。私ができるようにしたいのは、デーモンを作成し、それらをアクティブ化し、非アクティブ化し、削除することです。
作成時の時点で、これを実行してアクティブにします:
これで機能しますが、非アクティブ化して削除したい場合。Deactivate はプロセス イベントを停止し ( http://docs.oracle.com/javase/tutorial/essential/io/notification.htmlと同じ方法)、スレッドの割り当てを解除する必要があります。Remove はデーモンを破壊するだけです。
スレッドプールを使用することを考えていますが、実装とタイプが不明です。必要なデーモンの数がわからないため、固定スレッド プールは必要ありません。キャッシュされたスレッドプールは十分に思えますが、ドキュメントによると、デーモンは長時間実行される可能性がありますが、「多くの短命のタスクを起動するアプリケーション」にのみ適しているとのことです。
デーモン (watchservices) のグループを安全に管理、アクティブ化、および非アクティブ化するにはどうすればよいですか?
java - ExecutorService を停止できません
ExecutorService を終了しようとしましたがexecutorService.shutdown();、それが機能しなかった場合はexecutorService.shutdown();. 問題は、executorService を停止できず、プログラムがまだ実行されていることです。
ディレクトリの変更を監視するために WatchService を開始するクラスを次に示します。
stopWatcher()オラクルのJava APIからメソッドを取得しました] 1。FileWatcher クラスをテストするための単純なクラスを作成しました。
そのため、テスト アプリケーションを開始して FileWatcher を開始し、その 2 秒後に終了すると、プログラムは次のように通知しますPool did not terminate。正しく終了するには、何を変更できますか?
ちなみに、ConfigManager と FileHandler はインターフェイスであり、変更のために必要なパスを取得します。
java - Java7 WatcheService イベントが受信されない
私はこの WatchService で何かばかげたことをしていると確信していますが、頭を悩ませることができないので、誰かがここで光を当てることができるかもしれません..
イベントでコールバックされるように、Java の watchService の周りに最も単純な scala ラッパーを作成しました。
ここで、これを単純な「メイン」プログラムで手動で実行すると、本来のとおりに実行されます。ファイルを作成すると、同じループ反復で ENTRY_CREATE と ENTRY_MODIFY の両方のイベントが発生します (理由はありません)。その後、変更すると別のイベントが発生します。 ENTRY_MODIFY、最後に削除すると ENTRY_DELETE になります。
ここまでは順調ですね。
これを akka でラップして、イベントがアクターに送信されるようにします..私の watchService はテイク中にスタックしているようで、そこから出てきません!
私は自分以外の誰かを責めているわけではありませんが、これは私を狂わせています:)
コードは非常に小さいですが、ここにすべてをコピーする代わりに、コードを github に投稿しました (簡単に再現できます): https://github.com/joune/watcher
ここで手を貸してくれる人はいますか?
PS: 私は Linux 3.11.6-200.fc19.x86_64 を使用しています。