问题描述
springboot3.1 集成websocket时 报错:
我使用的是undertow 服务,去除了tomcat的包。结果项目启动时报错
Caused by: java.lang.IllegalStateException: jakarta.websocket.server.ServerContainer not available
at org.springframework.util.Assert.state(Assert.java:76)
at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:107)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1815)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1764)
... 16 common frames omitted
网上搜索答案基本都是:
在@SpringBootTest注解中添加webEnvironment配置,给wevsocket提供测试环境。
但是本次不是使用的测试,所以另寻他法:
解决
排除undertow下的websocket包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
<exclusions>
<exclusion>
<groupId>io.undertow</groupId>
<artifactId>undertow-websockets-jsr</artifactId>
</exclusion>
</exclusions>
</dependency>
编译之后,再次启动正常!