final class org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor
super_class: java.lang.Object
{
private static final java.util.logging.Logger LOGGER;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int DEFAULT_INTERVAL;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 500
private static final int SHUTDOWN_TIMEOUT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 10
private final org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener monitoringEventListener;
descriptor: Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder statisticsBuilder;
descriptor: Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsImpl$Builder;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.List<org.glassfish.jersey.server.monitoring.MonitoringStatisticsListener> statisticsCallbackList;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/glassfish/jersey/server/monitoring/MonitoringStatisticsListener;>;
private final java.util.concurrent.ScheduledExecutorService scheduler;
descriptor: Ljava/util/concurrent/ScheduledExecutorService;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int interval;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
putstatic org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.LOGGER:Ljava/util/logging/Logger;
1: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(org.glassfish.jersey.internal.inject.InjectionManager, org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener);
descriptor: (Lorg/glassfish/jersey/internal/inject/InjectionManager;Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener;)V
flags: (0x0000)
Code:
stack=7, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 2
putfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.monitoringEventListener:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener;
2: aload 1
ldc Lorg/glassfish/jersey/server/ExtendedResourceContext;
invokeinterface org.glassfish.jersey.internal.inject.InjectionManager.getInstance:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast org.glassfish.jersey.server.ExtendedResourceContext
invokeinterface org.glassfish.jersey.server.ExtendedResourceContext.getResourceModel:()Lorg/glassfish/jersey/server/model/ResourceModel;
astore 3
start local 3 3: aload 0
new org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder
dup
aload 3
invokespecial org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder.<init>:(Lorg/glassfish/jersey/server/model/ResourceModel;)V
putfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.statisticsBuilder:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsImpl$Builder;
4: aload 0
aload 1
ldc Lorg/glassfish/jersey/server/monitoring/MonitoringStatisticsListener;
invokeinterface org.glassfish.jersey.internal.inject.InjectionManager.getAllInstances:(Ljava/lang/reflect/Type;)Ljava/util/List;
putfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.statisticsCallbackList:Ljava/util/List;
5: aload 0
6: aload 1
ldc Ljava/util/concurrent/ScheduledExecutorService;
iconst_1
anewarray java.lang.annotation.Annotation
dup
iconst_0
getstatic org.glassfish.jersey.server.BackgroundSchedulerLiteral.INSTANCE:Lorg/glassfish/jersey/server/BackgroundScheduler;
aastore
invokeinterface org.glassfish.jersey.internal.inject.InjectionManager.getInstance:(Ljava/lang/Class;[Ljava/lang/annotation/Annotation;)Ljava/lang/Object;
checkcast java.util.concurrent.ScheduledExecutorService
7: putfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.scheduler:Ljava/util/concurrent/ScheduledExecutorService;
8: aload 0
aload 1
ldc Ljakarta/ws/rs/core/Configuration;
invokeinterface org.glassfish.jersey.internal.inject.InjectionManager.getInstance:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast jakarta.ws.rs.core.Configuration
invokeinterface jakarta.ws.rs.core.Configuration.getProperties:()Ljava/util/Map;
9: ldc "jersey.config.server.monitoring.statistics.refresh.interval"
sipush 500
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
10: invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
11: invokestatic org.glassfish.jersey.internal.util.PropertiesHelper.getValue:(Ljava/util/Map;Ljava/lang/String;Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
putfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.interval:I
12: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;
0 13 1 injectionManager Lorg/glassfish/jersey/internal/inject/InjectionManager;
0 13 2 monitoringEventListener Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener;
3 13 3 resourceModel Lorg/glassfish/jersey/server/model/ResourceModel;
MethodParameters:
Name Flags
injectionManager final
monitoringEventListener final
public void startMonitoringWorker();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=1, args_size=1
start local 0 0: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.scheduler:Ljava/util/concurrent/ScheduledExecutorService;
new org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$1
dup
aload 0
invokespecial org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$1.<init>:(Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;)V
1: lconst_0
aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.interval:I
i2l
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
2: invokeinterface java.util.concurrent.ScheduledExecutorService.scheduleWithFixedDelay:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
pop
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;
private void processExceptionMapperEvents();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=1
start local 0 0: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.monitoringEventListener:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener;
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener.getExceptionMapperEvents:()Ljava/util/Queue;
astore 1
start local 1 1: new org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger
dup
aload 1
invokespecial org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger.<init>:(Ljava/util/Collection;)V
astore 2
start local 2 2: goto 9
3: StackMap locals: java.util.Queue org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger
StackMap stack:
aload 2
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger.conditionallyLogFlooding:()V
4: aload 1
invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
checkcast org.glassfish.jersey.server.monitoring.RequestEvent
astore 3
start local 3 5: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.statisticsBuilder:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsImpl$Builder;
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder.getExceptionMapperStatisticsBuilder:()Lorg/glassfish/jersey/server/internal/monitoring/ExceptionMapperStatisticsImpl$Builder;
astore 4
start local 4 6: aload 3
invokeinterface org.glassfish.jersey.server.monitoring.RequestEvent.getExceptionMapper:()Ljakarta/ws/rs/ext/ExceptionMapper;
ifnull 8
7: aload 4
aload 3
invokeinterface org.glassfish.jersey.server.monitoring.RequestEvent.getExceptionMapper:()Ljakarta/ws/rs/ext/ExceptionMapper;
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
iconst_1
invokevirtual org.glassfish.jersey.server.internal.monitoring.ExceptionMapperStatisticsImpl$Builder.addExceptionMapperExecution:(Ljava/lang/Class;I)V
8: StackMap locals: org.glassfish.jersey.server.monitoring.RequestEvent org.glassfish.jersey.server.internal.monitoring.ExceptionMapperStatisticsImpl$Builder
StackMap stack:
aload 4
aload 3
invokeinterface org.glassfish.jersey.server.monitoring.RequestEvent.isResponseSuccessfullyMapped:()Z
iconst_1
invokevirtual org.glassfish.jersey.server.internal.monitoring.ExceptionMapperStatisticsImpl$Builder.addMapping:(ZI)V
end local 4 end local 3 9: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 3
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;
1 11 1 eventQueue Ljava/util/Queue<Lorg/glassfish/jersey/server/monitoring/RequestEvent;>;
2 11 2 floodingLogger Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor$FloodingLogger;
5 9 3 event Lorg/glassfish/jersey/server/monitoring/RequestEvent;
6 9 4 mapperStats Lorg/glassfish/jersey/server/internal/monitoring/ExceptionMapperStatisticsImpl$Builder;
private void processRequestItems();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=11, locals=7, args_size=1
start local 0 0: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.monitoringEventListener:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener;
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener.getRequestQueuedItems:()Ljava/util/Queue;
astore 1
start local 1 1: new org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger
dup
aload 1
invokespecial org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger.<init>:(Ljava/util/Collection;)V
astore 2
start local 2 2: goto 14
3: StackMap locals: java.util.Queue org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger
StackMap stack:
aload 2
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger.conditionallyLogFlooding:()V
4: aload 1
invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
checkcast org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$RequestStats
astore 3
start local 3 5: aload 3
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$RequestStats.getRequestStats:()Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener$TimeStats;
astore 4
start local 4 6: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.statisticsBuilder:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsImpl$Builder;
aload 4
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$TimeStats.getStartTime:()J
aload 4
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$TimeStats.getDuration:()J
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder.addRequestExecution:(JJ)V
7: aload 3
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$RequestStats.getMethodStats:()Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener$MethodStats;
astore 5
start local 5 8: aload 5
ifnull 14
9: aload 5
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$MethodStats.getMethod:()Lorg/glassfish/jersey/server/model/ResourceMethod;
astore 6
start local 6 10: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.statisticsBuilder:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsImpl$Builder;
aload 3
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$RequestStats.getRequestUri:()Ljava/lang/String;
aload 6
11: aload 5
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$MethodStats.getStartTime:()J
aload 5
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$MethodStats.getDuration:()J
12: aload 4
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$TimeStats.getStartTime:()J
aload 4
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$TimeStats.getDuration:()J
13: invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder.addExecution:(Ljava/lang/String;Lorg/glassfish/jersey/server/model/ResourceMethod;JJJJ)V
end local 6 end local 5 end local 4 end local 3 14: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 3
15: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;
1 16 1 requestQueuedItems Ljava/util/Queue<Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener$RequestStats;>;
2 16 2 floodingLogger Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor$FloodingLogger;
5 14 3 event Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener$RequestStats;
6 14 4 requestStats Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener$TimeStats;
8 14 5 methodStat Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener$MethodStats;
10 14 6 method Lorg/glassfish/jersey/server/model/ResourceMethod;
private void processResponseCodeEvents();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.monitoringEventListener:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringEventListener;
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener.getResponseStatuses:()Ljava/util/Queue;
astore 1
start local 1 1: new org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger
dup
aload 1
invokespecial org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger.<init>:(Ljava/util/Collection;)V
astore 2
start local 2 2: goto 6
3: StackMap locals: java.util.Queue org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger
StackMap stack:
aload 2
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger.conditionallyLogFlooding:()V
4: aload 1
invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
checkcast java.lang.Integer
astore 3
start local 3 5: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.statisticsBuilder:Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsImpl$Builder;
aload 3
invokevirtual java.lang.Integer.intValue:()I
invokevirtual org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder.addResponseCode:(I)V
end local 3 6: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 3
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;
1 8 1 responseEvents Ljava/util/Queue<Ljava/lang/Integer;>;
2 8 2 floodingLogger Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor$FloodingLogger;
5 6 3 code Ljava/lang/Integer;
void shutDown();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.scheduler:Ljava/util/concurrent/ScheduledExecutorService;
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdown:()V
1: aload 0
getfield org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.scheduler:Ljava/util/concurrent/ScheduledExecutorService;
ldc 10
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ScheduledExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
istore 1
start local 1 2: iload 1
ifne 4
3: getstatic org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor.LOGGER:Ljava/util/logging/Logger;
invokestatic org.glassfish.jersey.server.internal.LocalizationMessages.ERROR_MONITORING_SCHEDULER_DESTROY_TIMEOUT:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.warning:(Ljava/lang/String;)V
4: StackMap locals: int
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/glassfish/jersey/server/internal/monitoring/MonitoringStatisticsProcessor;
2 5 1 success Z
Exceptions:
throws java.lang.InterruptedException
}
SourceFile: "MonitoringStatisticsProcessor.java"
NestMembers:
org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$1 org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger
InnerClasses:
Builder = org.glassfish.jersey.server.internal.monitoring.ExceptionMapperStatisticsImpl$Builder of org.glassfish.jersey.server.internal.monitoring.ExceptionMapperStatisticsImpl
MethodStats = org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$MethodStats of org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener
RequestStats = org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$RequestStats of org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener
TimeStats = org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener$TimeStats of org.glassfish.jersey.server.internal.monitoring.MonitoringEventListener
Builder = org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl$Builder of org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsImpl
org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$1
private FloodingLogger = org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor$FloodingLogger of org.glassfish.jersey.server.internal.monitoring.MonitoringStatisticsProcessor