Spring + Kurento (пристань не работает)

У меня есть приложение Spring Boot, использующее Spring Boot версии 1.3.1 и Spring 4.2.4 для создания простого веб-приложения, которое предоставляет REST API и сервер веб-сокетов.

Я хочу использовать библиотеку Kurento Media Server с этим приложением, но у меня возникают некоторые проблемы.

Эта библиотека Kurento Java использует Jetty для подключения к серверу Kurento Media с помощью веб-сокетов. Проблема, с которой я столкнулся, связана с подключением к этому серверу веб-сокетов, похоже, есть какая-то проблема с Jetty (включена в kurento-client 6.3.0 lib).

Проблема возникает, когда веб-сокет пытается подключиться к серверу. Соединение всегда терпит неудачу (сервер kurento в порядке, см. ниже). Журналы показывают много информации (полный дамп журнала в pastebin), но конкретная проблема выглядит следующим образом:

Caused by: java.lang.AbstractMethodError: org.eclipse.jetty.io.SelectorManager.newEndPoint(Ljava/nio/channels/SocketChannel;Lorg/eclipse/jetty/io/SelectorManager$ManagedSelector;Ljava/nio/channels/SelectionKey;)Lorg/eclipse/jetty/io/EndPoint;
at org.eclipse.jetty.io.SelectorManager$ManagedSelector.createEndPoint(SelectorManager.java:743) [jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processConnect(SelectorManager.java:681) [jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processKey(SelectorManager.java:644) [jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:611) [jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:549) [jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
at org.eclipse.jetty.util.thread.NonBlockingThread.run(NonBlockingThread.java:52) [jetty-util-9.2.14.v20151106.jar:9.2.14.v20151106]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.14.v20151106.jar:9.2.14.v20151106]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.14.v20151106.jar:9.2.14.v20151106]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_60]
15:58:40.574 [     pool-3-thread-1] DEBUG - o.k.j.client.JsonRpcClientWebSocket      - [KurentoClient]  Closing client
15:58:40.574 [     pool-3-thread-1] DEBUG - o.e.j.websocket.client.WebSocketClient   - Stopping org.eclipse.jetty.websocket.client.WebSocketClient@41a60b
15:58:40.576 [     pool-3-thread-1] DEBUG - o.e.j.websocket.client.WebSocketClient   - Stopped org.eclipse.jetty.websocket.client.WebSocketClient@41a60b
15:58:40.576 [       restartedMain] DEBUG - o.k.j.client.JsonRpcClientWebSocket      - [KurentoClient]  Connecting webSocket client to server ws://10.39.40.215:8888/kurento
15:58:40.576 [     pool-3-thread-1] WARN  - o.kurento.jsonrpc.client.JsonRpcClient   - [KurentoClient]  Error sending heartbeat to server. Exception: [KurentoClient]  Exception connecting to WebSocket server ws://10.39.40.215:8888/kurento
15:58:40.577 [     pool-3-thread-1] WARN  - o.kurento.jsonrpc.client.JsonRpcClient   - [KurentoClient]  Stopping heartbeat and closing client: failure during heartbeat mechanism
15:58:40.577 [     pool-3-thread-1] INFO  - o.k.j.client.JsonRpcClientWebSocket      - [KurentoClient]  Closing websocket session to force reconnection

Я уже обращался за помощью в дискуссионную группу Kurento, но пока никто не дал окончательного ответа. Обсуждение здесь: Исключение при подключении к серверу WebSocket.

Мой медиа-сервер Kurento работает, и нет проблем с IP-адресами, портами и другими подобными проблемами, потому что я могу настроить подключение через веб-сокет к серверу Kurento из веб-браузера (используя http://www.websocket.org)./echo.html). Ошибка возникает в стеке Java.

Я также создал отдельное приложение Jetty из этого примера http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html и успешно подключается к серверу веб-сокетов Kurento.

Что-то не так с Jetty и Spring? В этом проблема? Что мне делать, чтобы исправить эту ошибку?


person andrepcg    schedule 09.02.2016    source источник


Ответы (1)


Проблема была с зависимостями Jetty, Kurento нужна определенная версия, и она не включалась автоматически.

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-util</artifactId>
    <version>9.3.0.M2</version>
</dependency>

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-io</artifactId>
    <version>9.3.0.M2</version>
</dependency>
person andrepcg    schedule 12.02.2016