https://issues.apache.org/bugzilla/show_bug.cgi?id=55314
Bug ID: 55314
Summary: Provide option to allow programmatic deployment of
server (WebSocket) endpoint at runtime
Product: Tomcat 8
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Catalina
Assignee: [email protected]
Reporter: [email protected]
JSR-356 explicitly states that the addEndpoint methods on ServerContainer "are
only operational during the application deployment phase of an application.
Specifically, as soon as any of the server endpoints within the application
have accepted an opening handshake request, the apis may not longer be used.
This restriction may be relaxed in a future version."
There are cases when it is useful to have consolidated handling of HTTP
requests including WebSocket handshake requests. For example SockJS [1] defines
a URL structure of the form "/endpointPrefix/<server>/<session>/<transport>"
where "transport" can be an HTTP-based (e.g. streaming, long polling) or
WebSocket (see the "Session URLs" section). The most natural way to implement
this is to create a single SockJsServlet that handles all requests under
"/endpointPrefix" including requests for "/endpointPrefix/*/*/websocket".
I'd like to propose that in the very least Tomcat make this possible through a
flag. I will also create a spec ticket to suggest it for the next iteration. I
think it's also worth considering whether this should be the default behavior,
with a flag being necessary only to revert back to strict compliance.
For what it's worth, pretty much all WebSocket APIs I'm familiar with (Java and
non-Java) do make it possible to create some kind of HTTP request handler that
can also initiate a WebSocket handshake. That includes the Tomcat 7
WebSocketServlet for which it's conceivable that some existing users may
realize this limitation when upgrading to Tomcat 8.
[1] http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]