Open maho7791 opened 1 year ago
Changes between 5 and 6 (interfaces):
jakarta.servlet.descriptor.JspPropertyGroupDescriptor.getErrorOnELNotFound()
jakarta.servlet.http.Cookie.set|getComment()
jakarta.servlet.http.Cookie.set|getVersion()
jakarta.servlet.http.Cookie.setAttribute()
jakarta.servlet.http.Cookie.getAttribute()
jakarta.servlet.http.Cookie.setAttributes()
jakarta.servlet.http.HttpServletRequest.isRequestedSessionIdFromUrl()
(deprecated in version 5)jakarta.servlet.http.HttpServletRequestWrapper.isRequestedSessionIdFromUrl()
(deprecated in version 5)jakarta.servlet.http.HttpServletResponse.encodeUrl()
(deprecated in version 5)jakarta.servlet.http.HttpServletResponse.encodeRedirectUrl()
(deprecated in version 5. encodeRedirectURL()
should be used)jakarta.servlet.http.HttpServletResponse.setStatus()
(deprecated in version 5)jakarta.servlet.http.HttpServletResponseWrapper.encodeUrl()
(deprecated in version 5)jakarta.servlet.http.HttpServletResponseWrapper.encodeRedirectUrl()
(deprecated in version 5. encodeRedirectURL()
should be used)jakarta.servlet.http.HttpServletResponseWrapper.setStatus()
(deprecated in version 5)jakarta.servlet.http.HttpSession.getSessionContext()
(deprecated in version 5)jakarta.servlet.http.HttpSession.getValue()
(deprecated in version 5)jakarta.servlet.http.HttpSession.getValueNames()
(deprecated in version 5)jakarta.servlet.http.HttpSession.putValue()
(deprecated in version 5)jakarta.servlet.http.HttpSession.removeValue()
(deprecated in version 5)jakarta.servlet.http.HttpSessionContext
class (deprecated in version 5)jakarta.servlet.http.HttpUtils
class (deprecated in version 5)jakarta.servlet.ServletConnection
interfacejakarta.servlet.ServletContext.getServlet()
(deprecated in version 5)jakarta.servlet.ServletContext.getServlets()
(deprecated in version 5)jakarta.servlet.ServletContext.getServletNames()
(deprecated in version 5)jakarta.servlet.ServletContext.log()
(deprecated in version 5)jakarta.servlet.ServletRequest.getRealPath()
(deprecated in version 5)jakarta.servlet.ServletContext.getRequestId()
jakarta.servlet.ServletContext.getProtocolRequestId()
jakarta.servlet.ServletContext.getServletConnection()
jakarta.servlet.ServletRequestWrapper.getRealPath()
(deprecated in version 5)jakarta.servlet.ServletContextWrapper.getRequestId()
jakarta.servlet.ServletContextWrapper.getProtocolRequestId()
jakarta.servlet.ServletContextWrapper.getServletConnection()
jakarta.servlet.SessionCookieConfig.set|getComment()
(no longer required by RFC 6265)jakarta.servlet.SessionCookieConfig.setAttribute()
jakarta.servlet.SessionCookieConfig.getAttribute()
jakarta.servlet.SessionCookieConfig.getAttributes()
jakarta.servlet.SingleThreadModel
interfacejakarta.servlet.UnavailableException
constructors that accept Servlet
paramater (deprecated in version 5)jakarta.servlet.UnavailableException.getServlet()
(deprecated in version 5)Changes between 5 and 6 (documentation):
jakarta.servlet.annotation.HttpMethodConstraint.value()
mentions now RFC 7231 instead of RFC 2616 (same for several other classes)jakarta.servlet.http.Cookie.Cookie()
mentions now RFC 6265 instead of RFC 2109 (same for several other classes)Changes between 5 and 6 (implementation):
jakarta.servlet.http.HttpServlet.doHead()
- HEAD without body is handled only in legacy mode (jakarta.servlet.http.legacyDoHead
init param). By default, doGet()
is calledChanges between 5 and 6 (other):
jakarta.servlet.http.HttpServlet
- added jakarta.servlet.http.legacyDoHead
optionjakarta/servlet/resources/jakartaee_10.xsd
jakarta/servlet/resources/jsp_3_1.xsd
jakarta/servlet/resources/web-app_6_0.xsd
jakarta/servlet/resources/web-common_6_0.xsd
jakarta/servlet/resources/web-fragment_6_0.xsd
jakarta/servlet/resources/web-jsptaglibrary_3_1.xsd
Please check for any removed API used in the TCK as we would need to reimplement or remove those tests.
I think it will create a lot of problems to our users if this is a major version update of the API without any good reason. Code written for Servlet API 5 and Servlet Whiteboard 2 should work without any change in a Servlet Whiteboard running with Servlet API 6 (of course under the assumption that no removed API is used). So to support Jakarta Servlet API 6.x, we mostly need wording updates to the spec and an increased import range for the servlet API to include 5 and 6. If the whiteboard will be a major version change then this will make it impossible to provide an implementation that supports whiteboard 2 and whiteboard 3 - and that will create too much of a burden for our users and the whole ecosystem. Even if the new whiteboard is using features that only exists on Servlet API 6 (though I don't know what that really should be), than still a minor version update should be enough. Keep in mind that the http whiteboard support servlet 3 and 4 without any problems. In reality the implementations even supported servlet 2.x
+1 for [5, ∞)
(or a bit less radical).
This is another compatibility problem between OSGi versioning packages and Maven/Jakarta versioning releases/jars/specs...
For the record, we have now an implementation in Apache Felix that is based on Servlet 6 (Jetty 12) and supports all existing OSGi specifications (http service, http whiteboard, and servlet whiteboard). It shows that there is no real need to a servlet whiteboard update (other than wording), especially no need for a major version update. https://github.com/apache/felix-dev/tree/master/http/jetty12
Jetty 12 had some issues with welcome files handling, but I hope it didn't affect Felix-HTTP.
I didn't check yet, but does it mean that Felix-HTTP still uses/implements org.osgi.service.http
service with HttpService
interface accepting javax.servlet.Servlet
parameters?
welcome files should not affect Apache Felix http and yes, it still supports the http service specification with the javax.servlet namespace. It provides a painless upgrade path (at least thats the theory).
I can't see you on Slack, so let me ask here - is https://github.com/apache/felix-dev/tree/master/http/jetty12 declared as module? or is it (for now) a PoC not part of multi-module projects?
Best place to ask is the Apache Felix dev mailing list - what type of module do you mean, Java, Maven..?
I was just checking https://github.com/apache/felix-dev/blob/master/http/pom.xml#L41-L53. I also seejetty12
Maven profile, but it doesn't include jetty12
module.
But I could check the source and I get it now - org.apache.felix.http.jakartawrappers.ServletWrapper
is what I was looking for ;). Thanks.
Do we really need no update on the the versions import versions?
jakarta.servlet;version="[5.0,6)", jakarta.servlet.http;version="[5.0,6)"
like:
jakarta.servlet;version="[5.0,7)", jakarta.servlet.http;version="[5.0,7)"
Depends on who "we" is - if you want to have your bundle running with Servlet 5 and 6 this is one way of doing it
The imports of the org.osgi.service.servlet API are restricted to: jakarta.servlet;version="[5.0,6)", jakarta.servlet.http;version="[5.0,6)"
We should prepare the API for Servlet 6