You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.jar
  • jetty-io.jar
  • jetty-server.jar
  • jetty-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:29:50