java - Spring + Kurento( jetty 不工作)

标签 java spring maven spring-mvc kurento

我有一个 Spring Boot 应用程序,使用 spring boot 版本 1.3.1 和 Spring 4.2.4 创建一个提供 REST API 和 websocket 服务器的简单 Web 应用程序。

我想将 Kurento Media Server 库与此应用程序一起使用,但遇到了一些问题。

此 Kurento Java 库使用 Jetty 通过 websockets 连接到 Kurento Media 服务器。我面临的问题是连接到这个 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 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 和端口没有问题以及其他类似问题,因为我可以从 Web 浏览器设置到 Kurento 服务器的 Websocket 连接(使用 http://www.websocket.org/echo.html )。错误发生在 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>

关于java - Spring + Kurento( jetty 不工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35300632/

相关文章:

java - 无法访问属性

spring - 为什么 Spring Boot 启动器依赖项被设计为与 Maven 传递依赖机制的既定意图相反?

java - 将对象列表映射到对象的 ParameterizedRowMapper

java - 使用 spotify maven 插件构建 Docker 镜像时更改了小二进制文件

java - 面临为 Eclipse Juno 安装 m2e maven 插件的问题

java - J2ME 的 JSON 解析器

java - Java 中的三元表达式是如何求值的?

java - MIDI 乐器不适用于 javax.sound.midi.MidiChannel

java - 按顺序调用方法

maven - 无法在 maven-pmd-plugin 5.0.2 中使用自定义规则集