Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
http-2.2.1
-
None
Description
Currently the Servlet API is exported from the Http Service Bundle bundle and the Jetty bundle.
In a typical web application a large number of bundles will typically wire to the Servlet API and to the Http Service API. To detach the application from the Http Service implementation, if would be usefull to have the APIs fully detached from the implementations.
As such, I suggest we do not export the Servlet API from the Jetty bundle but expect the Servlet API to be exported from somewhere else.
As the Http Service Bundle bundle is a convenience all-in-one bundle, it does not hurt for this bundle to export the API.
To help solve the versioning problem, I actually think we should create our own Servlet API bundle. The versioning problem is that the Servlet API 3.0 spec is actually backwards compatible with Servlet 2.5 but chose to upgrade the specification major version. Unfortunately that does not play well with semantic versioning when applying the specification version to the API exports (as is customarily but wrongly done).
So, our bundle should:
- be based on the Tomcat Servlet API library (since this is ASL2 licensed and can easily be included)
- export Servlet API at version 2.6 (which is a custom compromise) as well as version 3.0
- also Provide-Capability for the Servlet API capability