Это работает:WebSockets не работает без WebApp
String webappDir = "...";
context = tomcat.addWebapp("/", new File(webappDir).getAbsolutePath());
Это не:
context = tomcat.addContext("/", new File("").getAbsolutePath());
Я действительно не нужен webappDir
в данном случае, потому что я не служу ни одной страницы JSP или клиентских ресурсов, я просто использую только серверный сервер response.getWriter().println(...);
.
Исключение не исключено, websocket просто не открывается.
Могу ли я предположить, что это ошибка кота?
Если вам не нужен контекст веб-приложения, вы можете использовать Java API для WebSockets JSR 356 напрямую вместо API-интерфейсов tomcat. – vzamanillo
Вы можете создать своего клиента как отдельное приложение Java с JSR 356, чтобы создать сервер, на котором вы можете использовать любой контейнер сервера Java EE с поддержкой встроенных или встроенных веб-камер (GlassFish, Apache Tomcat, Jetty ...) для развертывания WebSocketServlet и прослушивания для клиентских сообщений. – vzamanillo
Я думаю, что это невозможно, API-интерфейсы websockets предназначены для использования сокетов в веб-приложениях, поэтому вам нужен контейнер, если вам не нужно веб-приложение, не используйте веб-сайты, просто используйте Java-сокеты. – vzamanillo