Jetty 9.2.13部署PrimeFaces迁移项目时OmniFaces WebSocket初始化失败问题
问题根因
你遇到的Cannot load platform configurator错误核心是当前运行的Jetty服务器未正确集成Java WebSocket(JSR 356)标准实现,OmniFaces的Socket功能依赖该组件完成初始化,和PrimeFaces版本本身没有直接关联。
解决方案
按以下顺序排查即可解决:
- 确认Jetty版本适配:你使用的JSF 2.2、CDI 1.1技术栈推荐搭配9.4.x系列的Jetty版本,低于9.1的Jetty版本原生不支持JSR 356标准,先确认服务器版本符合要求。
- 补全WebSocket组件:
如果你使用独立部署的Jetty服务器,执行以下命令开启WebSocket模块:
如果你使用嵌入式Jetty或者项目依赖中未引入WebSocket相关包,在构建配置中添加以下依赖即可,注意依赖版本要和Jetty版本匹配:java -jar start.jar --add-to-start=websocket<!-- 仅示例,版本替换为你使用的Jetty对应版本 --> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>jetty-websocket-server</artifactId> <version>9.4.51.v20230217</version> </dependency> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>jetty-websocket-servlet</artifactId> <version>9.4.51.v20230217</version> </dependency> <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> <scope>provided</scope> </dependency> - 排查依赖冲突:检查项目中是否存在多版本的
javax.websocket-api依赖,版本不匹配或者重复引入会导致类加载异常,无法找到默认平台配置器。 - 临时验证方案:如果暂时不需要使用Push功能,可以先将web.xml中
org.omnifaces.SOCKET_ENDPOINT_ENABLED参数值改为false,验证应用其他迁移功能是否正常启动,排除其他迁移问题。
内容的提问来源于stack exchange,提问作者Dan Chirita
相关产品推荐
相关产品推荐

