Skip to content

10.0.0

Compare
Choose a tag to compare
@joakime joakime released this 07 Dec 16:14
· 3134 commits to jetty-10.0.x since this release

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.1
    • javax.servlet.jsp - 2.2
    • javax.servlet.jsp.jstl - 1.2
    • javax.el - 3.0.0
    • javax.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 updated jakarta.servlet namespace.

Important Changes

  • Classic jetty logging facade has been replaced with slf4j-api usage
  • There is no longer a jetty-distribution, use jetty-home with a proper ${jetty.base} instead.
    See: Operations Guide: Architecture
    • New demo jetty-start module exists to replace the old demo-base functionality.
  • Remove jetty-all uber artifact
  • Managing Configuration within a WebAppContext 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.

Special Thanks to the following Eclipse Jetty community members

Changelog

  • #5739 - jetty-distribution is not created when building 11.0.0.beta3
  • #5732 - Fix ArithmeticException "/ by zero" in Pool.acquire()
  • #5729 - Do not create and use jars with "tests" classifier.
  • #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
  • #5691 - HttpInput may skip setting fill interest
  • #5679 - Distro argument --list-all-modules does not work
  • #5674 - Drop /jetty-spring/ module
  • #5648 - Use Filter name to identify the WebSocketUpgradeFilter.
  • #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
  • #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
  • #5526 - Access to cookie config with accessor method (@dejpec)
  • #5521 - ResourceCollection NPE in list()
  • #5503 - Bump spring-beans from 5.1.1.RELEASE to 5.2.9.RELEASE
  • #5493 - StatisticsHandler broken for async applications
  • #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.
  • #5448 - Request.isSecure() returns false for https schemes in Jetty 10
  • #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
  • #5394 - Quickstart does not inject/decorate objects
  • #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
  • #5379 - Better handling for wrong SNI
  • #5378 - Filter/Servlet/Listener Holders are not started if added during STARTING state.
  • #5367 - Reorg of /demos/ with focus on demo-spec downstream dependencies.
  • #5360 - demo-spec module incorrectly depends on demo-jndi
  • #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
  • #5327 - NPE from jetty test webapp
  • #5320 - Using WebSocketClient with jetty-websocket-httpclient.xml in a Jetty web application causes ClassCastException
  • #5304 - HTTP/2 with HttpServletRequest.getHeader("Host") returns null on Jetty 10, but a valid value on Jetty 9
  • #5302 - Bump mariadb-java-client from 2.6.0 to 2.6.2
  • #5287 - CompressionPools should use the new jetty-util Pool class
  • #5280 - Remove unused methods on SessionHandler
  • #5272 - The UserStore and PropertyUserStore classes are hard to re-use for caching eg JDBC data
  • #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
  • #5256 - Cleanup Jetty 10 Start
  • #5254 - Short list of Jetty modules
  • #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
  • #5211 - Bump jmh.version from 1.21 to 1.25.1
  • #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
  • #5181 - Update to spifly 1.3.0
  • #5178 - Update to asm 8.0.1
  • #5171 - GzipHandler Vary head should be configurable
  • #5170 - NullPointerException in HttpReceiverOverHTTP during WebSocket client Upgrade
  • #5157 - Bump ant from 1.8.4 to 1.10.8
  • #5154 - Fix WebSocketServerExamplesTest to work after maven surefire update
  • #5096 - using JettyWebSocketServlet without having a WebSocketUpgradeFilter
  • #5093 - Review UrlEncoded locking
  • #5086 - Review Scanner locking
  • #5083 - Convert synchronized usages to AutoLock
  • #5075 - restore old ServletPathMapping even for include dispatch types
  • #5044 - Jetty WebSocket UpgradeRequest & UpgradeResponse types in Jetty 10
  • #5043 - WebSocketListener anonymous classes should be invocable
  • #5025 - dispatcher.include() with welcome files lead to stack overflow error (@grgrzybek)
  • #5018 - WebSocketClient connect / upgrade timeout not configurable
  • #4996 - Warning log printed when debug is enabled in AbstractLifecycle.java
  • #4985 - Fix NPE related to use of Attributes.Wrapper getAttributeNameSet()
  • #4978 - only include jetty-slf4j-impl jar once in jetty-home
  • #4952 - fix websocket JPMS warnings and build issues
  • #4919 - websocket container stop ordering
  • #4907 - org.eclipse.jetty.websocket.tests.SuspendResumeTest#testSuspendAfterClose
  • #4903 - Give better errors for non public Websocket Endpoints
  • #4858 - add setReuseAddress() to ClientConnector
  • #4830 - Add JMX to new Jetty 10 jetty-slf4j-impl
  • #4825 - PushBuilder tck test failures
  • #4815 - Allow a ConnectionFactory (eg SslConnectionFactory) to automatically add a Customizer
  • #4808 - Review HttpClient Request header APIs
  • #4800 - WebSocket DistributionTests failure on JDK14
  • #4794 - HttpInput.setReadListener should throw IllegalStateException if async not started
  • #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
  • #4765 - Review GzipHandler inside ServletContextHandler
  • #4762 - Request.authenticate(Response) should return true if already authenticated
  • #4760 - Response.setLocale should override previous Response.setLocale
  • #4759 - Improve keystore exception message when keystore is not valid (@schnittstabil)
  • #4757 - Use HandlerList instead of HandlerCollection
  • #4752 - HttpSessionListener.sessionCreated should be called in order listener was added; sessionDestroyed in reverse order
  • #4747 - Investigate websocket tck failures for jetty-10
  • #4741 - getHttpServletMapping for async dispatch
  • #4722 - Jetty-10 websocket-servlet exposes websocket-core classes
  • #4719 - ContentType with no char encoding should use previous char encoding
  • #4713 - AsyncContext.dispatch does not remember the query string of the request
  • #4707 - Value for ServletContext.setSessionTimeout is wrong in StandardDescriptorProcessor
  • #4700 - ServletContext.createXXX() methods should throw UnsupportedOperationException
  • #4697 - Default and EffectiveSessionTrackingModes should throw UnsupportedOperationException
  • #4691 - Use MethodHandles.lookup() consistently in WebSocket code
  • #4683 - jetty-slf4j-impl has incorrect manifest
  • #4672 - Refactor CrossOriginFilter with small perf improvements (@dennyac)
  • #4669 - websocket JPMS fixes to not export websocket-core
  • #4666 - upgrade openwebbeans-web to 2.0.15
  • #4656 - XmlConfiguration cleanup
  • #4647 - Hazelcast remote.xml configuration file do not configure hazelcast remote addresses (@attiand)
  • #4620 - Using console-capture with StdErrLog results in empty log file
  • #4610 - Docs for OpenID
  • #4603 - Investigate WebSocketOverHTTP2Test.testServerConnectionClose()
  • #4598 - Add URI mapping to InetAccessHandler
  • #4581 - Remove javadoc for overridden methods
  • #4577 - request getPathInfo returns null
  • #4572 - Replace Jetty Logging
  • #4567 - Jetty logging supporting Throwable as last argument
  • #4563 - remove deprecated jetty-runner
  • #4556 - HttpInput refactoring
  • #4552 - Fix MethodHandles lookup to support JPMS runtime mode
  • #4548 - duplicated classes between jetty and javax websocket implementations
  • #4538 - review WebSocket MessageWriter and MessageReader
  • #4527 - Make the WebSocketServerContainer initialize methods private
  • #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
  • #4507 - Servlet 4 instrument javax.servlet.xxx.mapping request attributes for forward,include and async
  • #4506 - Servlet 4 metadata-complete=true should skip introspection of annotations
  • #4505 - Servlet 4 get/setInitParameter() and get/setAttribute() must throw NPE if arg is null
  • #4502 - respond to close frame with custom close code in jetty-10 websocket
  • #4501 - Review the need for SharedBlockingCallback in jetty-10
  • #4497 - Update paxexam for osgi tests
  • #4462 - WebSocketSession.close() calls onWebSocketClose() with lock held
  • #4460 - Provide a parameterless CustomRequestLog
  • #4459 - Move multipart classes to jetty-server
  • #4450 - websocket-core is exposing internal classes
  • #4447 - websocket module should be split into separate modules for jetty and javax APIs (Jetty-10)
  • #4441 - WebSocket rename for jetty-10
  • #4434 - Implement ServletContext.get/setRequestCharacterEncoding and ServletContext.get/setResponseCharacterEncoding
  • #4433 - Implement ServletContext.addJspFile
  • #4432 - Implement ServletContext.set/getSessionTimeout
  • #4430 - Duplicate generation of servlets/filters/listeners from context xml with quickstart
  • #4408 - Javax WebSocket encoder/decoders not working in jetty 10.0.x
  • #4407 - Javax WebSocket annotations not being used as default EndpointConfig
  • #4401 - Cannot use javax.websocket client from within web app
  • #4400 - Review HttpClient's ContentProvider
  • #4383 - Errors deleting multipart tmp files java.lang.NullPointerException under heavy load
  • #4382 - Support HTTP/1 upgrade to HTTP/2 in HttpClient
  • #4379 - Allow WebSocket extension selection to be done from UpgradeListener
  • #4369 - Review jsp configuration params for jetty-10
  • #4368 - Review need for MultiParts interface in jetty-10
  • #4361 - Update jetty-10.0.x to apache jasper 9.0.29
  • #4349 - Verify WebSocket client behaviour for negotiation of internal extensions.
  • #4342 - OpenID module cannot create HttpClient in Jetty 10
  • #4341 - sending WebSocket frames modifies the payload ByteBuffer
  • #4340 - Continuing after ServiceLoader ServiceConfigurationError.
  • #4321 - Review Graceful shutdown in jetty-10
  • #4315 - Jetty-10 WebSocketSession stopped twice by SessionTracker
  • #4238 - how to pass jetty properties into OSGI for xml configuration
  • #4228 - demo keystore is no longer copied to jetty-base when enabling ssl
  • #4226 - WebSocketCoreSession leaks into JPMS exported classes
  • #4225 - Fix JPMS transitivity
  • #4222 - Major/Minor Version wrong (jetty 10 is servlet 4)
  • #4215 - fix flaky ClientConnectTest and change WS connectTimeout
  • #4152 - WebSocket autoFragment does not fragment based on maxFrameSize
  • #4150 - Module org.eclipse.jetty.alpn.client not found, required by org.eclipse.jetty.proxy
  • #4148 - Cannot configure maxFrameSize with javax websockets.
  • #4147 - autobahn tests for jetty, javax websocket APIs
  • #4076 - Restarting quickstarted webapp throws IllegalStateException: ServletContainerInitializersStarter already exists
  • #4058 - Review Locker
  • #4035 - Fix Secure javax.websocket Client examples
  • #4021 - Removing @deprecated methods / classes from jetty-9.4.x merge
  • #3953 - Client configuration for direct/heap ByteBuffers
  • #3952 - Server configuration for direct/heap ByteBuffers
  • #3951 - Consider adding demand API to HTTP/2
  • #3924 - Deprecate Resource.writeTo(OutputStream, long, long)
  • #3920 - Draft 1 for week 1.
  • #3897 - Jetty 10 new documentation
  • #3872 - Review exposure of JavaxWebSocketServletContainerInitializer
  • #3849 - ClosedChannelException from jetty-test-webapp javax websocket chat example
  • #3847 - Checkstyle cleanup
  • #3839 - JavaxWebSocketServletContainerInitializer fails
  • #3809 - sending WebSocket close frame with error StatusCode does not do a hard close (Jetty-10)
  • #3802 - WebSocket core - autobahn and MessageHandler refactor
  • #3789 - XmlConfiguration set from property
  • #3783 - jetty-10.0.x WebSocket core cleanup
  • #3770 - use the default port of 0 for WebSocket tests
  • #3734 - websocket suspend when input closed
  • #3719 - Clean up jetty-10 modules
  • #3712 - change maxIdleTime to idleTimeout in jetty-10 websockets
  • #3705 - Review ClientUpgradeRequest exception handling
  • #3703 - Cleanup webappconfiguration
  • #3702 - Some fixes for running cometd6 on jetty-10
  • #3666 - WebSocket - Handling sent 1009 close frame.
  • #3661 - JettyWebSocketServerContainer exposes websocket common classes
  • #3660 - jetty-10 WebSocket configuration refactor
  • #3537 - Bootstrapping WebSockets with HTTP/2
  • #3521 - flaky tests in jetty-websocket-tests ClientCloseTest
  • #3465 - websocket negotiation of extension configuration parameters
  • #3462 - client validation of websocket upgrade response
  • #3458 - ensure users of the jetty-websocket-api do not have to see websocket-core classes
  • #3453 - Removing moved Extension classes from jetty-websocket-api
  • #3446 - allow jetty WebSockets to be upgraded using WebSocketUpgradeFilter in jetty-10
  • #3432 - WebSocketChannel bug fixes, cleanup and javadoc updates for FrameHandler
  • #3428 - Support Decoder lists on javax.websocket endpoints
  • #3414 - add support for WebSocket UpgradeListeners in WebSocketClient
  • #3412 - problems with jetty 10 WebSocket session customizer
  • #3399 - XmlConfiguration jetty.webapps.uri is the uri of the webapp not the parent dir
  • #3385 - Modernize jetty-util-ajax
  • #3382 - Jetty WebSocket Session.suspend() not implemented
  • #3380 - WebSocket should support jetty-io Connection.Listener
  • #3379 - Tracking of WebSocket Sessions in WebSocket containers
  • #3366 - javax-websocket-server tests
  • #3351 - Restructure jetty-unixsocket module
  • #3341 - XmlBasedHttpClientProvider in Jetty 10
  • #3340 - Update PushCacheFilter to use Servlet 4.0 APIs
  • #3333 - Jetty 10 standalone cannot start on the module-path
  • #3320 - Review Jetty 10 module-info.java
  • #3308 - Remove deprecated methods from sessions
  • #3298 - Review jetty-10 websocket CompletableFuture usage.
  • #3292 - Add autobahn profile to automatically run autobahn test suite in Jenkins
  • #3290 - async websocket onOpen, onError and onClose in 10.0.x
  • #3288 - Correct websocket artifactIds on jetty-10.0.x
  • #3249 - Update to apache jasper 9.0.14 for jetty-10
  • #3246 - javax-websocket-tests exception stacktraces
  • #3225 - Response.sendError should not set reason.
  • #3224 - Autobahn WebSocketServer failures in jetty 10
  • #3213 - MetaInfConfigurationTest tests disabled in jetty-10.0.x
  • #3209 - upgrade logback and log4j-slf4j (new artifact log4j-slf4j18-impl) to support slf4j api 1.8
  • #3197 - Use jetty specific websocket API jar
  • #3185 - Bundle-RequiredExecutionEnvironment: JavaSE-11 for Jetty 10.0.x
  • #3182 - Restore websocket example files
  • #3177 - fix argLine inheritance
  • #3172 - Adding both WebSocket tests to /test-integration/ to verify behavior that is causing problems from within OSGi.
  • #3170 - WebSocket proxy PoC
  • #3139 - NPE on WebSocketServerContainerInitializer.configureContext(ServletContextHandler)
  • #3106 - Websocket connection stats and request stats
  • #3055 - Break out WebSocket core features into new websocket-core components
  • #3012 - Refactor HttpCompliance and HttpComplianceSection to be friendlier to customization
  • #3011 - Move HttpCompliance to HttpConfiguration
  • #3010 - Move old MultiPart parsing implementation to jetty-http
  • #3009 - Update Jetty 10 to use non-LEGACY Compliance Modes
  • #2996 - ContextHandler.setDefaultContextPath() not implemented for quickstart.
  • #2985 - Jetty 10 Configuration replacement algorithm incorrect
  • #2983 - Jetty 10 Configuration abstraction
  • #2978 - Add module-info.java to relevant Jetty modules
  • #2973 - Build minimum requirement is now JDK 11
  • #2909 - Remove B64Code
  • #2788 - Graceful close of HTTP/2 Connection
  • #2643 - Switch SslContextFactory.keystoreType from JKS to PKCS12
  • #2609 - Make finding orphaned expired sessions common across SessionDataStores
  • #2578 - Use addEventListener(EventListener listener)
  • #2173 - Move server classes and dependencies out from websocket-core
  • #2103 - Server should open connectors early in start sequence
  • #2095 - Remove FastCGI multiplexing
  • #2075 - Deprecating MultiException
  • #1923 - GCThreadLeakPreventer won't work with Java 9
  • #1761 - Make GzipHandler module more configurable
  • #1676 - Remove Deprecated classes & methods
  • #1350 - Dynamic selection of the transport to use based on ALPN on the client side
  • #1337 - MultiPart Part.write(String fileName) - Write method used unexpected path
  • #1165 - Document Jetty 10 changes to Websocket
  • #987 - Can GzipHandler check if .gz file exists only by some paths?
  • #300 - Implement Deflater / Inflater Object Pool
  • #250 - Implement HTTP CONNECT for HTTP/2
  • #132 - ClientConnector abstraction
  • #113 - Add support for NCSA Extended Log File Format