Сервер Java / Spring STOMP отказывается переходить на протокол websocket - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь объединить некоторый код, который я нашел в Интернете по адресу:

https://spring.io/guides/gs/messaging-stomp-websocket/

и

https://www.baeldung.com/websockets-api-java-spring-client

, чтобы создатьпростое клиент / серверное приложение STOMP.

Мой код можно найти по адресу: https://github.com/spierepf/stomp-sandbox/tree/feature/smart-client

Проблема, с которой я сталкиваюсь, заключается в том, что сервер отказывается переключать протоколы на WebSockets:

Exception in thread "main" java.util.concurrent.ExecutionException: javax.websocket.DeploymentException: Handshake error.
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at org.springframework.util.concurrent.SettableListenableFuture.get(SettableListenableFuture.java:112)
    at com.example.client.smart.StompClient.main(StompClient.java:27)
Caused by: javax.websocket.DeploymentException: Handshake error.
    at org.glassfish.tyrus.client.ClientManager$3$1.run(ClientManager.java:674)
    at org.glassfish.tyrus.client.ClientManager$3.run(ClientManager.java:712)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.glassfish.tyrus.client.ClientManager$SameThreadExecutorService.execute(ClientManager.java:866)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
    at org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:511)
    at org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:355)
    at org.springframework.web.socket.client.standard.StandardWebSocketClient$1.call(StandardWebSocketClient.java:150)
    at org.springframework.web.socket.client.standard.StandardWebSocketClient$1.call(StandardWebSocketClient.java:147)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.glassfish.tyrus.core.HandshakeException: Response code was not 101: 200.
    at org.glassfish.tyrus.client.TyrusClientEngine.processResponse(TyrusClientEngine.java:320)
    at org.glassfish.tyrus.container.jdk.client.ClientFilter.processRead(ClientFilter.java:189)
    at org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:134)
    at org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:136)
    at org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:136)
    at org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:299)
    at org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:283)
    at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:127)
    at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead(UnixAsynchronousSocketChannelImpl.java:437)
    at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:191)
    at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213)
    at java.base/sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:306)
    at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    ... 1 more
...