spring boot 2.X集成webSocket使用maven install时报错: Error creating bean with name 'serverEndpointExporter'

首先上报错信息:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/pky/testmybatis/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available

出现这个问题首先排除掉springboot版本问题,本人使用spring boot 1.5和2.X都亲测过!

 

主要的问题就是在项目中的测试类,解决:直接注释掉测试类所有代码问题解决,maven install成功!

 

 

### 解决方案 `org.springframework.beans.factory.BeanCreationException` 异常通常表明在 Spring 容器初始化过程中,某些 Bean 的创建失败。具体到 `serverEndpointExporter` 这一 Bean,它通常是与 WebSocket 配置相关的组件。以下是可能的原因及其解决方案: #### 1. **缺少必要的依赖** 如果项目中未引入 WebSocket 所需的核心依赖项,可能会导致无法加载 `serverEndpointExporter` Bean。 确保项目的构建文件(Maven 或 Gradle)中包含了以下依赖项[^3]: 对于 Maven: ```xml <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-websocket</artifactId> <version>9.0.62</version> </dependency> ``` 对于 Gradle: ```gradle implementation 'javax.websocket:javax.websocket-api:1.1' implementation 'org.apache.tomcat:tomcat-websocket:9.0.62' ``` #### 2. **配置类缺失或错误** `serverEndpointExporter` 是由 Spring 提供的一个核心组件,负责注册和管理 WebSocket 终端点。如果没有正确声明启用 WebSocket 支持的配置类,可能导致此 Bean 创建失败。 需要定义一个配置类来启用 WebSocket 功能,并注册 `ServerEndpointExporter` Bean[^4]: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } } ``` #### 3. **WebSocket 注解支持未开启** 如果使用基于注解的方式开发 WebSocket 应用程序,则需要确保启用了相应的注解扫描功能。可以在主应用程序类上添加 `@EnableScheduling` 和其他必要注解[^5]: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class WebSocketApplication { public static void main(String[] args) { SpringApplication.run(WebSocketApplication.class, args); } } ``` #### 4. **服务器环境不兼容** 部分容器(如 Tomcat)版本较低,可能存在对 WebSocket API 不完全支持的情况。建议升级应用服务器至最新稳定版[^6]。 例如,在 `pom.xml` 中设置 Tomcat 版本为 9.x 或更高版本: ```xml <properties> <tomcat.version>9.0.62</tomcat.version> </properties> ``` --- ### 总结 以上方法涵盖了常见的原因以及对应的修复措施。通过检查依赖、配置类、注解支持以及运行环境等方面,可以有效定位并解决问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值