2016-02-09 3 views
1

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

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

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

Проблема возникает, когда веб-камера пытается подключиться к серверу. Соединение всегда терпит неудачу (сервер kurento в порядке, см. Ниже). Журналы показывают много информации (full log dump in 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 [email protected] 
15:58:40.576 [  pool-3-thread-1] DEBUG - o.e.j.websocket.client.WebSocketClient - Stopped [email protected] 
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, но никто, как не придумал окончательный ответ еще. Обсуждение здесь: Exception connecting to WebSocket server.

Мой медиа-сервер My 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? Это проблема? Что я должен сделать, чтобы исправить эту ошибку?

ответ

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>