2016-02-09 73 views
1

我有一個春天啓動的應用程序,使用彈簧引導版本1.3.1和4.2.4春季創建一個簡單的Web應用程序提供了一個REST API和WebSocket的服務器。春+ Kurento(碼頭不工作)

我想用Kurento媒體服務器的lib這個應用程序,但我遇到的一些問題。

這Kurento Java的lib中使用碼頭連接到使用的WebSockets的Kurento媒體服務器。我面臨的問題是連接到這個websocket服務器,它看起來像Jetty有問題(包含在kurento-client 6.3.0 lib中)。

當websocket嘗試連接到服務器時發生問題。連接總是失敗(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

我的Kurento媒體服務器已啓動,IP和端口以及其他類似問題沒有問題,因爲我可以通過Web瀏覽器設置與Kurento服務器的websocket連接(使用http://www.websocket.org/echo.html)。該錯誤發生在java堆棧中。

我也從這個例子http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html創建一個獨立的應用程序碼頭併成功地連接到Kurento的WebSocket服務器。

Jetty和Spring有什麼問題嗎?這是問題嗎?我該怎麼辦才能解決這個錯誤?

回答

1

的問題是與碼頭的依賴,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>