Зарегистрируйте 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

Другие вопросы по тегам