【发布时间】:2017-01-31 08:04:18
【问题描述】:
我有一个 JSR-356 WebSocket 应用程序。我使用监听器来初始化它,这样我就不需要依赖 jar 扫描来减慢启动速度。
例如,我使用注册 WebSocket 的EndPoint 的ServletContextListener 实现:
@Override
public void contextInitialized(ServletContextEvent sce) {
ServerContainer serverContainer = (ServerContainer) sce
.getServletContext()
.getAttribute("javax.websocket.server.ServerContainer");
serverContainer.addEndpoint(MyEndPoint.class);
}
然后在 web.xml 部署描述符中注册那个监听器:
<listener>
<listener-class>my.ServletContextListenerImpl</listener-class>
</listener>
问题是现在 EndPoint 已为所有 Web 上下文注册,这不是我想要的。
如何将侦听器限制在特定的上下文中?或者通过配置在侦听器上设置“init params”,然后我可以在我的 ServletContextListener 中检查并仅在 EndPoint 匹配某些 init 参数时才注册它?
【问题讨论】:
标签: java servlets glassfish jetty servlet-listeners