Register a custom WebSocketCreator in your WebSocketServlet.configure() method.
Skip the ServletContext entirely.
Just pass in the HttpClient into your custom creator.
public class MyCreator implements WebSocketCreator
{
private HttpClient client;
public MyCreator(HttpClient client)
{
this.client = client;
}
@Override
public Object createWebSocket(ServletUpgradeRequest servletUpgradeRequest, ServletUpgradeResponse servletUpgradeResponse)
{
return new MyEndpoint(client);
}
}
public class MyWebSocketServlet extends WebSocketServlet
{
private HttpClient httpClient;
@Override
public void init() throws ServletException
{
httpClient = new HttpClient();
try
{
httpClient.start();
}
catch (Exception e)
{
throw new ServletException("Unable to start HttpClient", e);
}
}
@Override
public void destroy()
{
try
{
httpClient.stop();
}
catch (Exception e)
{
throw new RuntimeException("Unable to stop HttpClient", e);
}
}
@Override
public void configure(WebSocketServletFactory webSocketServletFactory)
{
webSocketServletFactory.setCreator(new MyCreator(httpClient));
}
}