Spring + Kurento(码头不工作)
Spring + Kurento (Jetty not working)
我有一个 Spring 引导应用程序,使用 spring 引导版本 1.3.1 和 Spring 4.2.4 创建一个提供 REST API 和一个 websocket 服务器。
我想在此应用中使用 Kurento 媒体服务器库,但我 运行 遇到了一些问题。
这个 Kurento Java 库使用 Jetty 通过 websockets 连接到 Kurento 媒体服务器。我面临的问题是连接到这个 websocket 服务器,看起来 Jetty 有问题(包含在 kurento-client 6.3.0 库中)。
当 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.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 讨论组寻求帮助,但还没有人给出最终答案。此处讨论:Exception connecting to WebSocket server.
我的 Kurento 媒体服务器已启动,IP 和端口没有问题以及其他类似问题,因为我可以从网络浏览器(使用 http://www.websocket.org/echo.html)设置到 Kurento 服务器的 websocket 连接。错误发生在 java 堆栈中。
我还根据这个示例创建了一个独立的 Jetty 应用程序 http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html 并成功连接到 Kurento websocket 服务器。
Jetty 和Spring 有问题吗?那是问题所在吗?我应该怎么做才能修复此错误?
问题出在 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>
我有一个 Spring 引导应用程序,使用 spring 引导版本 1.3.1 和 Spring 4.2.4 创建一个提供 REST API 和一个 websocket 服务器。
我想在此应用中使用 Kurento 媒体服务器库,但我 运行 遇到了一些问题。
这个 Kurento Java 库使用 Jetty 通过 websockets 连接到 Kurento 媒体服务器。我面临的问题是连接到这个 websocket 服务器,看起来 Jetty 有问题(包含在 kurento-client 6.3.0 库中)。
当 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.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 讨论组寻求帮助,但还没有人给出最终答案。此处讨论:Exception connecting to WebSocket server.
我的 Kurento 媒体服务器已启动,IP 和端口没有问题以及其他类似问题,因为我可以从网络浏览器(使用 http://www.websocket.org/echo.html)设置到 Kurento 服务器的 websocket 连接。错误发生在 java 堆栈中。
我还根据这个示例创建了一个独立的 Jetty 应用程序 http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html 并成功连接到 Kurento websocket 服务器。
Jetty 和Spring 有问题吗?那是问题所在吗?我应该怎么做才能修复此错误?
问题出在 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>