我有一个打包在OSGi捆绑包中的JSR-356(WebSocket API(代码。 如果需要,servlet 通过 Apache Felix 加载代码。
我想注册一个 ServletRequestListener,我通常会把它放在 Web 描述符中:
<listener>
<listener-class>path.to.my.RequestListener</listener-class>
</listener>
但是由于捆绑包不在类路径中,因此不起作用。
如何注册 ServletRequestListener? 我在想也许有一种方法可以扫描注释,但不确定如何设置。 我的另一个担忧是许多用户禁用扫描以缩短启动时间。
侦听器的工作是初始化 HttpSession,以便我可以在 WebSocket 握手中检索 ServletContext。 如果有一种方法可以在没有听众的情况下实现这一目标,那么这对我来说会更好。
不确定这是否可以用规范完全解决。Pax 网站支持网络套接字。所以也许这可以帮助你:
请参阅pax Web Websocket示例