我有一個JSR-356 WebSocket應用程序。我使用監聽器對其進行初始化,這樣我就不需要依靠jar掃描註釋來減慢啓動速度。如何將ServletListener限制爲單個上下文?
例如,我用一個ServletContextListener
實現,登記的WebSocket的EndPoint
:
@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?