javax.websocket.server.ServerContainer not available 报错

4 篇文章 0 订阅
2 篇文章 0 订阅

因为这个错误我花费了一下午的时间,就是为了在 springboot 中集成websocket 太难的 网上大多数的回答都是测试时报错,我是启动时报错,废话不说了,直接进入主题

  1. 环境情况
    springboot:2.2.13
    acitiviti6
    websocket
    2.报错信息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/ruoyi/common/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1794)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
 at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
 at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
 at org.springframework.boot.SpringApplication.run(SpringApplication.java:

从报错信息中 无法获取到什么有用的信息,我就知道这个 ServerEndpointExporter 是有问题的 其他的我也不知道

  1. 解决方法:
    修改maven SpringBoot Web 将tomcat 去除掉
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

自此启动成功 真狗血
网上解决此问题的思路
1.因为是springbootTest的问题 需要增加注释 自己百度把
2.包冲突导致的(本文也算是)
3.说是tomcat 和web容器之间的问题 (本文也算是吧)
问题解决 开心

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在Spring Boot中,javax.websocket.server.ServerContainerJava WebSocket API的一部分,用于管理WebSocket连接和会话。然而,如果你在使用Spring Boot时遇到了"javax.websocket.server.ServerContainer not available"的错误,可能是因为缺少了WebSocket容器的实现。 要解决这个问题,你可以按照以下步骤进行操作: 1. 确保你的项目中已经添加了Java WebSocket API的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> </dependency> ``` 2. 确保你的项目中已经添加了WebSocket容器的实现。常见的WebSocket容器实现包括Tomcat、Jetty和ertow。你可以根据自己的需求选择其中一个容器,并在项目中添加相应的依赖。例如,如果你选择使用Tomcat作为WebSocket容器,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>9.0.41</version> </dependency> ``` 3. 确保你的代码正确配置了WebSocket相关的注解和配置类。在Spring Boot中,你需要使用@ServerEndpoint注解标记WebSocket端点类,并在配置类中启用WebSocket支持。例如,可以创建一个配置类WebSocketConfig,并在其中添加@EnableWebSocket注解: ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(myWebSocketHandler(), "/websocket"); } @Bean public WebSocketHandler myWebSocketHandler() { return new MyWebSocketHandler(); } } ``` 请注意,以上代码只是一个示例,你需要根据自己的实际情况进行相应的配置。 如果你按照以上步骤进行操作后仍然遇到问题,请提供更多的错误信息和代码细节,以便我能够更好地帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值