Jetty v10.0.0 Release Notes
Release Date: 2020-12-07 // over 3 years ago-
Eclipse Jetty 10.x Highlights
- Jetty 10.x has a minimum Java requirement of Java 11.
- Jetty 10.x modules are proper JPMS modules with
module-info.class
. - π Jetty 10.x supports the following technology specs (from the Jakarta EE 8 effort):
javax.servlet
- 4.0.1javax.servlet.jsp
- 2.2javax.servlet.jsp.jstl
- 1.2javax.el
- 3.0.0javax.websocket
- 1.1
- π Jetty 10.x will be the last major version of Jetty to support the
javax.servlet
namespace.
β‘οΈ Use Jetty 11.x for the updatedjakarta.servlet
namespace.
Important Changes
- π² Classic jetty logging facade has been replaced with slf4j-api usage
- There is no longer a
jetty-distribution
, usejetty-home
with a proper${jetty.base}
instead.
π See: Operations Guide: Architecture- New
demo
jetty-start module exists to replace the old demo-base functionality.
- New
- β Remove jetty-all uber artifact
- π§ Managing
Configuration
within aWebAppContext
has a new API.
(They are now self ordering and do not require knowledge of Jetty internals to use successfully) - π¨ Complete WebSocket refactoring, those using the Jetty APIs or embedded-jetty will need to update their code.
- Support for WebSocket over HTTP/2 (client and server)
- Jetty HttpClient has been improved.
- Supports dynamic protocol upgrade (http/2 and http/1.1).
- π¨ Session management has been refactored as well.
π Changelog
π Special thanks to the following Eclipse Jetty community members for participating in this release: @dejpec, @attiand, @sullis, @grgrzybek, @schnittstabil, @dennyac
- #5744 - Review and rework o.e.j.util.Scanner
- #5732 - Fix ArithmeticException "/ by zero" in Pool.acquire()
- β #5729 - Do not create and use jars with "tests" classifier.
- #5724 - GCThreadLeakPreventer won't work with Java 9.
- π #5710 - remove unnecessary transition to READY in ContentProducer.isReady
- π #5705 - Move websocket-util classes into websocket-core
- #5698 - Bump commons-codec from 1.13 to 1.15
- #5695 - Bump api-ldap-schema-data from 2.0.0 to 2.0.1
- #5694 - Bump commons-lang3 from 3.9 to 3.11
- #5692 - HttpInput may skip setting fill interest
- #5683 - Allow start.jar to list enabled modules
- #5674 - Drop /jetty-spring/ module
- β¬οΈ #5648 - Use Filter name to identify the WebSocketUpgradeFilter.
- #5641 - Clean up LoginServices and LoginModules
- #5622 - Bump javax.servlet.jsp.jstl from 1.2.2 to 1.2.5
- π #5615 - Bump maven-project-info-reports-plugin from 3.0.0 to 3.1.1
- #5597 - Cleanups to WebSocket CloseStatus
- #5594 - Bump tycho-version from 2.0.0 to 2.1.0
- #5592 - Bump hazelcast.version from 4.0.1 to 4.1
- #5566 - Tries cleanup
- #5563 - using jetty-websocket-httpclient.xml within webapp Jetty 10
- #5547 - Bump org.eclipse.osgi from 3.6.0.v20100517 to 3.7.1
- π #5543 - Bump spring-beans from 5.2.9.RELEASE to 5.3.0
- #5527 - ResourceCollection NPE
- #5526 - Access to cookie config with accessor method (@dejpec)
- #5517 - Fix and simplify graceful shutdown of StatisticsHandler
- π #5503 - Bump spring-beans from 5.1.1.RELEASE to 5.2.9.RELEASE
- #5469 - Bump jaxws-rt from 2.3.0.2 to 2.3.3
- #5468 - Bump openpojo from 0.8.1 to 0.8.13
- π #5467 - Bump maven-jxr-plugin from 2.5 to 3.0.0
- #5466 - Bump jakarta.annotation-api from 1.3.4 to 1.3.5
- #5465 - Bump github-api from 1.114 to 1.116
- π #5459 - Fix archive assemblies (tar.gz and zip) to have fixed file/dir modes.
- #5450 - Cleanup Request.isSecure() logic
- #5432 - Bump ant.version from 1.10.8 to 1.10.9
- #5422 - Bump asciidoctorj-diagram from 2.0.2 to 2.0.5
- β¬οΈ #5413 - simplify the usage of WebSocketUpgradeFilter in jetty 10
- π§ #5406 - throw ISE if the WebSocketSCI configure() is called on a started ServletContextHandler
- β¬οΈ #5405 - add test to reproduce issue with WebSocketUpgradeFilter not started
- π #5400 - Add more origin info to quickstart-web.xml elements
- π #5398 - Better handling for wrong SNI.
- #5396 - Fix injection for quickstart
- #5391 - Bump javax.servlet-api from 3.1.0 to 4.0.1
- #5390 - Bump maven-artifact-transfer from 0.11.0 to 0.12.0
- #5367 - Reorg of /demos/ with focus on demo-spec downstream dependencies.
- #5350 - Bump jsp-api from 2.1 to 2.2
- #5349 - Bump asm.version from 8.0.1 to 9.0
- π #5347 - Bump maven-jar-plugin from 3.1.2 to 3.2.0
- #5333 - Bump derby from 10.14.2.0 to 10.15.2.0
- #5328 - NPE in PushBuilder
- #5311 - Quickstart duplicate servlets,filters,listeners from context
- β #5309 - Jetty Home warning
- #5307 - HTTP2 HostHeader
- π #5303 - Remove unused SessionHandler methods.
- #5302 - Bump mariadb-java-client from 2.6.0 to 2.6.2
- #5295 - rework CompressionPool to use the jetty-util pool
- #5288 - fix get sessionId from fileName
- β¬οΈ #5266 - fix upgrade bug in HttpReceiverOverHTTP
- π #5265 - JDK-8244090 MethodHandles bug fixed in JDK16
- π #5262 - Bump exec-maven-plugin from 1.6.0 to 3.0.0
- π #5260 - Bump flatten-maven-plugin from 1.0.1 to 1.2.5
- #5258 - Adding start.jar --add-module
- #5257 - List/Show modules
- β‘οΈ #5248 - update gzip handler
- #5243 - Add gracePeriod to file session store.
- #5239 - Bump tycho-version from 1.4.0 to 2.0.0
- #5238 - Bump jmh.version from 1.25.1 to 1.25.2
- #5237 - Bump org.eclipse.osgi from 3.15.100 to 3.15.300
- #5236 - Bump org.eclipse.osgi.services from 3.7.100 to 3.8.0
- π #5235 - Jetty WebSocket API minor cleanups before Jetty-10 full release
- β¬οΈ #5213 - fix NPE during websocket upgrade
- #5211 - Bump jmh.version from 1.21 to 1.25.1
- #5196 - Simplify GzipHandler user-agent handling
- #5192 - Bump apacheds.version from 2.0.0-M24 to 2.0.0.AM26
- #5191 - Bump jaxb-api from 2.3.0 to 2.3.1
- #5190 - Bump jnr-unixsocket from 0.24 to 0.34
- #5188 - Bump derbytools from 10.14.2.0 to 10.15.2.0
- β‘οΈ #5182 - Update to spifly 1.3.0
- β‘οΈ #5179 - Update to asm8.0.1
- π² #5167 - Regularlize logging
- #5157 - Bump ant from 1.8.4 to 1.10.8
- β‘οΈ #5154 - Fix WebSocketServerExamplesTest to work after maven surefire update
- #5119 - Use either absolute or relative multipart file location
- #5115 - lazily initialize the WebSocketFilter if only using JettyWebSocketServlet
- π¨ #5101 - Refactor of Jetty WebSocket Upgrade Request/Response
- #5098 - Static UrlEncoded
- #5097 - Uniform Find Expired Sessions
- π #5084 - Convert synchronized usages to AutoLock.
- #5077 - enable Dependabot v2 (@sullis)
- βͺ #5075 - restore old ServletPathMapping even for include dispatch types
- #5054 - allow anonymous WebSocketListener / Endpoint classes to be used
- #5046 - fix NPE related to use of Attributes.Wrapper getAttributeNameSet() Jetty 10
- β¬οΈ #5031 - add WebSocketClient UpgradeRequest timeout to jetty 10
- #5026 - wrong welcome file handling with dispatcher.include() a⦠(@grgrzybek)
- π² #4997 - Implementing old logging TAG_PAD as Message Alignment.
- #4994 - Implemented TAG_PAD
- #4978 - only include jetty-slf4j-impl jar once in jetty-home
- π #4952 - fix websocket JPMS warnings and build issues
- #4931 - WebSocket container graceful stop
- π #4917 - Give better errors for non public javax.websocket endpoints
- #4912 - close websocket suspendState if close frame is received
- π #4902 - support javax websocket decoder lists in jetty-10
- π¨ #4898 - Refactor HttpServletMapping to avoid tracking servletPath separately
- #4881 - Separate out websocket client and server components from websocket-core
- #4858 - add setReuseAddress() to ClientConnector
- #4851 - fix issues with HttpServletMapping
- #4845 - Review HttpClient Request header APIs.
- #4839 - Enabling JMX on jetty-slf4j-impl
- #4829 - Implement spec requirements for Request.newPushBuilder
- #4815 - Allow a ConnectionFactory (eg SslConnectionFactory) to automatically add a Customizer
- #4810 - fix WebSocket LinkageError and invalid PathParam type handling
- β #4804 - Test for asyncIsStarted for setReadListener
- #4796 - HttpInput.setReadListener should check async state
- β¬οΈ #4780 - upgrade spifly to 1.2.4 and replace jdk13 build with jdk14
- π #4777 - Immutable HttpFields and MetaData
- β #4775 - cleanup and add tests for the unused ws message handlers
- #4767 - Review GzipHandler inside ServletContextHandler.
- #4763 - Request.authenticate must return true if already authenticated
- #4761 - Response.setLocale should override previous
- π» #4759 - Improve keystore exception message when keystore is not valid (@schnittstabil)
- #4757 - Use HandlerList instead of HandlerCollection
- #4753 - Call HttpSessionListener.sessionCreated in order listeners were added.
- β #4750 - fix some test failures for jetty-10 with websocket tck
- π #4730 - no merge query string
- π #4723 - remove websocket-servlet
- #4721 - Async dispatch with query.
- #4720 - Keep previous charencoding if not set in content type
- #4708 - wrong value for ServletContext.setSessionTimeout
- β¬οΈ #4702 - avoid NPE during websocket HTTP/2 upgrade
- π #4701 - ServletContext.createXXX methods should throw UnsupportedOperationException
- π #4698 - ServletContext sessionModes methods should throw UnsupportedOperationException
- #4694 - use static methods with javadoc to get MethodHandle lookups
- #4692 - Use MethodHandles.lookup() consistently in WebSocket code.
- π¨ #4689 - support alt PrintStream in StdErrAppender properly
- #4684 - Fix jetty-slf4j-impl for osgi
- π¨ #4672 - Refactor CrossOriginFilter with small perf improvements (@dennyac)
- β¬οΈ #4670 - Support HTTP/1 upgrade to HTTP/2 in HttpClient.
- π #4669 - websocket JPMS fixes to not export websocket-core
- β¬οΈ #4666 - upgrade openwebbeans-web to 2.0.15
- #4661 - generalise XmlConfiguration elements
- π§ #4649 - Hazelcast remote.xml configuration file do not configure hazelcast remote addresses (@attiand)
- #4627 - request getPathInfo() could be null in InetAccessHandler
- #4618 - Review HttpClient's ContentProvider.
- #4615 - rework InetAccessHandler to use path mappings
- #4602 - Continue after ServiceLoader ServiceConfigurationError
- #4593 - websocket aggregating text and binary MessageSinks
- #4590 - Implement forward/include/async params for HttpServletMapping
- #4588 - rework of websocket message reader and writers
- π #4587 - Servlet 4 metadata-complete=true should skip introspection of annotations
- π #4583 - remove unnecessary javadoc on Override methods
- π #4570 - StdErrLog cleanup and final Arg Throwable support
- π #4563 - remove deprecated jetty-runner
- π #4561 - Improve performance of small websocket messages [jetty-10.0.x]
- π #4558 - Remove Resource.writeTo(OutputStream, long, long)
- π¨ #4556 - HttpInput refactoring
- #4554 - Graceful close of HTTP/2 Connection.
- π #4552 - Fix MethodHandles lookup to support JPMS runtime mode
- #4549 - clean up websocket removing duplicated and unused classes
- π§ #4543 - Client configuration for direct/heap ByteBuffers.
- π #4539 - remove all SharedBlockingCallback usage from websocket
- #4536 - separate modules for jetty and javax websockets
- #4535 - do not throw IOException on Javax websocket close
- #4527 - Make the WebSocketServerContainer initialize methods private
- #4523 - allow changing of close response from jetty and javax websocket onClose events
- #4522 - fix JPMS issues with javax websockets
- β #4514 - tck tests are done after ServletContext has already been initialized so we need to test this first to get some tck test passing...
- #4510 - spec addJspFile javadoc expect IllegalArgumentException if name is null or empty string
- #4509 - Ensure get/setInitParam with null arg throws NPE
- π #4498 - synchronize multiparts for cleanup from different thread
- β‘οΈ #4497 - Update paxexam for osgi tests
- #4494 - Bundle-RequiredExecutionEnvironment: JavaSE-11 for Jettβ¦
- π #4490 - remove blank line
- #4489 - Switch SslContextFactory.keystoreType from JKS to PKCS12.
- #4488 - Bump Apache Jasper JSP from 9.0.19 to 9.0.29
- π¨ #4482 - Refactored Graceful shutdown
- #4477 - Modernize jetty-util-ajax.
- #4472 - Prevent jetty 10 WebSocket close deadlocks
- #4470 - Provide a parameterless CustomRequestLog.
- π #4469 - Move multipart classes to jetty-server.
- β #4467 - Add tests for default-context-path
- #4463 - Implement ServletContext.addJspFile
- #4458 - Implement get/setSessionTimeout for ServletContext
- 0οΈβ£ #4455 - Implement context default request/response encodings.
- π #4452 - fix issues with javax metadata and decoders
- #4451 - websocket-core exposes internal classes
- #4441 - WebSocket rename for jetty-10
- #4436 - Fix JPMS transitivity.
- #4435 - Fix WebSocket ClassLoader issues.
- 0οΈβ£ #4420 - use annotations for Javax WebSockets as default EndpointConfig
- π§ #4390 - Pass system properties into xml configurations
- β‘οΈ #4384 - Update jsp documenation; remove old config from webdefault.xml
- β¬οΈ #4379 - Allow WebSocket extension selection to be done from UpgradeListener
- π #4371 - remove MultiParts interface and simplify MultiPart cleanup
- π° #4359 - sending WebSocket frames modifies the payload ByteBuffer
- β #4355 - test client negotiation of internal extensions
- #4343 - fix creation of HttpClient in jetty-openid.xml for jetty10
- #4324 - stop WebSocketSessions only after onClose
- #4295 - config for jetty specific settings with javax WebSockets
- #4260 - CompressExtension autoFragment with respect to maxFrameSize
- #4232 - fragment outgoing frames before the ExtensionStack
- π #4229 - remove default keystore passwords not from test-keystore.mod
- #4224 - Fix reported Servlet major/minor versions
- π #4219 - make WS Parser autoFragment data frames to maxFrameSize
- β #4215 - fix flaky ClientConnectTest and change WS connectTimeout
- #4151 - Module org.eclipse.jetty.alpn.client not found, requireβ¦
- β #4147 - autobahn tests for jetty, javax websocket APIs
- π§ #4097 - Configuration cleanup
- #4095 - throw ISE for WebSocket suspend after close
- β¬οΈ #4090 - revert ClientUpgradeRequest error handling logic
- #4078 - Fix restart of quickstarted webapp
- #4068 - Review Locker.
- #4035 - Fix Secure javax.websocket Client examples
- π #4021 - Removing @deprecated methods / classes from jetty-9.4.x merge
- #4017 - Consider adding demand API to HTTP/2.
- #4008 - Fix quickstart
- #3966 - Use addEventListener(EventListener listener) instead of bespoke listener methods
- π§ #3959 - Server configuration for direct/heap ByteBuffers.
- #3920 - Draft 1 for week 1.
- #3873 - Javax Websocket Packaging
- #3853 - only notify onError for local errors
- #3848 - copy dependency for jetty-javax-websocket-api
- π #3847 - Checkstyle cleanup
- #3844 - Deflater / Inflater Object Pool (Jetty-10)
- #3819 - ensure abnormal close frame will hard close ws connection
- #3816 - do not copy RSV bits to auto-fragmented frames
- π¨ #3802 - WebSocket core - autobahn and MessageHandler refactor
- π #3797 - Remove deprecated in Jetty 10.0.x
- #3792 - store autobahn results as they are not stored automatically by junitPublisher
- #3790 - XmlConfiguration Set Property
- #3783 - jetty-10.0.x WebSocket core cleanup
- #3779 - review of exposed classes in jetty-websocket-server
- β #3770 - use the default port of 0 for WebSocket tests
- #3740 - Bootstrap websocket on HTTP/2
- #3732 - rename maxIdleTime usage to idleTimeout for WebSockets
- #3720 - clean up modules
- #3703 - Cleanup webappconfiguration
- π #3702 - Some fixes for running cometd6 on jetty-10
- #3686 - error CloseFrames skip frames in the FrameFlusher queue
- π¨ #3660 - jetty-10 WebSocket configuration refactor
- #3644 - Use jetty specific websocket API jar.
- #3539 - Implement HTTP CONNECT for HTTP/2.
- β #3521 - flaky tests in jetty-websocket-tests ClientCloseTest
- #3504 - implement Session.suspend() for jetty-10 jetty-websocket-api
- #3478 - WebSocket Extension Negotiation
- β¬οΈ #3470 - websocket upgrade request valdiation
- β¬οΈ #3460 - jetty websocket upgrades without using websocket-servlet classes
- π #3455 - Removing deprecated Extension classes in jetty-websocket-api
- β¬οΈ #3448 - upgrade jetty-websockets with WebSocketUpgradeFilter
- βͺ #3439 - restore jetty websocket tests
- π¨ #3435 - refactored HttpCompliance
- β‘οΈ #3432 - WebSocketChannel bug fixes, cleanup and javadoc updates for FrameHandler
- #3430 - jetty.webapps.uri should be the parent of the webapp
- π #3416 - Removing Deprecated Resource.getURL()
- β¬οΈ #3414 - add support for WebSocket UpgradeListeners in WebSocketClient
- #3413 - WebSocket CoreSession Customizer
- β #3407 - websocket core test cleanup
- β #3403 - parameterized WebSocketCloseTest over TLS
- #3401 - permessage-deflate continuation frame with RSV1 set
- π #3398 - Removing deprecated methods and classes
- #3390 - implement WebSocketConnection stats
- #3384 - use add-exports instead of add-opens in javax WS-Server pom
- #3383 - Add tracking of WebSocket Sessions to various WebSocket Container APIs
- π§ #3381 - Adding configured Connection.Listeners to WebSocket Connections
- β #3366 - javax-websocket-server tests
- #3365 - WebSocket Proxy
- β‘οΈ #3360 - Update PushCacheFilter to use Servlet 4.0 APIs.
- #3357 - WebSocket HttpClientProvider
- #3352 - Restructure jetty-unixsocket module.
- #3342 - Review Jetty 10 module-info.java.
- #3338 - Jetty 10 standalone cannot start on the module-path.
- #3336 - Generalize EndPoint.onClose(Throwable) for WebSocket cases
- π #3335 - FrameFlusher and WebSocket close fixes
- #3331 - sendError does not set reason.
- #3313 - Dynamic selection of the transport to use based on ALPN on the client side.
- β¬οΈ #3310 - WebSocket UpgradeRequests and CompletableFutures
- π #3309 - Remove deprecated session methods
- β‘οΈ #3299 - Update to apache jsp 9.0.14
- β #3294 - fix websocket new groupId in osgi tests
- β #3292 - Add autobahn profile to automatically run autobahn test suite in Jenkins
- #3291 - async websocket onOpen, onError and onClose
- #3289 - Correcting Jetty WebSocket API artifactIds
- π¨ #3286 - WebSocketMapping Refactor
- #3267 - ClientConnector abstraction.
- #3262 - Improve WebSocket close handling
- β #3259 - javax-websocket-tests exception stacktraces
- π #3255 - Remove FastCGI multiplexing.
- β #3237 - custom request log test failure
- #3224 - Autobahn WebSocketServer failures in jetty 10
- π¨ #3222 - Refactor WebSocket mapping
- β #3215 - Ensure MetaInfConfigurationTest is not disabled
- #3211 - Lazy creation of WebSocketCoreClient
- β¬οΈ #3209 - upgrade logback and log4j-slf4j (new artifact log4j-slf4j18-impl) to support slf4j api 1.8
- #3199 - NPE in WebSocketContainerInitializer for jetty10
- #3198 - rename websocket directories, modules and artifacts
- #3177 - fix argLine inheritance
- β #3172 - Adding both WebSocket tests to /test-integration/ to verify behavior that is causing problems from within OSGi.
- π¨ #3169 - websocket module refactor
- #3168 - Use Jetty specific Servlet API jar.
- 0οΈβ£ #3160 - CustomRequestLog as default in jetty-10
- β #3120 - Adding module-info.java to non-tests Jetty modules
- 0οΈβ£ #3063 - Preserve default-context-path for quickstart
- #3055 - Break out WebSocket core features into new websocket-core components
- π #3035 - Move jmh test 3014
- π¨ #3029 - Http/Cookie/MultiPartFormData Compliance Refactor
- #3017 - Moving HttpCompliance to HttpConfiguration
- π #3016 - Move old MultiPart to jetty-http
- 0οΈβ£ #3015 - Defaulting to non-LEGACY compliance modes
- π§ #2987 - Configuration replacement algorithm
- #2984 - JmxConfiguration JPMS ready
- π #2973 - Build minimum requirement is now JDK 11
- #2905 - fix groovy variable scope
- π #2384 - remove checkGzExists from GzipHandler entirely
- π #2105 - cleanup MultiException to better use suppressed
- #2104 - open connectors before starting