Skip to content

Upgrading org.eclipse.jetty:jetty-server 9 to 10

Breaking9.4.58.v20250814 → 10.0.26Breaking1Security4Deprecated2New3Changed7Fixed17Other3

Fetching 34 releases from GitHub…9 / 34
BreakingUpgrade verdict

1 breaking change and 4 security fixes.

  • Code that changed HTTP response headers inside the onResponseBegin listener callback will no longer work.
  • Internal HTTP/2 session handling is cleaned up to fix a security vulnerability.
  • Eclipse Jetty's ThreadLimitHandler.getRemote() vulnerable to remote DoS attacks
  • Eclipse Jetty: DoS attack triggering OutOfMemory with 100-Continue requests
Top 5 of 7 that need code or config changes

Adds org.eclipse.jetty.toolchain:jetty-servlet-api 4.0.6, org.slf4j:slf4j-api 2.0.13.

Drops javax.servlet:javax.servlet-api.

Installs 5 packages in all (was 4).

Breaking1
Modifying HTTP headers in HttpChannel.Listener#onResponseBegin is no longer possible with Jetty 10.
HttpChannel.Listener#onResponseBegin
Security4
HTTP2Session cleanups that address CVE-2025-5115.
HTTP2Session
Eclipse Jetty's ThreadLimitHandler.getRemote() vulnerable to remote DoS attacks
Moderate · CVSS 5.9
Eclipse Jetty: DoS attack triggering OutOfMemory with 100-Continue requests
High · CVSS 7.5
Fixes CVE-2024-22201, where HTTP/2 connections are not closed after idle timeout when TCP is congested.
Deprecated2
Better documents the deprecation of ContextHandler.setCompactPath(boolean).
ContextHandler.setCompactPath(boolean)
Deprecates PushCacheFilter.
PushCacheFilter

Generated by DepDelta from published JVM bytecode. Not mixed with prose notes.

  • removed: class AbstractNCSARequestLog extends ContainerLifeCycle implements RequestLog
  • removed: class AsyncNCSARequestLog extends NCSARequestLog
  • removed: class ConnectorStatistics extends AbstractLifeCycle implements Dumpable, Connection.Listener
  • removed: class CookieCutter
  • removed: class HttpInputOverHTTP extends HttpInput
  • removed: class MultiPartCleanerListener implements ServletRequestListener
  • removed: class NCSARequestLog extends AbstractNCSARequestLog
  • removed: class Slf4jRequestLog extends AbstractNCSARequestLog
  • removed: ctor AbstractNCSARequestLog(RequestLog.Writer)
  • removed: ctor AsyncNCSARequestLog()
  • removed: ctor AsyncNCSARequestLog(String, BlockingQueue)
  • removed: ctor ConnectorStatistics()
  • removed: ctor CookieCutter()
  • removed: ctor CookieCutter(CookieCompliance)
  • removed: ctor HttpConnectionFactory(HttpConfiguration, HttpCompliance)
  • removed: ctor HttpInput.ChainedInterceptor(HttpInput.Interceptor, HttpInput.Interceptor)
  • removed: ctor HttpInput.EOFState()
  • removed: ctor HttpInput.SentinelContent(String)
  • removed: ctor HttpInput.State()
  • removed: ctor HttpInputOverHTTP(HttpChannelState)
  • removed: ctor MultiPartCleanerListener()
  • removed: ctor NCSARequestLog()
  • removed: ctor NCSARequestLog(RequestLogWriter)
  • removed: ctor NCSARequestLog(String)
  • removed: ctor Slf4jRequestLog()
  • removed: ctor Slf4jRequestLog(Slf4jRequestLogWriter)
  • removed: field AbstractNCSARequestLog._requestLogWriter: RequestLog.Writer
  • removed: interface PushBuilder
  • removed: method AbstractNCSARequestLog.doStart(): void
  • removed: method AbstractNCSARequestLog.doStop(): void
  • removed: method AbstractNCSARequestLog.getAuthentication(Request): String
  • removed: method AbstractNCSARequestLog.getIgnorePaths(): String[]
  • removed: method AbstractNCSARequestLog.getLogCookies(): boolean
  • removed: method AbstractNCSARequestLog.getLogDateFormat(): String
  • removed: method AbstractNCSARequestLog.getLogLatency(): boolean
  • removed: method AbstractNCSARequestLog.getLogLocale(): Locale
  • removed: method AbstractNCSARequestLog.getLogServer(): boolean
  • removed: method AbstractNCSARequestLog.getLogTimeZone(): String
  • removed: method AbstractNCSARequestLog.getPreferProxiedForAddress(): boolean
  • removed: method AbstractNCSARequestLog.isEnabled(): boolean
  • removed: method AbstractNCSARequestLog.isExtended(): boolean
  • removed: method AbstractNCSARequestLog.isLogDispatch(): boolean
  • removed: method AbstractNCSARequestLog.log(Request, Response): void
  • removed: method AbstractNCSARequestLog.logExtended(StringBuilder, Request, Response): void
  • removed: method AbstractNCSARequestLog.setExtended(boolean): void
  • removed: method AbstractNCSARequestLog.setIgnorePaths(String[]): void
  • removed: method AbstractNCSARequestLog.setLogCookies(boolean): void
  • removed: method AbstractNCSARequestLog.setLogDateFormat(String): void
  • removed: method AbstractNCSARequestLog.setLogDispatch(boolean): void
  • removed: method AbstractNCSARequestLog.setLogLatency(boolean): void
  • removed: method AbstractNCSARequestLog.setLogLocale(Locale): void
  • removed: method AbstractNCSARequestLog.setLogServer(boolean): void
  • removed: method AbstractNCSARequestLog.setLogTimeZone(String): void
  • removed: method AbstractNCSARequestLog.setPreferProxiedForAddress(boolean): void
  • removed: method AbstractNCSARequestLog.write(String): void
  • removed: method AsyncContextEvent.getPath(): String
  • removed: method Authentication.User.logout(): void
  • removed: method CachedContentFactory.lookup(String): HttpContent
  • removed: method ConnectorStatistics.doStart(): void
  • removed: method ConnectorStatistics.doStop(): void
  • removed: method ConnectorStatistics.dump(): String
  • removed: method ConnectorStatistics.dump(Appendable, String): void
  • removed: method ConnectorStatistics.getBytesIn(): int
  • removed: method ConnectorStatistics.getBytesOut(): int
  • removed: method ConnectorStatistics.getConnectionDurationMax(): long
  • removed: method ConnectorStatistics.getConnectionDurationMean(): double
  • removed: method ConnectorStatistics.getConnectionDurationStdDev(): double
  • removed: method ConnectorStatistics.getConnections(): int
  • removed: method ConnectorStatistics.getConnectionsOpen(): int
  • removed: method ConnectorStatistics.getConnectionsOpenMax(): int
  • removed: method ConnectorStatistics.getMessagesIn(): int
  • removed: method ConnectorStatistics.getMessagesInPerConnectionMax(): int
  • removed: method ConnectorStatistics.getMessagesInPerConnectionMean(): double
  • removed: method ConnectorStatistics.getMessagesInPerConnectionStdDev(): double
  • removed: method ConnectorStatistics.getMessagesInPerSecond(): int
  • removed: method ConnectorStatistics.getMessagesOut(): int
  • removed: method ConnectorStatistics.getMessagesOutPerConnectionMax(): int
  • removed: method ConnectorStatistics.getMessagesOutPerConnectionMean(): double
  • removed: method ConnectorStatistics.getMessagesOutPerConnectionStdDev(): double
  • removed: method ConnectorStatistics.getMessagesOutPerSecond(): int
  • removed: method ConnectorStatistics.getStartedMillis(): long
  • removed: method ConnectorStatistics.onClosed(Connection): void
  • removed: method ConnectorStatistics.onOpened(Connection): void
  • removed: method ConnectorStatistics.reset(): void
  • removed: method CookieCutter.addCookieField(String): void
  • removed: method CookieCutter.getCookies(): Cookie[]
  • removed: method CookieCutter.isRFC6265RejectedCharacter(boolean, char): boolean
  • removed: method CookieCutter.parseFields(): void
  • removed: method CookieCutter.reset(): void
  • removed: method CookieCutter.setCookies(Cookie[]): void
  • removed: method HttpChannel.isOptimizedForDirectBuffers(): boolean
  • removed: method HttpChannel.newHttpInput(HttpChannelState): HttpInput
  • removed: method HttpChannel.onAsyncWaitForContent(): void
  • removed: method HttpChannel.onBlockWaitForContent(): void
  • removed: method HttpChannel.onBlockWaitForContentFailure(Throwable): void
  • removed: method HttpChannel.onEarlyEOF(): boolean
  • removed: method HttpChannel.useDirectBuffers(): boolean
  • removed: method HttpChannelOverHttp.getHeaderCacheSize(): int
  • removed: method HttpChannelOverHttp.newHttpInput(HttpChannelState): HttpInput
  • removed: method HttpChannelOverHttp.onAsyncWaitForContent(): void
  • removed: method HttpChannelOverHttp.onBlockWaitForContent(): void
  • removed: method HttpChannelOverHttp.onBlockWaitForContentFailure(Throwable): void
  • removed: method HttpChannelState.onReadPossible(): boolean
  • removed: method HttpConfiguration.getBlockingTimeout(): long
  • removed: method HttpConfiguration.getCookieCompliance(): CookieCompliance
  • removed: method HttpConfiguration.isCookieCompliance(CookieCompliance): boolean
  • removed: method HttpConfiguration.setBlockingTimeout(long): void
  • removed: method HttpConfiguration.setCookieCompliance(CookieCompliance): void
  • removed: method HttpConnection.blockingReadFailure(Throwable): void
  • removed: method HttpConnection.blockingReadFillInterested(): void
  • removed: method HttpConnection.fillAndParseForContent(): boolean
  • removed: method HttpConnection.getHttpCompliance(): HttpCompliance
  • removed: method HttpConnection.getRequestBuffer(): ByteBuffer
  • removed: method HttpConnection.isOptimizedForDirectBuffers(): boolean
  • removed: method HttpConnectionFactory.getHttpCompliance(): HttpCompliance
  • removed: method HttpConnectionFactory.setHttpCompliance(HttpCompliance): void
  • removed: method HttpInput.ChainedInterceptor.destroy(): void
  • removed: method HttpInput.ChainedInterceptor.getNext(): HttpInput.Interceptor
  • removed: method HttpInput.ChainedInterceptor.getPrev(): HttpInput.Interceptor
  • removed: method HttpInput.ChainedInterceptor.readFrom(HttpInput.Content): HttpInput.Content
  • removed: method HttpInput.ErrorState.getError(): Throwable
  • removed: method HttpInput.ErrorState.noContent(): int
  • removed: method HttpInput.ErrorState.toString(): String
  • removed: method HttpInput.SentinelContent.toString(): String
  • removed: method HttpInput.State.blockForContent(HttpInput): boolean
  • removed: method HttpInput.State.getError(): Throwable
  • removed: method HttpInput.State.noContent(): int
  • removed: method HttpInput.addContent(HttpInput.Content): boolean
  • removed: method HttpInput.asyncReadProduce(): void
  • removed: method HttpInput.blockForContent(): void
  • removed: method HttpInput.earlyEOF(): boolean
  • removed: method HttpInput.eof(): boolean
  • removed: method HttpInput.failed(Throwable): boolean
  • removed: method HttpInput.get(HttpInput.Content, byte[], int, int): int
  • removed: method HttpInput.getHttpChannelState(): HttpChannelState
  • removed: method HttpInput.nextContent(): HttpInput.Content
  • removed: method HttpInput.nextInterceptedContent(): HttpInput.Content
  • removed: method HttpInput.nextNonSentinelContent(): HttpInput.Content
  • removed: method HttpInput.onIdleTimeout(Throwable): boolean
  • removed: method HttpInput.produceContent(): void
  • removed: method HttpInput.produceNextContent(): HttpInput.Content
  • removed: method HttpInput.unblock(): void
  • removed: method HttpInput.wake(): void
  • removed: method HttpInputOverHTTP.produceContent(): void
  • removed: method HttpOutput.Interceptor.isOptimizedForDirectBuffers(): boolean
  • removed: method HttpOutput.println(boolean): void
  • removed: method HttpOutput.println(char): void
  • removed: method HttpOutput.println(double): void
  • removed: method HttpOutput.println(float): void
  • removed: method HttpOutput.println(int): void
  • removed: method HttpOutput.println(long): void
  • removed: method HttpTransport.isOptimizedForDirectBuffers(): boolean
  • removed: method LocalConnector.getResponses(ByteBuffer): ByteBuffer
  • removed: method LocalConnector.getResponses(ByteBuffer, long, TimeUnit): ByteBuffer
  • removed: method LocalConnector.getResponses(String): String
  • removed: method LocalConnector.getResponses(String, long, TimeUnit): String
  • removed: method LowResourceMonitor.MaxConnectionsLowResourceCheck.getMaxConnections(): int
  • removed: method LowResourceMonitor.MaxConnectionsLowResourceCheck.setMaxConnections(int): void
  • removed: method LowResourceMonitor.getMaxConnections(): int
  • removed: method LowResourceMonitor.setMaxConnections(int): void
  • removed: method MultiPartCleanerListener.requestDestroyed(ServletRequestEvent): void
  • removed: method MultiPartCleanerListener.requestInitialized(ServletRequestEvent): void
  • removed: method NCSARequestLog.doStart(): void
  • removed: method NCSARequestLog.doStop(): void
  • removed: method NCSARequestLog.getDatedFilename(): String
  • removed: method NCSARequestLog.getFilename(): String
  • removed: method NCSARequestLog.getFilenameDateFormat(): String
  • removed: method NCSARequestLog.getRetainDays(): int
  • removed: method NCSARequestLog.isAppend(): boolean
  • removed: method NCSARequestLog.isEnabled(): boolean
  • removed: method NCSARequestLog.setAppend(boolean): void
  • removed: method NCSARequestLog.setFilename(String): void
  • removed: method NCSARequestLog.setFilenameDateFormat(String): void
  • removed: method NCSARequestLog.setLogTimeZone(String): void
  • removed: method NCSARequestLog.setRetainDays(int): void
  • removed: method NCSARequestLog.write(String): void
  • removed: method NetworkTrafficServerConnector.addNetworkTrafficListener(NetworkTrafficListener): void
  • removed: method NetworkTrafficServerConnector.removeNetworkTrafficListener(NetworkTrafficListener): void
  • removed: method ProxyConnectionFactory.ProxyEndPoint.isOptimizedForDirectBuffers(): boolean
  • removed: method PushBuilder.addHeader(String, String): PushBuilder
  • removed: method PushBuilder.conditional(boolean): PushBuilder
  • removed: method PushBuilder.etag(String): PushBuilder
  • removed: method PushBuilder.getEtag(): String
  • removed: method PushBuilder.getHeader(String): String
  • removed: method PushBuilder.getHeaderNames(): Set
  • removed: method PushBuilder.getLastModified(): String
  • removed: method PushBuilder.getMethod(): String
  • removed: method PushBuilder.getPath(): String
  • removed: method PushBuilder.getQueryString(): String
  • removed: method PushBuilder.getSessionId(): String
  • removed: method PushBuilder.isConditional(): boolean
  • removed: method PushBuilder.lastModified(String): PushBuilder
  • removed: method PushBuilder.method(String): PushBuilder
  • removed: method PushBuilder.path(String): PushBuilder
  • removed: method PushBuilder.push(): void
  • removed: method PushBuilder.queryString(String): PushBuilder
  • removed: method PushBuilder.removeHeader(String): PushBuilder
  • removed: method PushBuilder.sessionId(String): PushBuilder
  • removed: method PushBuilder.setHeader(String, String): PushBuilder
  • removed: method PushBuilderImpl.conditional(boolean): PushBuilder
  • removed: method PushBuilderImpl.etag(String): PushBuilder
  • removed: method PushBuilderImpl.getEtag(): String
  • removed: method PushBuilderImpl.getLastModified(): String
  • removed: method PushBuilderImpl.isConditional(): boolean
  • removed: method PushBuilderImpl.lastModified(String): PushBuilder
  • removed: method Request.getPushBuilder(): PushBuilder
  • removed: method Request.getTrailers(): HttpFields
  • removed: method Request.setAuthority(String, int): void
  • removed: method Request.setContextPath(String): void
  • removed: method Request.setHttpVersion(HttpVersion): void
  • removed: method Request.setPathInfo(String): void
  • removed: method Request.setQueryString(String): void
  • removed: method Request.setScheme(String): void
  • removed: method Request.setServletPath(String): void
  • removed: method Request.setURIPathQuery(String): void
  • removed: method RequestLogWriter.isEnabled(): boolean
  • removed: method ServerConnector.configure(Socket): void
  • removed: method ServerConnector.getSoLingerTime(): int
  • removed: method ServerConnector.setSoLingerTime(int): void
  • removed: method Slf4jRequestLog.getLoggerName(): String
  • removed: method Slf4jRequestLog.isEnabled(): boolean
  • removed: method Slf4jRequestLog.setLoggerName(String): void
  • removed: method Slf4jRequestLog.write(String): void
  • removed: static abstract class HttpInput.State
  • removed: static class HttpInput.ChainedInterceptor implements HttpInput.Interceptor, Destroyable
  • removed: static class HttpInput.EOFState extends HttpInput.State
  • removed: static class HttpInput.ErrorState extends HttpInput.EOFState
  • removed: static class HttpInput.SentinelContent extends HttpInput.Content
  • removed: static field AbstractNCSARequestLog.LOG: Logger
  • removed: static field HttpChannelState.Action.READ_PRODUCE: HttpChannelState.Action
  • removed: static field HttpChannelState.Action.READ_REGISTER: HttpChannelState.Action
  • removed: static field HttpConnection.UPGRADE_CONNECTION_ATTRIBUTE: String
  • removed: static field HttpInput.AEOF: HttpInput.State
  • removed: static field HttpInput.ASYNC: HttpInput.State
  • removed: static field HttpInput.EARLY_EOF: HttpInput.State
  • removed: static field HttpInput.EOF: HttpInput.State
  • removed: static field HttpInput.STREAM: HttpInput.State
  • removed: static field MultiPartCleanerListener.INSTANCE: MultiPartCleanerListener
  • removed: static field Request.MULTIPARTS: String
  • removed: static field Request.MULTIPART_CONFIG_ELEMENT: String
  • removed: static method ConnectorStatistics.addToAllConnectors(Server): void
  • changed: class HttpChannel implements Runnable, HttpOutput.Interceptor → abstract class HttpChannel implements Runnable, HttpOutput.Interceptor
  • changed: class HttpChannelOverHttp extends HttpChannel implements HttpParser.RequestHandler, HttpParser.ComplianceHandler → class HttpChannelOverHttp extends HttpChannel implements HttpParser.RequestHandler, ComplianceViolation.Listener
  • changed: class SslConnectionFactory extends AbstractConnectionFactory implements ConnectionFactory.Detecting → class SslConnectionFactory extends AbstractConnectionFactory implements ConnectionFactory.Detecting, ConnectionFactory.Configuring
  • changed: ctor HttpConnection(HttpConfiguration, Connector, EndPoint, HttpCompliance, boolean) → ctor HttpConnection(HttpConfiguration, Connector, EndPoint, boolean)
  • changed: ctor LocalConnector(Server, ConnectionFactory, SslContextFactory) → ctor LocalConnector(Server, ConnectionFactory, SslContextFactory.Server)
  • changed: ctor LocalConnector(Server, SslContextFactory) → ctor LocalConnector(Server, SslContextFactory.Server)
  • changed: ctor NetworkTrafficServerConnector(Server, ConnectionFactory, SslContextFactory) → ctor NetworkTrafficServerConnector(Server, ConnectionFactory, SslContextFactory.Server)
  • changed: ctor NetworkTrafficServerConnector(Server, SslContextFactory) → ctor NetworkTrafficServerConnector(Server, SslContextFactory.Server)
  • changed: ctor PushBuilderImpl(Request, HttpFields, String, String, String, boolean) → ctor PushBuilderImpl(Request, HttpFields, String, String, String)
  • changed: ctor ServerConnector(Server, SslContextFactory) → ctor ServerConnector(Server, SslContextFactory.Server)
  • changed: ctor ServerConnector(Server, SslContextFactory, ConnectionFactory[]) → ctor ServerConnector(Server, SslContextFactory.Server, ConnectionFactory[])
  • changed: ctor ServerConnector(Server, int, int, SslContextFactory) → ctor ServerConnector(Server, int, int, SslContextFactory.Server)
  • changed: ctor SslConnectionFactory(SslContextFactory, String) → ctor SslConnectionFactory(SslContextFactory.Server, String)
  • changed: method AbstractConnector.shutdown(): Future → method AbstractConnector.shutdown(): CompletableFuture
  • changed: method AbstractNetworkConnector.shutdown(): Future → method AbstractNetworkConnector.shutdown(): CompletableFuture
  • changed: method ConnectionFactory.Upgrading.upgradeConnection(Connector, EndPoint, MetaData.Request, HttpFields): Connection → method ConnectionFactory.Upgrading.upgradeConnection(Connector, EndPoint, MetaData.Request, HttpFields.Mutable): Connection
  • changed: method HttpChannelOverHttp.onComplianceViolation(HttpCompliance, HttpComplianceSection, String): void → method HttpChannelOverHttp.onComplianceViolation(ComplianceViolation.Mode, ComplianceViolation, String): void
  • changed: method HttpChannelOverHttp.startRequest(String, String, HttpVersion): boolean → method HttpChannelOverHttp.startRequest(String, String, HttpVersion): void
  • changed: method HttpChannelState.onContentAdded(): boolean → method HttpChannelState.onContentAdded(): void
  • changed: method HttpConnection.onClose(): void → method HttpConnection.onClose(Throwable): void
  • changed: method HttpConnection.send(MetaData.Response, boolean, ByteBuffer, boolean, Callback): void → method HttpConnection.send(MetaData.Request, MetaData.Response, ByteBuffer, boolean, Callback): void
  • changed: method HttpTransport.send(MetaData.Response, boolean, ByteBuffer, boolean, Callback): void → method HttpTransport.send(MetaData.Request, MetaData.Response, ByteBuffer, boolean, Callback): void
  • changed: method LocalConnector.LocalEndPoint.onClose(): void → method LocalConnector.LocalEndPoint.onClose(Throwable): void
  • changed: method NetworkTrafficServerConnector.newEndPoint(SocketChannel, ManagedSelector, SelectionKey): ChannelEndPoint → method NetworkTrafficServerConnector.newEndPoint(SocketChannel, ManagedSelector, SelectionKey): SocketChannelEndPoint
  • changed: method ProxyConnectionFactory.ProxyEndPoint.close(): void → method ProxyConnectionFactory.ProxyEndPoint.close(Throwable): void
  • changed: method ProxyConnectionFactory.ProxyEndPoint.onClose(): void → method ProxyConnectionFactory.ProxyEndPoint.onClose(Throwable): void
  • changed: method Request.mergeQueryParameters(String, String, boolean): void → method Request.mergeQueryParameters(String, String): void
  • changed: method Request.setContext(ContextHandler.Context): void → method Request.setContext(ContextHandler.Context, String): void
  • changed: method Response.getHttpFields(): HttpFields → method Response.getHttpFields(): HttpFields.Mutable
  • changed: method ServerConnector.ServerConnectorManager.newEndPoint(SelectableChannel, ManagedSelector, SelectionKey): ChannelEndPoint → method ServerConnector.ServerConnectorManager.newEndPoint(SelectableChannel, ManagedSelector, SelectionKey): SocketChannelEndPoint
  • changed: method ServerConnector.newEndPoint(SocketChannel, ManagedSelector, SelectionKey): ChannelEndPoint → method ServerConnector.newEndPoint(SocketChannel, ManagedSelector, SelectionKey): SocketChannelEndPoint
  • changed: method ServletAttributes.setAsyncAttributes(String, String, String, String, String): void → method ServletAttributes.setAsyncAttributes(String, String, String, ServletPathMapping, String): void
  • changed: method SslConnectionFactory.getSslContextFactory(): SslContextFactory → method SslConnectionFactory.getSslContextFactory(): SslContextFactory.Server
  • changed: static class HttpInput.EofContent extends HttpInput.SentinelContent → static final class HttpInput.EofContent extends HttpInput.SpecialContent
  • changed: static class ProxyConnectionFactory.ProxyEndPoint extends AttributesMap implements EndPoint → static class ProxyConnectionFactory.ProxyEndPoint extends AttributesMap implements EndPoint, EndPoint.Wrapper
  • changed: static method AbstractConnectionFactory.getFactories(SslContextFactory, ConnectionFactory[]): ConnectionFactory[] → static method AbstractConnectionFactory.getFactories(SslContextFactory.Server, ConnectionFactory[]): ConnectionFactory[]
  • added: class Cookies implements CookieParser.Handler
  • added: class MultiPartFormInputStream
  • added: class MultiPartFormInputStream.MultiPart implements Part
  • added: class MultiPartInputStreamParser
  • added: class MultiPartInputStreamParser.MultiPart implements Part
  • added: class MultiPartParser
  • added: class ServletPathMapping implements HttpServletMapping
  • added: class StateLifeCycleListener implements LifeCycle.Listener
  • added: ctor AllowedResourceAliasChecker(ContextHandler, Resource)
  • added: ctor AllowedResourceAliasChecker(ContextHandler, Supplier)
  • added: ctor AsyncContextEvent(ContextHandler.Context, AsyncContextState, HttpChannelState, Request, ServletRequest, ServletResponse, HttpURI)
  • added: ctor Cookies()
  • added: ctor Cookies(CookieCompliance, ComplianceViolation.Listener)
  • added: ctor CustomRequestLog()
  • added: ctor HostHeaderCustomizer()
  • added: ctor HttpInput.EofContent()
  • added: ctor HttpInput.ErrorContent(Throwable)
  • added: ctor HttpInput.SpecialContent()
  • added: ctor HttpInput.WrappingContent(HttpInput.Content, boolean)
  • added: ctor MultiPartFormInputStream(InputStream, String, MultipartConfigElement, File)
  • added: ctor MultiPartFormInputStream(InputStream, String, MultipartConfigElement, File, int)
  • added: ctor MultiPartFormInputStream.MultiPart(MultiPartFormInputStream, String, String)
  • added: ctor MultiPartInputStreamParser(InputStream, String, MultipartConfigElement, File)
  • added: ctor MultiPartInputStreamParser(InputStream, String, MultipartConfigElement, File, int)
  • added: ctor MultiPartInputStreamParser.MultiPart(MultiPartInputStreamParser, String, String)
  • added: ctor MultiPartParser(MultiPartParser.Handler, String)
  • added: ctor ProxyConnectionFactory.ProxyEndPoint(EndPoint, SocketAddress, SocketAddress)
  • added: ctor ServletPathMapping(PathSpec, String, String)
  • added: ctor ServletPathMapping(PathSpec, String, String, MatchedPath)
  • added: ctor StateLifeCycleListener(String)
  • added: ctor SymlinkAllowedResourceAliasChecker(ContextHandler, Resource)
  • added: enum MultiPartParser.FieldState
  • added: enum MultiPartParser.State
  • added: enum MultiParts.NonCompliance
  • added: field Cookies._cookieList: List
  • added: field Cookies._rawFields: List
  • added: field MultiPartFormInputStream.MultiPart._bout: ByteArrayOutputStream2
  • added: field MultiPartFormInputStream.MultiPart._contentType: String
  • added: field MultiPartFormInputStream.MultiPart._file: File
  • added: field MultiPartFormInputStream.MultiPart._filename: String
  • added: field MultiPartFormInputStream.MultiPart._headers: MultiMap
  • added: field MultiPartFormInputStream.MultiPart._name: String
  • added: field MultiPartFormInputStream.MultiPart._out: OutputStream
  • added: field MultiPartFormInputStream.MultiPart._size: long
  • added: field MultiPartFormInputStream.MultiPart._temporary: boolean
  • added: field MultiPartInputStreamParser.MultiPart._bout: ByteArrayOutputStream2
  • added: field MultiPartInputStreamParser.MultiPart._contentType: String
  • added: field MultiPartInputStreamParser.MultiPart._file: File
  • added: field MultiPartInputStreamParser.MultiPart._filename: String
  • added: field MultiPartInputStreamParser.MultiPart._headers: MultiMap
  • added: field MultiPartInputStreamParser.MultiPart._name: String
  • added: field MultiPartInputStreamParser.MultiPart._out: OutputStream
  • added: field MultiPartInputStreamParser.MultiPart._size: long
  • added: field MultiPartInputStreamParser.MultiPart._temporary: boolean
  • added: field MultiPartInputStreamParser._config: MultipartConfigElement
  • added: field MultiPartInputStreamParser._contentType: String
  • added: field MultiPartInputStreamParser._contextTmpDir: File
  • added: field MultiPartInputStreamParser._err: Exception
  • added: field MultiPartInputStreamParser._in: InputStream
  • added: field MultiPartInputStreamParser._parsed: boolean
  • added: field MultiPartInputStreamParser._parts: MultiMap
  • added: field MultiPartInputStreamParser._tmpDir: File
  • added: field MultiPartInputStreamParser._writeFilesWithFilenames: boolean
  • added: interface ConnectionFactory.Configuring extends ConnectionFactory
  • added: interface ContentProducer
  • added: interface MultiPartParser.Handler
  • added: method AbstractConnector.getShutdownIdleTimeout(): long
  • added: method AbstractConnector.setShutdownIdleTimeout(long): void
  • added: method AsyncContextEvent.getBaseURI(): HttpURI
  • added: method AsyncContextEvent.getDispatchPath(): String
  • added: method ConnectionFactory.Configuring.configure(Connector): void
  • added: method ContentProducer.available(): int
  • added: method ContentProducer.checkMinDataRate(): void
  • added: method ContentProducer.consumeAll(): boolean
  • added: method ContentProducer.getInterceptor(): HttpInput.Interceptor
  • added: method ContentProducer.getRawContentArrived(): long
  • added: method ContentProducer.hasContent(): boolean
  • added: method ContentProducer.isError(): boolean
  • added: method ContentProducer.isReady(): boolean
  • added: method ContentProducer.lock(): AutoLock
  • added: method ContentProducer.nextContent(): HttpInput.Content
  • added: method ContentProducer.onContentProducible(): boolean
  • added: method ContentProducer.reclaim(HttpInput.Content): void
  • added: method ContentProducer.recycle(): void
  • added: method ContentProducer.reopen(): void
  • added: method ContentProducer.setInterceptor(HttpInput.Interceptor): void
  • added: method Cookies.addCookie(String, String, int, String, String, String): void
  • added: method Cookies.addCookieField(String): void
  • added: method Cookies.getCookies(): Cookie[]
  • added: method Cookies.reset(): void
  • added: method Cookies.setCookies(Cookie[]): void
  • added: method CustomRequestLog.setFilter(BiPredicate): void
  • added: method HttpChannel.checkAndPrepareUpgrade(): boolean
  • added: method HttpChannel.eof(): boolean
  • added: method HttpChannel.failAllContent(Throwable): boolean
  • added: method HttpChannel.failed(Throwable): boolean
  • added: method HttpChannel.getTunnellingEndPoint(): EndPoint
  • added: method HttpChannel.isTunnellingSupported(): boolean
  • added: method HttpChannel.isUseInputDirectByteBuffers(): boolean
  • added: method HttpChannel.isUseOutputDirectByteBuffers(): boolean
  • added: method HttpChannel.needContent(): boolean
  • added: method HttpChannel.produceContent(): HttpInput.Content
  • added: method HttpChannel.sendErrorOrAbort(String): boolean
  • added: method HttpChannelOverHttp.checkAndPrepareUpgrade(): boolean
  • added: method HttpChannelOverHttp.eof(): boolean
  • added: method HttpChannelOverHttp.failAllContent(Throwable): boolean
  • added: method HttpChannelOverHttp.failed(Throwable): boolean
  • added: method HttpChannelOverHttp.getTunnellingEndPoint(): EndPoint
  • added: method HttpChannelOverHttp.isTunnellingSupported(): boolean
  • added: method HttpChannelOverHttp.isUseOutputDirectByteBuffers(): boolean
  • added: method HttpChannelOverHttp.needContent(): boolean
  • added: method HttpChannelOverHttp.produceContent(): HttpInput.Content
  • added: method HttpChannelOverHttp.servletUpgrade(): void
  • added: method HttpChannelState.isInputUnready(): boolean
  • added: method HttpChannelState.onReadIdle(): void
  • added: method HttpConfiguration.getHttpCompliance(): HttpCompliance
  • added: method HttpConfiguration.getUriCompliance(): UriCompliance
  • added: method HttpConfiguration.isHeaderCacheCaseSensitive(): boolean
  • added: method HttpConfiguration.isUseInputDirectByteBuffers(): boolean
  • added: method HttpConfiguration.isUseOutputDirectByteBuffers(): boolean
  • added: method HttpConfiguration.setHeaderCacheCaseSensitive(boolean): void
  • added: method HttpConfiguration.setHttpCompliance(HttpCompliance): void
  • added: method HttpConfiguration.setUriCompliance(UriCompliance): void
  • added: method HttpConfiguration.setUseInputDirectByteBuffers(boolean): void
  • added: method HttpConfiguration.setUseOutputDirectByteBuffers(boolean): void
  • added: method HttpConnection.getBeginNanoTime(): long
  • added: method HttpConnection.isUseInputDirectByteBuffers(): boolean
  • added: method HttpConnection.isUseOutputDirectByteBuffers(): boolean
  • added: method HttpConnection.setUseInputDirectByteBuffers(boolean): void
  • added: method HttpConnection.setUseOutputDirectByteBuffers(boolean): void
  • added: method HttpConnectionFactory.isUseInputDirectByteBuffers(): boolean
  • added: method HttpConnectionFactory.isUseOutputDirectByteBuffers(): boolean
  • added: method HttpConnectionFactory.setUseInputDirectByteBuffers(boolean): void
  • added: method HttpConnectionFactory.setUseOutputDirectByteBuffers(boolean): void
  • added: method HttpInput.Content.getError(): Throwable
  • added: method HttpInput.Content.isEof(): boolean
  • added: method HttpInput.Content.isSpecial(): boolean
  • added: method HttpInput.EofContent.isEof(): boolean
  • added: method HttpInput.EofContent.toString(): String
  • added: method HttpInput.ErrorContent.getError(): Throwable
  • added: method HttpInput.ErrorContent.toString(): String
  • added: method HttpInput.SpecialContent.get(byte[], int, int): int
  • added: method HttpInput.SpecialContent.getByteBuffer(): ByteBuffer
  • added: method HttpInput.SpecialContent.hasContent(): boolean
  • added: method HttpInput.SpecialContent.isEmpty(): boolean
  • added: method HttpInput.SpecialContent.isSpecial(): boolean
  • added: method HttpInput.SpecialContent.remaining(): int
  • added: method HttpInput.SpecialContent.skip(int): int
  • added: method HttpInput.WrappingContent.failed(Throwable): void
  • added: method HttpInput.WrappingContent.getInvocationType(): Invocable.InvocationType
  • added: method HttpInput.WrappingContent.isEof(): boolean
  • added: method HttpInput.WrappingContent.succeeded(): void
  • added: method HttpInput.onContentProducible(): boolean
  • added: method HttpInput.read(ByteBuffer): int
  • added: method HttpInput.reopen(): void
  • added: method MultiPartFormInputStream.MultiPart.cleanUp(): void
  • added: method MultiPartFormInputStream.MultiPart.close(): void
  • added: method MultiPartFormInputStream.MultiPart.createFile(): void
  • added: method MultiPartFormInputStream.MultiPart.delete(): void
  • added: method MultiPartFormInputStream.MultiPart.getBytes(): byte[]
  • added: method MultiPartFormInputStream.MultiPart.getContentDispositionFilename(): String
  • added: method MultiPartFormInputStream.MultiPart.getContentType(): String
  • added: method MultiPartFormInputStream.MultiPart.getFile(): File
  • added: method MultiPartFormInputStream.MultiPart.getHeader(String): String
  • added: method MultiPartFormInputStream.MultiPart.getHeaderNames(): Collection
  • added: method MultiPartFormInputStream.MultiPart.getHeaders(String): Collection
  • added: method MultiPartFormInputStream.MultiPart.getInputStream(): InputStream
  • added: method MultiPartFormInputStream.MultiPart.getName(): String
  • added: method MultiPartFormInputStream.MultiPart.getSize(): long
  • added: method MultiPartFormInputStream.MultiPart.getSubmittedFileName(): String
  • added: method MultiPartFormInputStream.MultiPart.open(): void
  • added: method MultiPartFormInputStream.MultiPart.setContentType(String): void
  • added: method MultiPartFormInputStream.MultiPart.setHeaders(MultiMap): void
  • added: method MultiPartFormInputStream.MultiPart.toString(): String
  • added: method MultiPartFormInputStream.MultiPart.write(String): void
  • added: method MultiPartFormInputStream.MultiPart.write(byte[], int, int): void
  • added: method MultiPartFormInputStream.MultiPart.write(int): void
  • added: method MultiPartFormInputStream.deleteParts(): void
  • added: method MultiPartFormInputStream.getBufferSize(): int
  • added: method MultiPartFormInputStream.getNonComplianceWarnings(): EnumSet
  • added: method MultiPartFormInputStream.getPart(String): Part
  • added: method MultiPartFormInputStream.getParts(): Collection
  • added: method MultiPartFormInputStream.isDeleteOnExit(): boolean
  • added: method MultiPartFormInputStream.isEmpty(): boolean
  • added: method MultiPartFormInputStream.isWriteFilesWithFilenames(): boolean
  • added: method MultiPartFormInputStream.parse(): void
  • added: method MultiPartFormInputStream.setBufferSize(int): void
  • added: method MultiPartFormInputStream.setDeleteOnExit(boolean): void
  • added: method MultiPartFormInputStream.setWriteFilesWithFilenames(boolean): void
  • added: method MultiPartFormInputStream.throwIfError(): void
  • added: method MultiPartInputStreamParser.MultiPart.cleanUp(): void
  • added: method MultiPartInputStreamParser.MultiPart.close(): void
  • added: method MultiPartInputStreamParser.MultiPart.createFile(): void
  • added: method MultiPartInputStreamParser.MultiPart.delete(): void
  • added: method MultiPartInputStreamParser.MultiPart.getBytes(): byte[]
  • added: method MultiPartInputStreamParser.MultiPart.getContentDispositionFilename(): String
  • added: method MultiPartInputStreamParser.MultiPart.getContentType(): String
  • added: method MultiPartInputStreamParser.MultiPart.getFile(): File
  • added: method MultiPartInputStreamParser.MultiPart.getHeader(String): String
  • added: method MultiPartInputStreamParser.MultiPart.getHeaderNames(): Collection
  • added: method MultiPartInputStreamParser.MultiPart.getHeaders(String): Collection
  • added: method MultiPartInputStreamParser.MultiPart.getInputStream(): InputStream
  • added: method MultiPartInputStreamParser.MultiPart.getName(): String
  • added: method MultiPartInputStreamParser.MultiPart.getSize(): long
  • added: method MultiPartInputStreamParser.MultiPart.getSubmittedFileName(): String
  • added: method MultiPartInputStreamParser.MultiPart.open(): void
  • added: method MultiPartInputStreamParser.MultiPart.setContentType(String): void
  • added: method MultiPartInputStreamParser.MultiPart.setHeaders(MultiMap): void
  • added: method MultiPartInputStreamParser.MultiPart.toString(): String
  • added: method MultiPartInputStreamParser.MultiPart.write(String): void
  • added: method MultiPartInputStreamParser.MultiPart.write(byte[], int, int): void
  • added: method MultiPartInputStreamParser.MultiPart.write(int): void
  • added: method MultiPartInputStreamParser.deleteParts(): void
  • added: method MultiPartInputStreamParser.getNonComplianceWarnings(): EnumSet
  • added: method MultiPartInputStreamParser.getParsedParts(): Collection
  • added: method MultiPartInputStreamParser.getPart(String): Part
  • added: method MultiPartInputStreamParser.getParts(): Collection
  • added: method MultiPartInputStreamParser.isDeleteOnExit(): boolean
  • added: method MultiPartInputStreamParser.isWriteFilesWithFilenames(): boolean
  • added: method MultiPartInputStreamParser.parse(): void
  • added: method MultiPartInputStreamParser.setDeleteOnExit(boolean): void
  • added: method MultiPartInputStreamParser.setWriteFilesWithFilenames(boolean): void
  • added: method MultiPartInputStreamParser.throwIfError(): void
  • added: method MultiPartParser.Handler.content(ByteBuffer, boolean): boolean
  • added: method MultiPartParser.Handler.earlyEOF(): void
  • added: method MultiPartParser.Handler.headerComplete(): boolean
  • added: method MultiPartParser.Handler.messageComplete(): boolean
  • added: method MultiPartParser.Handler.parsedField(String, String): void
  • added: method MultiPartParser.Handler.startPart(): void
  • added: method MultiPartParser.getHandler(): MultiPartParser.Handler
  • added: method MultiPartParser.getState(): MultiPartParser.State
  • added: method MultiPartParser.isState(MultiPartParser.State): boolean
  • added: method MultiPartParser.parse(ByteBuffer, boolean): boolean
  • added: method MultiPartParser.parseMimePartHeaders(ByteBuffer): boolean
  • added: method MultiPartParser.parseOctetContent(ByteBuffer): boolean
  • added: method MultiPartParser.reset(): void
  • added: method MultiPartParser.toString(): String
  • added: method MultiParts.MultiPartsHttpParser.getNonComplianceWarnings(): EnumSet
  • added: method MultiParts.MultiPartsUtilParser.getNonComplianceWarnings(): EnumSet
  • added: method MultiParts.NonCompliance.getURL(): String
  • added: method MultiParts.getNonComplianceWarnings(): EnumSet
  • added: method NetworkTrafficServerConnector.getNetworkTrafficListener(): NetworkTrafficListener
  • added: method NetworkTrafficServerConnector.setNetworkTrafficListener(NetworkTrafficListener): void
  • added: method ProxyConnectionFactory.ProxyEndPoint.getLocalSocketAddress(): SocketAddress
  • added: method ProxyConnectionFactory.ProxyEndPoint.getRemoteSocketAddress(): SocketAddress
  • added: method ProxyConnectionFactory.ProxyEndPoint.getTLV(int): byte[]
  • added: method Request.getBeginNanoTime(): long
  • added: method Request.getComplianceViolationListener(): ComplianceViolation.Listener
  • added: method Request.getHttpServletMapping(): HttpServletMapping
  • added: method Request.getPathInContext(): String
  • added: method Request.getServletPathMapping(): ServletPathMapping
  • added: method Request.getTrailerFields(): Map
  • added: method Request.getTrailerHttpFields(): HttpFields
  • added: method Request.newPushBuilder(): PushBuilder
  • added: method Request.setHttpFields(HttpFields): void
  • added: method Request.setServletPathMapping(ServletPathMapping): void
  • added: method Request.setTrailerHttpFields(HttpFields): void
  • added: method Response.getTrailerFields(): Supplier
  • added: method Response.sendEarlyHint(): void
  • added: method Response.setTrailerFields(Supplier): void
  • added: method Server.getStopTimeout(): long
  • added: method Server.isDryRun(): boolean
  • added: method Server.setDryRun(boolean): void
  • added: method ServerConnector.isReusePort(): boolean
  • added: method ServerConnector.setReusePort(boolean): void
  • added: method ServletPathMapping.getMappingMatch(): MappingMatch
  • added: method ServletPathMapping.getMatchValue(): String
  • added: method ServletPathMapping.getPathInfo(): String
  • added: method ServletPathMapping.getPattern(): String
  • added: method ServletPathMapping.getServletName(): String
  • added: method ServletPathMapping.getServletPath(): String
  • added: method ServletPathMapping.toString(): String
  • added: method ShutdownMonitor.await(): void
  • added: method SslConnectionFactory.configure(Connector): void
  • added: method SslConnectionFactory.isEnsureSecureRequestCustomizer(): boolean
  • added: method SslConnectionFactory.setEnsureSecureRequestCustomizer(boolean): void
  • added: method StateLifeCycleListener.lifeCycleFailure(LifeCycle, Throwable): void
  • added: method StateLifeCycleListener.lifeCycleStarted(LifeCycle): void
  • added: method StateLifeCycleListener.lifeCycleStarting(LifeCycle): void
  • added: method StateLifeCycleListener.lifeCycleStopped(LifeCycle): void
  • added: method StateLifeCycleListener.lifeCycleStopping(LifeCycle): void
  • added: method StateLifeCycleListener.toString(): String
  • added: static abstract class HttpInput.SpecialContent extends HttpInput.Content
  • added: static class HttpInput.WrappingContent extends HttpInput.Content
  • added: static field Cookies.LOG: Logger
  • added: static field HttpTransport.UPGRADE_CONNECTION_ATTRIBUTE: String
  • added: static field MultiPartInputStreamParser.EMPTY_MAP: MultiMap
  • added: static field MultiPartInputStreamParser.__DEFAULT_MULTIPART_CONFIG: MultipartConfigElement
  • added: static field MultiPartParser.FieldState.AFTER_NAME: MultiPartParser.FieldState
  • added: static field MultiPartParser.FieldState.FIELD: MultiPartParser.FieldState
  • added: static field MultiPartParser.FieldState.IN_NAME: MultiPartParser.FieldState
  • added: static field MultiPartParser.FieldState.IN_VALUE: MultiPartParser.FieldState
  • added: static field MultiPartParser.FieldState.VALUE: MultiPartParser.FieldState
  • added: static field MultiPartParser.LOG: Logger
  • added: static field MultiPartParser.State.BODY_PART: MultiPartParser.State
  • added: static field MultiPartParser.State.DELIMITER: MultiPartParser.State
  • added: static field MultiPartParser.State.DELIMITER_CLOSE: MultiPartParser.State
  • added: static field MultiPartParser.State.DELIMITER_PADDING: MultiPartParser.State
  • added: static field MultiPartParser.State.END: MultiPartParser.State
  • added: static field MultiPartParser.State.EPILOGUE: MultiPartParser.State
  • added: static field MultiPartParser.State.FIRST_OCTETS: MultiPartParser.State
  • added: static field MultiPartParser.State.OCTETS: MultiPartParser.State
  • added: static field MultiPartParser.State.PREAMBLE: MultiPartParser.State
  • added: static field MultiParts.NonCompliance.BASE64_TRANSFER_ENCODING: MultiParts.NonCompliance
  • added: static field MultiParts.NonCompliance.CR_LINE_TERMINATION: MultiParts.NonCompliance
  • added: static field MultiParts.NonCompliance.LF_LINE_TERMINATION: MultiParts.NonCompliance
  • added: static field MultiParts.NonCompliance.NO_CRLF_AFTER_PREAMBLE: MultiParts.NonCompliance
  • added: static field MultiParts.NonCompliance.QUOTED_PRINTABLE_TRANSFER_ENCODING: MultiParts.NonCompliance
  • added: static field MultiParts.NonCompliance.TRANSFER_ENCODING: MultiParts.NonCompliance
  • added: static field Request.__MULTIPART_CONFIG_ELEMENT: String
  • added: static field SecureRequestCustomizer.X509_CERT: String
  • added: static final class HttpInput.ErrorContent extends HttpInput.SpecialContent
  • added: static method MultiPartParser.FieldState.valueOf(String): MultiPartParser.FieldState
  • added: static method MultiPartParser.FieldState.values(): MultiPartParser.FieldState[]
  • added: static method MultiPartParser.State.valueOf(String): MultiPartParser.State
  • added: static method MultiPartParser.State.values(): MultiPartParser.State[]
  • added: static method MultiParts.NonCompliance.valueOf(String): MultiParts.NonCompliance
  • added: static method MultiParts.NonCompliance.values(): MultiParts.NonCompliance[]
  • added: static method Response.toRedirectURI(HttpServletRequest, String): String
  • removed: class IPAccessHandler extends HandlerWrapper
  • removed: class SizeLimitHandler extends HandlerWrapper
  • removed: ctor IPAccessHandler()
  • removed: ctor IPAccessHandler(String[], String[])
  • removed: ctor ShutdownHandler(Server, String)
  • removed: ctor SizeLimitHandler(long, long)
  • removed: method AbstractHandlerContainer.doShutdown(List): void
  • removed: method ContextHandler.getEventListeners(): EventListener[]
  • removed: method ContextHandler.setEventListeners(EventListener[]): void
  • removed: method ContextHandler.setManagedAttribute(String, Object): void
  • removed: method ContextHandlerCollection.addContext(String, String): ContextHandler
  • removed: method ContextHandlerCollection.getContextClass(): Class
  • removed: method ContextHandlerCollection.setContextClass(Class): void
  • removed: method ErrorHandler.doError(String, Request, HttpServletRequest, HttpServletResponse): void
  • removed: method IPAccessHandler.add(String, PathMap): void
  • removed: method IPAccessHandler.addBlack(String): void
  • removed: method IPAccessHandler.addWhite(String): void
  • removed: method IPAccessHandler.dump(Appendable, String): void
  • removed: method IPAccessHandler.handle(String, Request, HttpServletRequest, HttpServletResponse): void
  • removed: method IPAccessHandler.isAddrUriAllowed(String, String): boolean
  • removed: method IPAccessHandler.set(String[], PathMap): void
  • removed: method IPAccessHandler.setBlack(String[]): void
  • removed: method IPAccessHandler.setWhite(String[]): void
  • removed: method IPAccessHandler.setWhiteListByPath(boolean): void
  • removed: method ResourceHandler.getMinAsyncContentLength(): int
  • removed: method ResourceHandler.getMinMemoryMappedContentLength(): int
  • removed: method ResourceHandler.isGzip(): boolean
  • removed: method ResourceHandler.setGzip(boolean): void
  • removed: method ResourceHandler.setMinAsyncContentLength(int): void
  • removed: method ResourceHandler.setMinMemoryMappedContentLength(int): void
  • removed: method SizeLimitHandler.checkRequestLimit(long): void
  • removed: method SizeLimitHandler.checkResponseLimit(long): void
  • removed: method SizeLimitHandler.handle(String, Request, HttpServletRequest, HttpServletResponse): void
  • removed: method ThreadLimitHandler.getRemote(Request): ThreadLimitHandler.Remote
  • changed: class SecuredRedirectHandler extends AbstractHandler → class SecuredRedirectHandler extends HandlerWrapper
  • changed: method ContextHandler.addEventListener(EventListener): void → method ContextHandler.addEventListener(EventListener): boolean
  • changed: method ContextHandler.removeEventListener(EventListener): void → method ContextHandler.removeEventListener(EventListener): boolean
  • changed: method ContextHandler.shutdown(): Future → method ContextHandler.shutdown(): CompletableFuture
  • changed: method ErrorHandler.badMessageError(int, String, HttpFields): ByteBuffer → method ErrorHandler.badMessageError(int, String, HttpFields.Mutable): ByteBuffer
  • changed: method StatisticsHandler.shutdown(): Future → method StatisticsHandler.shutdown(): CompletableFuture
  • added: class InetAccessSet extends AbstractSet implements Set, Predicate
  • added: ctor ContextHandler(ContextHandler.Context, HandlerContainer, String)
  • added: ctor InetAccessSet()
  • added: ctor InetAccessSet.AccessTuple(String, InetAddress, String)
  • added: ctor InetAccessSet.PatternTuple(String, InetAddressPattern, PathSpec)
  • added: ctor SecuredRedirectHandler(int)
  • added: method ContextHandler.StaticContext.addJspFile(String, String): ServletRegistration.Dynamic
  • added: method ContextHandler.StaticContext.getRequestCharacterEncoding(): String
  • added: method ContextHandler.StaticContext.getResponseCharacterEncoding(): String
  • added: method ContextHandler.StaticContext.getSessionTimeout(): int
  • added: method ContextHandler.StaticContext.setRequestCharacterEncoding(String): void
  • added: method ContextHandler.StaticContext.setResponseCharacterEncoding(String): void
  • added: method ContextHandler.StaticContext.setSessionTimeout(int): void
  • added: method ContextHandler.getDefaultRequestCharacterEncoding(): String
  • added: method ContextHandler.getDefaultResponseCharacterEncoding(): String
  • added: method ContextHandler.isContextPathDefault(): boolean
  • added: method ContextHandler.setDefaultContextPath(String): void
  • added: method ContextHandler.setDefaultRequestCharacterEncoding(String): void
  • added: method ContextHandler.setDefaultResponseCharacterEncoding(String): void
  • added: method InetAccessHandler.exclude(String, String, PathSpec): void
  • added: method InetAccessHandler.include(String, String, PathSpec): void
  • added: method InetAccessSet.AccessTuple.getAddress(): InetAddress
  • added: method InetAccessSet.AccessTuple.getConnector(): String
  • added: method InetAccessSet.AccessTuple.getPath(): String
  • added: method InetAccessSet.PatternTuple.test(InetAccessSet.AccessTuple): boolean
  • added: method InetAccessSet.PatternTuple.toString(): String
  • added: method InetAccessSet.add(InetAccessSet.PatternTuple): boolean
  • added: method InetAccessSet.iterator(): Iterator
  • added: method InetAccessSet.remove(Object): boolean
  • added: method InetAccessSet.size(): int
  • added: method InetAccessSet.test(InetAccessSet.AccessTuple): boolean
  • added: static class InetAccessSet.AccessTuple
  • added: static class InetAccessSet.PatternTuple implements Predicate
  • added: static method InetAccessSet.PatternTuple.from(String): InetAccessSet.PatternTuple
  • removed: method GzipFactory.getDeflater(Request, long): Deflater
  • removed: method GzipFactory.recycle(Deflater): void
  • removed: method GzipHandler.addExcludedAgentPatterns(String[]): void
  • removed: method GzipHandler.addIncludedAgentPatterns(String[]): void
  • removed: method GzipHandler.getCheckGzExists(): boolean
  • removed: method GzipHandler.getCompressionLevel(): int
  • removed: method GzipHandler.getDeflater(Request, long): Deflater
  • removed: method GzipHandler.getExcludedAgentPatterns(): String[]
  • removed: method GzipHandler.getIncludedAgentPatterns(): String[]
  • removed: method GzipHandler.getMethods(): String[]
  • removed: method GzipHandler.isAgentGzipable(String): boolean
  • removed: method GzipHandler.newDeflaterPool(int): DeflaterPool
  • removed: method GzipHandler.recycle(Deflater): void
  • removed: method GzipHandler.setCheckGzExists(boolean): void
  • removed: method GzipHandler.setCompressionLevel(int): void
  • removed: method GzipHandler.setExcludedAgentPatterns(String[]): void
  • removed: method GzipHandler.setIncludedAgentPatterns(String[]): void
  • removed: method GzipHttpOutputInterceptor.isOptimizedForDirectBuffers(): boolean
  • removed: method GzipHttpOutputInterceptor.noCompressionIfPossible(): void
  • removed: static field GzipHttpOutputInterceptor.VARY_ACCEPT_ENCODING_USER_AGENT: HttpField
  • changed: ctor GzipHttpInputInterceptor(ByteBufferPool, int) → ctor GzipHttpInputInterceptor(InflaterPool, ByteBufferPool, int)
  • added: ctor GzipHttpInputInterceptor(InflaterPool, ByteBufferPool, int, boolean)
  • added: method GzipFactory.getDeflaterEntry(Request, long): CompressionPool.Entry
  • added: method GzipHandler.addExcludedInflationPaths(String[]): void
  • added: method GzipHandler.addIncludedInflationPaths(String[]): void
  • added: method GzipHandler.doStop(): void
  • added: method GzipHandler.getDeflaterEntry(Request, long): CompressionPool.Entry
  • added: method GzipHandler.getDeflaterPool(): DeflaterPool
  • added: method GzipHandler.getExcludedInflationPaths(): String[]
  • added: method GzipHandler.getIncludedInflationPaths(): String[]
  • added: method GzipHandler.getInflaterPool(): InflaterPool
  • added: method GzipHandler.getInflaterPoolCapacity(): int
  • added: method GzipHandler.getVary(): HttpField
  • added: method GzipHandler.isPathInflatable(String): boolean
  • added: method GzipHandler.setDeflaterPool(DeflaterPool): void
  • added: method GzipHandler.setDispatcherTypes(String[]): void
  • added: method GzipHandler.setExcludedInflatePaths(String[]): void
  • added: method GzipHandler.setExcludedMimeTypesList(String): void
  • added: method GzipHandler.setIncludedInflatePaths(String[]): void
  • added: method GzipHandler.setIncludedMimeTypesList(String): void
  • added: method GzipHandler.setInflaterPool(InflaterPool): void
  • added: method GzipHandler.setInflaterPoolCapacity(int): void
  • added: method GzipHandler.setVary(HttpField): void
  • added: static field GzipHandler.ETAG_HEADERS: EnumSet
  • removed: class NetworkTrafficSelectChannelConnector extends NetworkTrafficServerConnector
  • removed: ctor NetworkTrafficSelectChannelConnector(Server)
  • removed: ctor NetworkTrafficSelectChannelConnector(Server, ConnectionFactory)
  • removed: ctor NetworkTrafficSelectChannelConnector(Server, ConnectionFactory, SslContextFactory)
  • removed: ctor NetworkTrafficSelectChannelConnector(Server, Executor, Scheduler, ByteBufferPool, int, int, ConnectionFactory[])
  • removed: ctor NetworkTrafficSelectChannelConnector(Server, SslContextFactory)
  • removed: field DefaultSessionCache._sessions: ConcurrentHashMap
  • removed: field SessionHandler._nodeIdInSessionId: boolean
  • removed: method FileSessionDataStore.exists(String): boolean
  • removed: method JDBCSessionDataStore.SessionTableSchema.getAllAncientExpiredSessionsStatement(Connection): PreparedStatement
  • removed: method JDBCSessionDataStore.exists(String): boolean
  • removed: method NullSessionDataStore.exists(String): boolean
  • removed: method Session.SessionInactivityTimer.schedule(): void
  • removed: method Session.checkLocked(): void
  • removed: method Session.doInvalidate(): void
  • removed: method Session.isChanging(): boolean
  • removed: method Session.updateInactivityTimer(): void
  • removed: method SessionCache.renewSessionId(String, String): Session
  • removed: method SessionHandler.clearEventListeners(): void
  • removed: method SessionHandler.complete(Session, Request): void
  • removed: method SessionHandler.isNodeIdInSessionId(): boolean
  • removed: method SessionHandler.sessionInactivityTimerExpired(Session): void
  • removed: method SessionHandler.setNodeIdInSessionId(boolean): void
  • removed: static field SessionHandler.MAX_INACTIVE_MINUTES: BigDecimal
  • changed: field Session._lock: Locker → field Session._lock: AutoLock
  • changed: method AbstractSessionDataStore.doGetExpired(Set): Set → method AbstractSessionDataStore.doGetExpired(long): Set
  • changed: method FileSessionDataStore.doGetExpired(Set): Set → method FileSessionDataStore.doGetExpired(long): Set
  • changed: method FileSessionDataStore.sweepDisk(): void → method FileSessionDataStore.sweepDisk(long): void
  • changed: method JDBCSessionDataStore.doGetExpired(Set): Set → method JDBCSessionDataStore.doGetExpired(long): Set
  • changed: method NullSessionDataStore.doGetExpired(Set): Set → method NullSessionDataStore.doGetExpired(long): Set
  • changed: method Session.lock(): Locker.Lock → method Session.lock(): AutoLock
  • changed: method SessionHandler.addEventListener(EventListener): void → method SessionHandler.addEventListener(EventListener): boolean
  • changed: method SessionHandler.removeEventListener(EventListener): void → method SessionHandler.removeEventListener(EventListener): boolean
  • added: ctor DefaultSessionCache(SessionHandler, ConcurrentMap)
  • added: field AbstractSessionDataStore._lastOrphanSweepTime: long
  • added: method AbstractSessionDataStore.cleanOrphans(long): void
  • added: method AbstractSessionDataStore.doCheckExpired(Set, long): Set
  • added: method AbstractSessionDataStore.doCleanOrphans(long): void
  • added: method AbstractSessionDataStore.doExists(String): boolean
  • added: method AbstractSessionDataStore.exists(String): boolean
  • added: method FileSessionDataStore.doCheckExpired(Set, long): Set
  • added: method FileSessionDataStore.doCleanOrphans(long): void
  • added: method FileSessionDataStore.doExists(String): boolean
  • added: method JDBCSessionDataStore.SessionTableSchema.getCleanOrphansStatement(Connection, long): PreparedStatement
  • added: method JDBCSessionDataStore.doCheckExpired(Set, long): Set
  • added: method JDBCSessionDataStore.doCleanOrphans(long): void
  • added: method JDBCSessionDataStore.doExists(String): boolean
  • added: method NullSessionDataStore.doCheckExpired(Set, long): Set
  • added: method NullSessionDataStore.doCleanOrphans(long): void
  • added: method NullSessionDataStore.doExists(String): boolean
  • added: method SessionHandler.setPartitioned(boolean): void
  • added: static field AbstractSessionDataStore.DEFAULT_GRACE_PERIOD_SEC: int
  • added: static field AbstractSessionDataStore.DEFAULT_SAVE_PERIOD_SEC: int