Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FELIX-6746 Lazy initialization for servlets extending JettyWebSocketServlet #364

Open
wants to merge 13 commits into
base: master
Choose a base branch
from

Conversation

paulrutter
Copy link
Contributor

@paulrutter paulrutter commented Dec 30, 2024

https://issues.apache.org/jira/projects/FELIX/issues/FELIX-6746

This PR adds lazy initialization for all servlets extending JettyWebSocketServlet.
This resolves the issue where this was needed for earlier.

It also fixes the case where the legacy HTTP service is used in combination with the ServletWrapper.
The ServletWrapper instances are checked against wrapping a JettyWebSocketServlet as well.

Two integration tests added:

  • using JettyWebSocketServlet via the whiteboard pattern.
  • using JettyWebSocketServlet via the HTTP service (by using ServletWrapper). This required passing along the websocket attributes to the servlet context, when registerServlet is called. This was already done for the whiteboard implementation earlier.

The whiteboard example has also been updated to reflect this.

@cziegeler what do you think of this approach?

- Call init lazy in case of servlets that extend JettyWebSocketServlet
- This fixes the IT as well
- Extract test methods
- Remove ServletWrapper support, as it doesn't work properly yet
- Make solution thread-safe
- Fix destroy logic
- Minor test improvements
- Add support for HttpService / ServletWrappers
- Add IT to guard it
- Update whiteboard examples; the FelixJettyWebSocketServlet is no longer needed with these fixes
- Disable HTTP service test, as it fails with "java.lang.IllegalStateException: JettyServerFrameHandlerFactory not found"
- Fix passing along shared websocket attributes to the HttpContext in SharedHttpServiceImpl, when registerServlet is called
- Enable test again
@paulrutter
Copy link
Contributor Author

@enapps-enorman would you able to review this one? Since you handled the websocket functionality earlier as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant