- すべての実装されたインタフェース:
- AutoCloseable,- EventStream
MBeanServerConnectionを使用してネットワーク経由でイベントを直列化できるEventStreamの実装。
 次の例は、リモート・ホストでガベージ・コレクションの休止時間およびCPU使用率を記録し、イベントを標準出力に出力する方法を示しています。
 {
     
     String host = "com.example";
     int port = 4711;
     String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";
     JMXServiceURL u = new JMXServiceURL(url);
     JMXConnector c = JMXConnectorFactory.connect(u);
     MBeanServerConnection conn = c.getMBeanServerConnection();
     try (var rs = new RemoteRecordingStream(conn)) {
         rs.enable("jdk.GCPhasePause").withoutThreshold();
         rs.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1));
         rs.onEvent("jdk.CPULoad", System.out::println);
         rs.onEvent("jdk.GCPhasePause", System.out::println);
         rs.start();
     }
 
 - 導入されたバージョン:
- 16
- 
コンストラクタのサマリーコンストラクタコンストラクタ説明RemoteRecordingStream(MBeanServerConnection connection)FlightRecorderMXBeanが登録されているMBeanServerConnectionに対して演算するイベント・ストリームを作成します。RemoteRecordingStream(MBeanServerConnection connection, Path directory)FlightRecorderMXBeanが登録されているMBeanServerConnectionに対して演算するイベント・ストリームを作成します。
- 
メソッドのサマリー修飾子と型メソッド説明voidすべてのアクションが完了するか、ストリームがクローズされるか、現在のスレッドが中断されるまで、いずれか早いほうで発生します。voidawaitTermination(Duration timeout)すべてのアクションが完了するか、ストリームがクローズされるか、タイムアウトが発生するか、現在のスレッドが中断されるまで、いずれか先に発生するまでブロックします。voidclose()このストリームに関連付けられているすべてのリソースを解放します。指定された名前のイベントを無効にします。指定された名前のイベントを有効にします。voidストリームが閉じられたときに実行するアクションを登録します。void例外が発生した場合に実行するアクションを登録します。voidonEvent(String eventName, Consumer<RecordedEvent> action)名前と一致するすべてのイベントに対して実行するアクションを登録します。voidonEvent(Consumer<RecordedEvent> action)ストリーム内のすべてのイベントで実行するアクションを登録します。voidストリームのフラッシュ後に実行するアクションを登録します。booleanアクションを登録解除します。voidsetEndTime(Instant endTime)ストリームの終了時間を指定します。voidストリームで保持される過去のデータの量を決定します。voidsetMaxSize(long maxSize)ストリーム用に保持されるデータ量を決定します。voidsetOrdered(boolean ordered)イベントがストリームにコミットされた時間でソートされて、時系列順にイベントが到着することを指定します。voidsetReuse(boolean reuse)EventStream.onEvent(Consumer)処理のイベント・オブジェクトを再利用できることを指定します。voidsetSettings(Map<String,String> settings)このレコーディング・ストリームのすべての設定を置換します。voidsetStartTime(Instant startTime)ストリームの開始時間を指定します。voidstart()アクションの処理を開始します。voidアクションの非同期処理を開始します。クラス java.lang.Objectで宣言されたメソッドclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitインタフェースjdk.jfr.consumer.EventStreamで宣言されたメソッドonMetadata
- 
コンストラクタの詳細- 
RemoteRecordingStreampublic RemoteRecordingStream(MBeanServerConnection connection) throws IOExceptionFlightRecorderMXBeanが登録されているMBeanServerConnectionに対して演算するイベント・ストリームを作成します。イベント設定を構成するには、 setSettings(Map)を使用します。- パラメータ:
- connection-- FlightRecorderMXBeanが登録されている- MBeanServerConnection。- nullではない
- 例外:
- IOException- ストリームをオープンできない場合、リポジトリまたは- FlightRecorderMXBeanにアクセスしようとすると、I/Oエラーが発生
- SecurityException- セキュリティ・マネージャが存在し、- checkReadメソッドがディレクトリへの読取りアクセスを拒否するか、ディレクトリ内のファイルを拒否する場合。
 
- 
RemoteRecordingStreampublic RemoteRecordingStream(MBeanServerConnection connection, Path directory) throws IOExceptionFlightRecorderMXBeanが登録されているMBeanServerConnectionに対して演算するイベント・ストリームを作成します。イベント設定を構成するには、 setSettings(Map)を使用します。- パラメータ:
- connection-- FlightRecorderMXBeanが登録されている- MBeanServerConnection。- nullではない
- directory-- nullではなく、ダウンロードされたイベント・データを格納するディレクトリ
- 例外:
- IOException- ストリームをオープンできない場合、リポジトリまたは- FlightRecorderMXBeanにアクセスしようとすると、I/Oエラーが発生
- SecurityException- セキュリティ・マネージャが存在し、- checkReadメソッドがディレクトリへの読取りアクセスを拒否するか、ディレクトリ内のファイルを拒否する場合。
 
 
- 
- 
メソッドの詳細- 
setSettingsこのレコーディング・ストリームのすべての設定を置換します。次の例では、"default"構成の設定を使用してリモート・ホストに接続し、イベントをストリームします。 { String host = "com.example"; int port = 4711; String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi"; JMXServiceURL u = new JMXServiceURL(url); JMXConnector c = JMXConnectorFactory.connect(u); MBeanServerConnection conn = c.getMBeanServerConnection(); try (final var rs = new RemoteRecordingStream(conn)) { rs.onMetadata(e -> { for (Configuration c : e.getConfigurations()) { if (c.getName().equals("default")) { rs.setSettings(c.getSettings()); } } }); rs.onEvent(System.out::println); rs.start(); }- パラメータ:
- settings-- nullではなく、設定する設定
- 関連項目:
- Recording.setSettings(Map)
 
- 
disablepublic EventSettings disable(String name)指定された名前のイベントを無効にします。(たとえば、同じクラスが別のクラス・ローダーにロードされたとします。)と同じ名前のイベントが複数ある場合、名前と一致するすべてのイベントが無効化されます。 - パラメータ:
- name-- nullではなく、イベントの設定
- 戻り値:
- nullではなく、さらなる構成のためのイベント設定
 
- 
enablepublic EventSettings enable(String name)指定された名前のイベントを有効にします。複数のイベントの名前が(たとえば、同じクラスが別のクラス・ローダーにロードされたとします。)である場合、名前と一致するすべてのイベントが有効になります。 - パラメータ:
- name-- nullではなく、イベントの設定
- 戻り値:
- nullではなく、さらなる構成のためのイベント設定
- 関連項目:
- EventType
 
- 
setMaxAgepublic void setMaxAge(Duration maxAge)ストリームで保持される過去のデータの量を決定します。ディスクに格納されるデータのレコーディング量を制御するために、データを保持する最大時間を指定できます。 指定した時間よりも古いディスクに格納されているデータは、Java Virtual Machine (JVM)によって削除されます。 最大制限も最大有効期間も設定されていない場合、イベントが消費されないと、レコーディングのサイズが無限に大きくなる可能性があります。 - パラメータ:
- maxAge- データが保持される時間の長さ(無限大の場合は- null)。
- 例外:
- IllegalArgumentException-- maxAgeが負の場合
- IllegalStateException- レコーディングが- CLOSED状態にあるかどうか
 
- 
setMaxSizepublic void setMaxSize(long maxSize)ストリーム用に保持されるデータ量を決定します。ディスクに格納されるデータのレコーディング量を制御するために、保持するデータの最大量を指定できます。 上限を超えた場合、Java Virtual Machine (JVM)は最も古いチャンクを削除し、新しいチャンクのための余裕を作成します。 最大制限も最大有効期間も設定されていない場合、イベントが消費されないと、レコーディングのサイズが無限に大きくなる可能性があります。 サイズはバイト単位で測定されます。 - パラメータ:
- maxSize- 保存するデータの量(無限大の場合は- 0)
- 例外:
- IllegalArgumentException-- maxSizeが負の場合
- IllegalStateException- レコーディングが- CLOSED状態にある場合
 
- 
onEventpublic void onEvent(Consumer<RecordedEvent> action)インタフェース:EventStreamからコピーされた説明ストリーム内のすべてのイベントで実行するアクションを登録します。- 定義:
- インタフェースEventStream内のonEvent
- パラメータ:
- action-- nullではなく、各- RecordedEventで実行するアクション。
 
- 
onEventpublic void onEvent(String eventName, Consumer<RecordedEvent> action)インタフェース:EventStreamからコピーされた説明名前と一致するすべてのイベントに対して実行するアクションを登録します。- 定義:
- インタフェースEventStream内のonEvent
- パラメータ:
- eventName- イベントの名前(- null以外)
- action-- nullではなく、イベント名と一致する各- RecordedEventに対して実行するアクション
 
- 
onFlushpublic void onFlush(Runnable action)インタフェース:EventStreamからコピーされた説明ストリームのフラッシュ後に実行するアクションを登録します。- 定義:
- インタフェースEventStream内のonFlush
- パラメータ:
- action- ストリームのフラッシュ後に実行するアクション。- nullではありません
 
- 
onErrorインタフェース:EventStreamからコピーされた説明例外が発生した場合に実行するアクションを登録します。アクションが登録されていない場合は、例外スタック・トレースが標準エラーに出力されます。 アクションを登録すると、デフォルトの動作がオーバーライドされます。 複数のアクションが登録されている場合は、登録順に実行されます。 このメソッド自体が例外をスローすると、結果として生じる動作は未定義です。 - 定義:
- インタフェースEventStream内のonError
- パラメータ:
- action-- nullではなく例外が発生した場合に実行するアクション
 
- 
onClosepublic void onClose(Runnable action)インタフェース:EventStreamからコピーされた説明ストリームが閉じられたときに実行するアクションを登録します。ストリームがすでにクローズされている場合は、現在のスレッド内でただちにアクションが実行されます。 - 定義:
- インタフェースEventStream内のonClose
- パラメータ:
- action- ストリームが閉じられた後に実行するアクション。- nullはクローズされません
- 関連項目:
- EventStream.close()
 
- 
closepublic void close()インタフェース:EventStreamからコピーされた説明このストリームに関連付けられているすべてのリソースを解放します。ストリームが非同期または同期的に起動された場合は、すぐに、または次のフラッシュの後に停止されます。 このメソッドは、登録されているすべてのアクションが戻る前に完了することを保証しません。 すでに閉じられているストリームを閉じても、何の影響もありません。 - 定義:
- close、インタフェース:- AutoCloseable
- 定義:
- インタフェースEventStream内のclose
 
- 
removepublic boolean remove(Object action)インタフェース:EventStreamからコピーされた説明アクションを登録解除します。アクションが複数回登録されている場合、すべてのインスタンスが登録解除されます。 - 定義:
- インタフェースEventStream内のremove
- パラメータ:
- action- 登録解除する処理(- nullではない)
- 戻り値:
- アクションが登録解除された場合はtrue、登録されていない場合はfalse
- 関連項目:
- EventStream.onEvent(Consumer),- EventStream.onEvent(String, Consumer),- EventStream.onFlush(Runnable),- EventStream.onClose(Runnable),- EventStream.onError(Consumer)
 
- 
setReusepublic void setReuse(boolean reuse)インタフェース:EventStreamからコピーされた説明EventStream.onEvent(Consumer)処理のイベント・オブジェクトを再利用できることを指定します。reuseが trueに設定されている場合、アクションの完了後、アクションはイベント・オブジェクトへの参照を保持しません。- 定義:
- インタフェースEventStream内のsetReuse
- パラメータ:
- reuse- イベント・オブジェクトを再利用できる場合は- true、それ以外の場合は- false
 
- 
setOrderedpublic void setOrdered(boolean ordered)インタフェース:EventStreamからコピーされた説明イベントがストリームにコミットされた時間でソートされて、時系列順にイベントが到着することを指定します。- 定義:
- インタフェースEventStream内のsetOrdered
- パラメータ:
- ordered- イベント・オブジェクトが- EventStream.onEvent(Consumer)に時系列で到着した場合
 
- 
setStartTimepublic void setStartTime(Instant startTime)インタフェース:EventStreamからコピーされた説明ストリームの開始時間を指定します。開始時間は、ストリームの開始前に設定する必要があります - 定義:
- インタフェースEventStream内のsetStartTime
- パラメータ:
- startTime- 開始時間(- nullではない)
- 関連項目:
- EventStream.start(),- EventStream.startAsync()
 
- 
setEndTimepublic void setEndTime(Instant endTime)インタフェース:EventStreamからコピーされた説明ストリームの終了時間を指定します。終了時間は、ストリームの開始前に設定する必要があります。 最後に、ストリームはクローズされます。 - 定義:
- インタフェースEventStream内のsetEndTime
- パラメータ:
- endTime- 終了時間(- nullではない)
- 関連項目:
- EventStream.start(),- EventStream.startAsync()
 
- 
startpublic void start()インタフェース:EventStreamからコピーされた説明- 定義:
- インタフェースEventStream内のstart
 
- 
startAsyncpublic void startAsync()インタフェース:EventStreamからコピーされた説明- 定義:
- インタフェースEventStream内のstartAsync
 
- 
awaitTerminationpublic void awaitTermination(Duration timeout) throws InterruptedExceptionインタフェース:EventStreamからコピーされた説明すべてのアクションが完了するか、ストリームがクローズされるか、タイムアウトが発生するか、現在のスレッドが中断されるまで、いずれか先に発生するまでブロックします。- 定義:
- インタフェースEventStream内のawaitTermination
- パラメータ:
- timeout-- nullではなく最大待機時間
- 例外:
- InterruptedException- 待機中に割込みが発生した場合
- 関連項目:
- EventStream.start(),- EventStream.startAsync(),- Thread.interrupt()
 
- 
awaitTerminationpublic void awaitTermination() throws InterruptedExceptionインタフェース:EventStreamからコピーされた説明すべてのアクションが完了するか、ストリームがクローズされるか、現在のスレッドが中断されるまで、いずれか早いほうで発生します。- 定義:
- インタフェースEventStream内のawaitTermination
- 例外:
- InterruptedException- 待機中に割込みが発生した場合
- 関連項目:
- EventStream.start(),- EventStream.startAsync(),- Thread.interrupt()
 
 
-