Interface LifecycleObserver
public interface LifecycleObserver
Read-only hook methods for observing system and request lifecycle events.
Note: some of these methods are "fail-fast" - exceptions thrown will bubble out and stop execution - and for others,
Soklet will catch exceptions and surface separately via didReceiveLogEvent(LogEvent).
A standard threadsafe implementation can be acquired via the defaultInstance() factory method.
Full documentation is available at https://www.soklet.com/docs/request-lifecycle.
- Author:
- Mark Allen
-
Method Summary
Modifier and TypeMethodDescriptionstatic @NonNull LifecycleObserverAcquires a threadsafeLifecycleObserverinstance with sensible defaults.default voiddidAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress) Called after a server accepts a new TCP connection.default voiddidAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called after a request is accepted for application-level handling.default voiddidCreateMcpSession(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId) Called after an MCP session is durably created.default voiddidEstablishMcpSseStream(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId) Called after an MCP GET stream is established.default voiddidEstablishSseConnection(@NonNull SseConnection sseConnection) Called after an SSE connection is established.default voiddidFailToAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @NonNull ConnectionRejectionReason reason, @Nullable Throwable throwable) Called after a server fails to accept a new TCP connection.default voiddidFailToAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestRejectionReason reason, @Nullable Throwable throwable) Called when a request fails to be accepted before application-level handling begins.default voiddidFailToEstablishSseConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull SseConnection.HandshakeFailureReason reason, @Nullable Throwable throwable) Called if an SSE connection fails to establish.default voiddidFailToReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestReadFailureReason reason, @Nullable Throwable throwable) Called when a request could not be read or parsed into a validRequest.default voiddidFailToStartHttpServer(@NonNull HttpServer httpServer, @NonNull Throwable throwable) Called after aHttpServerinstance was asked to start, but failed due to an exception.default voiddidFailToStartMcpServer(@NonNull McpServer mcpServer, @NonNull Throwable throwable) Called after anMcpServerinstance was asked to start, but failed due to an exception.default voiddidFailToStartSoklet(@NonNull Soklet soklet, @NonNull Throwable throwable) Called after aSokletinstance was asked to start, but failed due to an exception.default voiddidFailToStartSseServer(@NonNull SseServer sseServer, @NonNull Throwable throwable) Called after aSseServerinstance was asked to start, but failed due to an exception.default voiddidFailToStopHttpServer(@NonNull HttpServer httpServer, @NonNull Throwable throwable) Called after aHttpServerinstance was asked to stop, but failed due to an exception.default voiddidFailToStopMcpServer(@NonNull McpServer mcpServer, @NonNull Throwable throwable) Called after anMcpServerinstance was asked to stop, but failed due to an exception.default voiddidFailToStopSoklet(@NonNull Soklet soklet, @NonNull Throwable throwable) Called after aSokletinstance was asked to stop, but failed due to an exception.default voiddidFailToStopSseServer(@NonNull SseServer sseServer, @NonNull Throwable throwable) Called after aSseServerinstance was asked to stop, but failed due to an exception.default voiddidFailToWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration, @NonNull Throwable throwable) Called after response data fails to write.default voiddidFailToWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration, @NonNull Throwable throwable) Called after an SSE comment fails to write.default voiddidFailToWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration, @NonNull Throwable throwable) Called after an SSE event fails to write.default voiddidFinishMcpRequestHandling(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @Nullable String sessionId, @NonNull String jsonRpcMethod, @Nullable McpJsonRpcRequestId jsonRpcRequestId, @NonNull McpRequestOutcome requestOutcome, @Nullable McpJsonRpcError jsonRpcError, @NonNull Duration duration, @NonNull List<@NonNull Throwable> throwables) Called after MCP JSON-RPC request handling finishes.default voiddidFinishRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration duration, @NonNull List<@NonNull Throwable> throwables) Called after a request finishes processing.default voiddidReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called when a request was successfully read or parsed into a validRequest.default voiddidReceiveLogEvent(@NonNull LogEvent logEvent) Called when Soklet emits a log event.default voiddidStartHttpServer(@NonNull HttpServer httpServer) Called after the server starts.default voiddidStartMcpRequestHandling(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @Nullable String sessionId, @NonNull String jsonRpcMethod, @Nullable McpJsonRpcRequestId jsonRpcRequestId) Called after a valid MCP JSON-RPC request begins handling.default voiddidStartMcpServer(@NonNull McpServer mcpServer) Called after the MCP server starts.default voiddidStartRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod) Called as soon as a request is received and a Resource Method has been resolved to handle it.default voiddidStartSoklet(@NonNull Soklet soklet) Called after aSokletinstance starts.default voiddidStartSseServer(@NonNull SseServer sseServer) Called after the SSE server starts.default voiddidStopHttpServer(@NonNull HttpServer httpServer) Called after the server stops.default voiddidStopMcpServer(@NonNull McpServer mcpServer) Called after the MCP server stops.default voiddidStopSoklet(@NonNull Soklet soklet) Called after aSokletinstance stops.default voiddidStopSseServer(@NonNull SseServer sseServer) Called after the SSE server stops.default voiddidTerminateMcpSession(@NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId, @NonNull Duration sessionDuration, @NonNull McpSessionTerminationReason terminationReason, @Nullable Throwable throwable) Called after an MCP session is terminated.default voiddidTerminateMcpSseStream(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId, @NonNull Duration connectionDuration, @NonNull McpStreamTerminationReason terminationReason, @Nullable Throwable throwable) Called after an MCP GET stream is terminated.default voiddidTerminateSseConnection(@NonNull SseConnection sseConnection, @NonNull Duration connectionDuration, @NonNull SseConnection.TerminationReason terminationReason, @Nullable Throwable throwable) Called after an SSE connection is terminated.default voiddidWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration) Called after response data is written.default voiddidWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration) Called after an SSE comment is written.default voiddidWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration) Called after an SSE event is written.default voidwillAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress) Called when a server is about to accept a new TCP connection.default voidwillAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called when a request is about to be accepted for application-level handling.default voidwillEstablishSseConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod) Called before an SSE connection is established.default voidwillReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called when Soklet is about to read or parse a request into a validRequest.default voidwillStartHttpServer(@NonNull HttpServer httpServer) Called before the server starts.default voidwillStartMcpServer(@NonNull McpServer mcpServer) Called before the MCP server starts.default voidwillStartSoklet(@NonNull Soklet soklet) Called before aSokletinstance starts.default voidwillStartSseServer(@NonNull SseServer sseServer) Called before the SSE server starts.default voidwillStopHttpServer(@NonNull HttpServer httpServer) Called before the server stops.default voidwillStopMcpServer(@NonNull McpServer mcpServer) Called before the MCP server stops.default voidwillStopSoklet(@NonNull Soklet soklet) Called before aSokletinstance stops.default voidwillStopSseServer(@NonNull SseServer sseServer) Called before the SSE server stops.default voidwillTerminateMcpSseStream(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId, @NonNull McpStreamTerminationReason terminationReason, @Nullable Throwable throwable) Called before an MCP GET stream is terminated.default voidwillTerminateSseConnection(@NonNull SseConnection sseConnection, @NonNull SseConnection.TerminationReason terminationReason, @Nullable Throwable throwable) Called before an SSE connection is terminated.default voidwillWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse) Called before response data is written.default voidwillWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment) Called before an SSE comment is written.default voidwillWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent) Called before an SSE event is written.
-
Method Details
-
willStartSoklet
Called before aSokletinstance starts. -
didStartSoklet
Called after aSokletinstance starts. -
didFailToStartSoklet
-
willStopSoklet
Called before aSokletinstance stops. -
didStopSoklet
Called after aSokletinstance stops. -
didFailToStopSoklet
-
willStartHttpServer
Called before the server starts. -
didStartHttpServer
Called after the server starts. -
didFailToStartHttpServer
Called after aHttpServerinstance was asked to start, but failed due to an exception. -
willStopHttpServer
Called before the server stops. -
didStopHttpServer
Called after the server stops. -
didFailToStopHttpServer
Called after aHttpServerinstance was asked to stop, but failed due to an exception. -
willAcceptConnection
default void willAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress) Called when a server is about to accept a new TCP connection.- Parameters:
serverType- the server type that is accepting the connectionremoteAddress- the best-effort remote address, ornullif unavailable
-
didAcceptConnection
default void didAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress) Called after a server accepts a new TCP connection.- Parameters:
serverType- the server type that accepted the connectionremoteAddress- the best-effort remote address, ornullif unavailable
-
didFailToAcceptConnection
default void didFailToAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @NonNull ConnectionRejectionReason reason, @Nullable Throwable throwable) Called after a server fails to accept a new TCP connection.- Parameters:
serverType- the server type that failed to accept the connectionremoteAddress- the best-effort remote address, ornullif unavailablereason- the failure reasonthrowable- an optional underlying cause, ornullif not applicable
-
willAcceptRequest
default void willAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called when a request is about to be accepted for application-level handling.- Parameters:
serverType- the server type that received the requestremoteAddress- the best-effort remote address, ornullif unavailablerequestTarget- the raw request target (path + query) if known, ornullif unavailable
-
didAcceptRequest
default void didAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called after a request is accepted for application-level handling.- Parameters:
serverType- the server type that received the requestremoteAddress- the best-effort remote address, ornullif unavailablerequestTarget- the raw request target (path + query) if known, ornullif unavailable
-
didFailToAcceptRequest
default void didFailToAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestRejectionReason reason, @Nullable Throwable throwable) Called when a request fails to be accepted before application-level handling begins.- Parameters:
serverType- the server type that received the requestremoteAddress- the best-effort remote address, ornullif unavailablerequestTarget- the raw request target (path + query) if known, ornullif unavailablereason- the rejection reasonthrowable- an optional underlying cause, ornullif not applicable
-
willReadRequest
default void willReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called when Soklet is about to read or parse a request into a validRequest.- Parameters:
serverType- the server type that received the requestremoteAddress- the best-effort remote address, ornullif unavailablerequestTarget- the raw request target (path + query) if known, ornullif unavailable
-
didReadRequest
default void didReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) Called when a request was successfully read or parsed into a validRequest.- Parameters:
serverType- the server type that received the requestremoteAddress- the best-effort remote address, ornullif unavailablerequestTarget- the raw request target (path + query) if known, ornullif unavailable
-
didFailToReadRequest
default void didFailToReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestReadFailureReason reason, @Nullable Throwable throwable) Called when a request could not be read or parsed into a validRequest.- Parameters:
serverType- the server type that received the requestremoteAddress- the best-effort remote address, ornullif unavailablerequestTarget- the raw request target (path + query) if known, ornullif unavailablereason- the failure reasonthrowable- an optional underlying cause, ornullif not applicable
-
didStartRequestHandling
default void didStartRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod) Called as soon as a request is received and a Resource Method has been resolved to handle it.- Parameters:
serverType- the server type that received the request
-
didFinishRequestHandling
default void didFinishRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration duration, @NonNull List<@NonNull Throwable> throwables) Called after a request finishes processing. -
willWriteResponse
default void willWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse) Called before response data is written. -
didWriteResponse
default void didWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration) Called after response data is written. -
didFailToWriteResponse
default void didFailToWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration, @NonNull Throwable throwable) Called after response data fails to write. -
willStartMcpServer
Called before the MCP server starts. -
didStartMcpServer
Called after the MCP server starts. -
didFailToStartMcpServer
-
willStopMcpServer
Called before the MCP server stops. -
didStopMcpServer
Called after the MCP server stops. -
didFailToStopMcpServer
-
didCreateMcpSession
default void didCreateMcpSession(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId) Called after an MCP session is durably created. -
didTerminateMcpSession
default void didTerminateMcpSession(@NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId, @NonNull Duration sessionDuration, @NonNull McpSessionTerminationReason terminationReason, @Nullable Throwable throwable) Called after an MCP session is terminated. -
didStartMcpRequestHandling
default void didStartMcpRequestHandling(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @Nullable String sessionId, @NonNull String jsonRpcMethod, @Nullable McpJsonRpcRequestId jsonRpcRequestId) Called after a valid MCP JSON-RPC request begins handling. -
didFinishMcpRequestHandling
default void didFinishMcpRequestHandling(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @Nullable String sessionId, @NonNull String jsonRpcMethod, @Nullable McpJsonRpcRequestId jsonRpcRequestId, @NonNull McpRequestOutcome requestOutcome, @Nullable McpJsonRpcError jsonRpcError, @NonNull Duration duration, @NonNull List<@NonNull Throwable> throwables) Called after MCP JSON-RPC request handling finishes. -
didEstablishMcpSseStream
default void didEstablishMcpSseStream(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId) Called after an MCP GET stream is established. -
willTerminateMcpSseStream
default void willTerminateMcpSseStream(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId, @NonNull McpStreamTerminationReason terminationReason, @Nullable Throwable throwable) Called before an MCP GET stream is terminated. -
didTerminateMcpSseStream
default void didTerminateMcpSseStream(@NonNull Request request, @NonNull Class<? extends McpEndpoint> endpointClass, @NonNull String sessionId, @NonNull Duration connectionDuration, @NonNull McpStreamTerminationReason terminationReason, @Nullable Throwable throwable) Called after an MCP GET stream is terminated. -
willStartSseServer
Called before the SSE server starts. -
didStartSseServer
Called after the SSE server starts. -
didFailToStartSseServer
-
willStopSseServer
Called before the SSE server stops. -
didStopSseServer
Called after the SSE server stops. -
didFailToStopSseServer
-
willEstablishSseConnection
default void willEstablishSseConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod) Called before an SSE connection is established. -
didEstablishSseConnection
Called after an SSE connection is established. -
didFailToEstablishSseConnection
default void didFailToEstablishSseConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull SseConnection.HandshakeFailureReason reason, @Nullable Throwable throwable) Called if an SSE connection fails to establish.- Parameters:
reason- the handshake failure reasonthrowable- an optional underlying cause, ornullif not applicable
-
willTerminateSseConnection
default void willTerminateSseConnection(@NonNull SseConnection sseConnection, @NonNull SseConnection.TerminationReason terminationReason, @Nullable Throwable throwable) Called before an SSE connection is terminated. -
didTerminateSseConnection
default void didTerminateSseConnection(@NonNull SseConnection sseConnection, @NonNull Duration connectionDuration, @NonNull SseConnection.TerminationReason terminationReason, @Nullable Throwable throwable) Called after an SSE connection is terminated. -
willWriteSseEvent
Called before an SSE event is written. -
didWriteSseEvent
default void didWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration) Called after an SSE event is written. -
didFailToWriteSseEvent
default void didFailToWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration, @NonNull Throwable throwable) Called after an SSE event fails to write. -
willWriteSseComment
default void willWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment) Called before an SSE comment is written. -
didWriteSseComment
default void didWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration) Called after an SSE comment is written. -
didFailToWriteSseComment
default void didFailToWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration, @NonNull Throwable throwable) Called after an SSE comment fails to write. -
didReceiveLogEvent
Called when Soklet emits a log event. -
defaultInstance
Acquires a threadsafeLifecycleObserverinstance with sensible defaults.- Returns:
- a
LifecycleObserverwith default settings
-