从OSGi包注册ServletRequestListener

从OSGi包注册ServletRequestListener,osgi,servlet-3.0,osgi-bundle,servlet-listeners,jsr356,Osgi,Servlet 3.0,Osgi Bundle,Servlet Listeners,Jsr356,我有一个打包在OSGi包中的JSR-356(WebSocket API)代码。如果需要,servlet将通过ApacheFelix加载代码 我想注册一个ServletRequestListener,我通常会将其放在web描述符中: <listener> <listener-class>path.to.my.RequestListener</listener-class> </listener> path.to.my.RequestListe

我有一个打包在OSGi包中的JSR-356(WebSocket API)代码。如果需要,servlet将通过ApacheFelix加载代码

我想注册一个ServletRequestListener,我通常会将其放在web描述符中:

<listener>
  <listener-class>path.to.my.RequestListener</listener-class>
</listener>

path.to.my.RequestListener
但是由于捆绑包不在类路径中,这将不起作用

如何注册ServletRequestListener?我在想,也许有一种扫描注释的方法,但不确定如何设置。我的另一个担忧是,许多用户禁用扫描以缩短启动时间


侦听器的工作是初始化HttpSession,以便在WebSocket握手中检索ServletContext。如果有一种方法可以在没有监听器的情况下实现这一点,那么这对我来说会更好。

不确定是否可以通过规范完全解决这一问题。PaxWeb具有websocket支持。因此,也许这可以帮助您:


请参见

您能更详细地描述一下您的设置吗?您说包不在类路径中。如何在类路径中创建一个bundle。在OSGi中也没有单一的类路径。@ChristianSchneider是的,我只是想澄清为什么web.xml不起作用。我删除了该语句以避免混淆。谢谢,但它是否会为每个请求初始化HttpSession?如果是,怎么做?这是我在这里的主要目标,因为除此之外,我还有其他工作要做。