FELIX-6692 jetty 12.x websockets new approach (based on #309) (#310)

* Revert "Add jetty websocket support to Jetty12  (#298)"

This reverts commit 6d95c936dfc7767f1cea23d1db98a8c7d7810378.

* FELIX-6692 Add Jetty WebSocket support for jetty 12.x
- Apply 11.x approach to jetty12 bundle
- Add two new classifiers 'with-jetty-ee10-websockets' and 'with-jakarta-ee10-websockets' to have a fat jar containing the appropriate websocket classes

* Working example base on previous code.
Do note that the workaround in FelixJettyWebSocketServlet are still required; the initialization code in the Jetty12 bundle doesn't seem to work

* * Enable cross context support to allow WebSockets to be registered in Jetty 12.
See https://github.com/jetty/jetty.project/blob/jetty-12.0.x/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java#L510 and https://github.com/jetty/jetty.project/issues/9774

* Add example based on registering the websocket to the main servlet context instead of the per-bundle one
-

* Added paxweb unit tests based on the Jetty11 work from #309

* Fix version

* Fix message

* Test casing

* Update README.md

* Make client optional

* Add Jetty12 bundle to pom

* Store the WebSocket container reference and set it on the shared servlet context once available
This removes the need to set setCrossContextDispatchSupported, as the WS container is available on the proper servlet context itself

* Update example to no longer use the root context.
Removed other WebSocket example, as this is no longer needed with the new approach.
Updated documentation.

* Add servlet based example again, as it shows another example of how to register a WebSocket endpoint that abides to the servlet context it's registered to.

* Rename class

* Comment

* Comments

* Remove classloader code as it now also works without

* Rename test class to EE10

* Small changes to README.md
15 files changed
tree: 6be039e262f6c718be4a03fad3a447e1f636b4fb
  1. bundlerepository/
  2. bundlerepository.osgi-ct/
  3. cm.json/
  4. configadmin/
  5. configadmin-plugins/
  6. configurator/
  7. connect/
  8. coordinator/
  9. dependencymanager/
  10. doap/
  11. eventadmin/
  12. examples/
  13. features/
  14. fileinstall/
  15. framework/
  16. framework.security/
  17. gogo/
  18. healthcheck/
  19. http/
  20. inventory/
  21. ipojo/
  22. log/
  23. log.extension/
  24. main/
  25. main.distribution/
  26. metatype/
  27. pom/
  28. resolver/
  29. rootcause/
  30. scr/
  31. scr-ext-anno/
  32. systemready/
  33. tools/
  34. utils/
  35. webconsole/
  36. webconsole-plugins/
  37. .gitignore
  38. check_staged_release.sh
  39. CODE_OF_CONDUCT.md
  40. CONTRIBUTING.md
  41. LICENSE
  42. README.md
  43. stage_existing_artifact.sh
README.md

Apache Felix

The Apache Felix project is a collection of semi-related OSGi sub-projects that build and release individually.

Felix Framework

The flagship project is the Apache Felix Framework which implements the OSGi Core R7 specification. The /framework directory contains the source and build tree for the OSGi-compliant framework implementation.

Directly related projects:

  • main /main* - provides an executable jar that launches the Felix framework.

OSGi Core

OSGi Compendium

Several sub-projects cover various OSGi Compendium specifications such as:

Extra Features

Several projects provide extra features to an OSGi runtime.

  • bundle repository /bundlerepository - Bundle repository service.
  • connect /connect - A service registry that enables OSGi style service registry programs without using an OSGi framework.
  • dependency manager /dependencymanager - A versatile java API, allowing to declaratively register, acquire, and manage dynamic OSGi services.
  • fileinstall /fileinstall* - A utility to automatically install bundles from a directory.
  • gogo /gogo - A command line shell, runtime and set of base commands for interacting with and introspecting an OSGi framework.
  • health checks /healthcheck/* - An extensible framework to monitor the status of the OSGi container at runtime. (contains systemready)
  • inventory /inventory - Provides some mechanisms to get the current state of the system and therefore provides an inventory of the system.
  • ipojo /ipojo - A service component runtime aiming to simplify OSGi application development.
  • jaas support /jaas - Bundle to simplify JAAS usage within OSGi environment.
  • logback /logback - A simple integration of the OSGi R7 Log (1.4) service to Logback backend.
  • OSGi metrics /metrics/osgi - Collecting and publishing metrics related to OSGi applications
  • rootcause /rootcause - Finding the root cause of problems with OSGi declarative services components.
  • utils /utils - Utility classes for OSGi (intended for embedding within other bundles.)
  • webconsole /webconsole* - Web Based Management Console for OSGi Frameworks.
  • and many other OSGi things

Build tools

The /tools directory contains various build tools.

  • maven-bundle-plugin /tools/maven-bundle-plugin - A maven plugin for building OSGi bundles.
  • osgicheck-maven-plugin /tools/osgicheck-maven-plugin - Maven plugin for checking several OSGi aspects of your project.