OSGi环境下无法启动Jetty 11 WebSocket服务器求助
Felix OSGi环境下Jetty 11 WebSocket启动问题解决
问题根源
启动时出现的osgi.serviceloader.processor和osgi.serviceloader.registrar依赖缺失,是因为Jetty 11(适配JEE 10)启用了OSGi R7 Service Loader Mediator规范,用于桥接JDK Service Loader与OSGi服务模型。这两个扩展是Jetty WebApp和WebSocket模块启动的必要条件,无法省略。
解决步骤
1. 添加Service Loader Mediator Bundle
需要引入Apache Felix官方的Service Loader Mediator bundle,它提供所需的osgi.extender服务。获取与Felix 7.x兼容的版本(如1.0.2),放入bundle目录。
2. 补充Jetty核心依赖
当前配置缺少Jetty运行必需的基础组件,需添加:
jetty-util.jarjetty-io.jarjetty-server.jarjetty-security.jar(webapp场景必备)
3. 更新启动配置
修改felix.auto.start.1,加入新增bundle:
felix.auto.start.1= file:./bundle/slf4j-api.jar file:./bundle/slf4j-jdk14.jar file:./bundle/org.apache.felix.serviceloader-mediator.jar file:./bundle/jetty-util.jar file:./bundle/jetty-io.jar file:./bundle/jetty-server.jar file:./bundle/jetty-security.jar file:./bundle/jetty-xml.jar file:./bundle/jetty-webapp.jar file:./bundle/websocket-jetty-api.jar file:./bundle/websocket-jetty-common.jar file:./bundle/websocket-core-common.jar file:./bundle/websocket-servlet-11.0.18.jar file:./bundle/websocket-core-server-11.0.18.jar file:./bundle/websocket-jetty-server.jar file:./bundle/org.apache.felix.http.servlet-api.jar file:./bundle/org.apache.felix.log.jar file:./bundle/org.apache.felix.http.jetty.jar
4. 验证启动状态
启动Felix后,通过Gogo shell执行lb命令,确认所有Jetty和WebSocket相关bundle状态为Active。若仍有问题,检查所有Jetty组件版本是否统一为11.0.18,版本不一致会引发兼容性问题。
内容的提问来源于stack exchange,提问作者freyssin
相关产品推荐
相关产品推荐

