У меня есть приложение Spring, которое подключается к конечной точке websocket. Для этого я использую класс Spring StandardWebSocketClient.Каковы другие реализации WebsocketClient весной?
WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
String url = "ws://localhost:8080/asynccontrol";
StompSessionHandler handler = new MySessionHandler();
stompClient.connect(url, handler);
Это работает в Jetty без проблем. Теперь мне нужно развернуть это приложение в среде WebSphere JRE7. Поскольку эта версия WAS не поддерживает JSR-356, я должен использовать другую реализацию. Из этого link WebsocketClient может быть типа:
- StandardWebSocketClient в режиме исполнения JSR-356
- JettyWebSocketClient с использованием Jetty 9+ родной WebSocket API
- Любая реализация WebSocketClient Спринга
Первый выбор недоступен (нет времени исполнения JSR-356), второй вариант недоступен (требуется JRE8, получение неподдерживаемой версии major.minor версии 52), что это третий выбор? Каковы другие реализации WebSocketClient от Spring?
Можно ли перекомпилировать org.eclipse.jetty.websocketclient в JRE7?
Решение
Я не могу использовать jetty9.2, поскольку он не совместим с JettyWebSocketClient адаптером. Однако я мог бы просто использовать api без адаптера, с StandardWebSocketClient.
Я установил tomcat8, и он также работает с StandardWebSocketClient. В tomcat7 я все еще получал несовместимую ошибку подтипа WsContainerProvider, возможно, ошибку для моей конкретной версии tomcat. Для плана резервного копирования я также разработал TyrusWebSocketClient. Спасибо вам, ребята.
Возможно использование API-интерфейса клиента Jetty 9.2.x в JRE7 (только для Jetty 9.3.x для JRE8) –