Зарегистрируйте ServletRequestListener от OSGi Bundle
У меня есть код JSR-356 (API WebSocket), который упакован в комплект OSGi. Сервлет загружает код через Apache Felix, если это необходимо.
Я хочу зарегистрировать ServletRequestListener, который я обычно помещаю в веб-дескриптор:
<listener>
<listener-class>path.to.my.RequestListener</listener-class>
</listener>
но поскольку пакет не находится в classpath, это не сработает.
Как я могу зарегистрировать ServletRequestListener? Я думаю, что, возможно, будет способ сканирования аннотаций, но я не уверен, как это настроить. Другая моя проблема в том, что многие пользователи отключают сканирование, чтобы улучшить время запуска.
Работа слушателя состоит в том, чтобы инициализировать HttpSession, чтобы я мог получить ServletContext в рукопожатии WebSocket. Если есть способ достичь этого без слушателя, это будет работать для меня еще лучше.
1 ответ
Не уверен, что это можно решить полностью с помощью спецификаций. В сети Pax есть поддержка websocket. Так что, возможно, это может помочь вам:
Смотрите пример pax web websocket