国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available

這篇具有很好參考價值的文章主要介紹了springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、場景

Springboot使用@ServerEndpoint來建立websocket鏈接。引入依賴。

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-websocket</artifactId>  
</dependency>

配置Websocket

@Configuration  
@EnableWebSocket  
public class WebSocketConfig {  
  
    @Bean  
    public ServerEndpointExporter serverEndpointExporter() {  
        return new ServerEndpointExporter();  
    }  
}

二、報錯信息

springboot項目添加websocket依賴后運行測試類報如下錯誤:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2024-01-15 10:27:30.908 ERROR 20552 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [org/springblade/lab/external/webScoket/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:1804)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
	at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$211/1936375962.getObject(Unknown Source)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:929)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:409)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:164)
	at org.springblade.core.launch.BladeApplication.run(BladeApplication.java:49)
	at org.springblade.Application.main(Application.java:33)
Caused by: java.lang.IllegalStateException: javax.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:1863)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
	... 17 common frames omitted

三、排查思路

報的錯誤是創(chuàng)建ServerEndpointExporterBean失敗,原因是ServerContainer不可用,那么我們就去看到ServerContainer在ServerEndpointExporter中是怎么注入的。

點進(jìn)去ServerEndpointExporter()類,
在第49行代碼打上debug跑一下
springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available,報錯解決辦法,spring boot,websocket,后端
選中第50行代碼,右鍵,執(zhí)行計算,或者使用快捷鍵Crtl+U
springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available,報錯解決辦法,spring boot,websocket,后端
計算結(jié)果發(fā)現(xiàn)是null

springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available,報錯解決辦法,spring boot,websocket,后端

四、分析原因

為什么servletContext會返回null,定位到 ServerContainer 類,發(fā)現(xiàn)他是一個接口,那必定注入的時候是有相應(yīng)的實現(xiàn)類,點擊查看實現(xiàn),居然有五個實現(xiàn)類,那就可以推斷是依賴沖突導(dǎo)致不知道要注入哪個實現(xiàn),最后獲取Bean的時候返回了null。

點進(jìn)去getAttribute方法,查看實現(xiàn)類
springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available,報錯解決辦法,spring boot,websocket,后端
這里有五個實現(xiàn)類,三個是tomcat的,一個是undertow的,還有一個是springframework的,所以解決辦法就是排除掉其他的實現(xiàn)類,只保留springframework這個就行。

五、解決辦法

安裝Maven Helper插件,打開項目的pom.xml文件,點擊pom文件左下角的Dependency Analyzer排除掉多余的依賴。
springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available,報錯解決辦法,spring boot,websocket,后端
最終結(jié)果:

      <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>

    <!--websocket服務(wù)-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
             <!--添加以下排除方法-->
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-web</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>

再次啟動,一切正常!文章來源地址http://www.zghlxwxcb.cn/news/detail-802254.html

到了這里,關(guān)于springboot整合websocket后啟動報錯:javax.websocket.server.ServerContainer not available的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java jakarta.websocket.server.ServerContainer not available(已解決)

    在SpringBoot做測試用例,遇到如下報錯 jakarta.websocket.server.ServerContainer not available 測試類的注解修改如下:

    2024年02月12日
    瀏覽(28)
  • SpringBoot引入WebSocket依賴報ServerContainer no avaliable

    SpringBoot引入WebSocket依賴報ServerContainer no avaliable

    需要使用@ServerEndpoint來建立websocket鏈接。引入依賴。 配置Websocket 啟動報錯 報的錯誤是創(chuàng)建ServerEndpointExporterBean失敗,原因是ServerContainer不可用,那么我們就去看到ServerContainer在ServerEndpointExporter中是怎么注入的。 看到注入位置是ServerEndpointExporter第92行 debug發(fā)現(xiàn) (ServerContainer

    2024年02月14日
    瀏覽(15)
  • SpringBoot啟動報錯Unable to start web server; nested exception...

    SpringBoot啟動報錯Unable to start web server; nested exception...

    在創(chuàng)建SpringBoot項目時,依賴加載,但是啟動報錯如下:Unable to start web server; nested exception… 網(wǎng)上找了很多,很多回答為版本不一致,但仔細(xì)檢查,版本對應(yīng)都修改好了,但是還是報這個錯誤,test卻能夠成功。 根據(jù)自測,是導(dǎo)入的依賴問題:注釋掉或者刪除即可 原因是在創(chuàng)建

    2024年02月12日
    瀏覽(20)
  • SpringBoot整合Swagger踩坑-項目啟動報錯與swagger-ui.html請求404無法訪問

    SpringBoot整合Swagger踩坑-項目啟動報錯與swagger-ui.html請求404無法訪問

    依賴 常見依賴接入方式如下: springfox推薦 依賴接入方式如下: 建議使用推薦的方式,可以協(xié)助我們解決404異常的問題。 配置 依賴導(dǎo)入完成后創(chuàng)建 SwaggerConfig.java 配置: 報錯信息: org.springframework.context.ApplicationContextException: Failed to start bean ‘documentationPluginsBootstrapper’; n

    2024年02月01日
    瀏覽(33)
  • 已解決:SpringBoot啟動報錯:Unable to start web server; nested exception is org.springframework.boot.web

    查了一些解決方案,但是最后發(fā)現(xiàn)這個報錯是因為:在pom引用了jackson相關(guān)包,但沒有引用完整導(dǎo)致的 這個Jackson 是當(dāng)前用的比較廣泛的,用來序列化和反序列化 json 的 Java 的開源框架。

    2024年02月12日
    瀏覽(31)
  • WGCLOUD監(jiān)控sqlserver報錯javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10

    翻譯成中文:SqlServer 服務(wù)器只接受 TLS1.0,但是客戶端給的是 TLS1.2。 找到 jdk11confsecurity 下java.security 文件 1.?把 jdk.tls.disabledAlgorithms 配置項中 TLSv1 刪除,這樣? TLS1.0 就可以使用了。 #jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, # ? ?DH keySize 1024, EC keySize 224, 3D

    2024年02月06日
    瀏覽(24)
  • 解決springboot上傳中文文件報錯:NoClassDefFoundError: javax/mail/internet/MimeUtility

    解決springboot上傳中文文件報錯:NoClassDefFoundError: javax/mail/internet/MimeUtility

    1. 背景: springboot版本:2.7.11 前端使用 UnityEngine.WWWForm 進(jìn)行文件上傳 報錯信息:org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.NoClassDefFoundError: javax/mail/internet/MimeUtility 2 定位問題: 3. 缺少 javax.mail.internet.MimeUtility 4. pom引入依

    2024年02月12日
    瀏覽(23)
  • springboot整合websocket教程

    Websocket是一種網(wǎng)絡(luò)協(xié)議,它允許瀏覽器和服務(wù)器之間進(jìn)行實時雙向數(shù)據(jù)傳輸。 在本教程中,我們將創(chuàng)建一個簡單的聊天應(yīng)用程序,使用Websocket實現(xiàn)實時通信。 添加依賴 我們需要添加Spring Boot Websocket依賴,以便我們可以使用Spring Boot中提供的Websocket支持。 配置WebSocket 在Sprin

    2023年04月23日
    瀏覽(19)
  • WebSocket--整合springboot

    目錄 握手?jǐn)r截器 WebSocket處理程序 HttpSessionHandshakelnterceptor (抽象類):? ?握手?jǐn)r截器,在握手前后添加操作 AbstractWebSocketHandler (抽象類) :? ?WebSocket處理程序,監(jiān)聽連接前,連接中,連接后WebSocketConfigurer (接口):? ? 配置程序,比如配置監(jiān)聽哪個端口,上面的握手?jǐn)r截器,處理

    2024年01月16日
    瀏覽(31)
  • SpringBoot整合Websocket(Java websocket怎么使用)

    SpringBoot整合Websocket(Java websocket怎么使用)

    WebSocket 是一種基于 TCP 協(xié)議的全雙工通信協(xié)議,可以在瀏覽器和服務(wù)器之間建立 實時、雙向的數(shù)據(jù)通信 。可以用于在線聊天、在線游戲、實時數(shù)據(jù)展示等場景。與傳統(tǒng)的 HTTP 協(xié)議不同,WebSocket 可以保持 長連接 ,實時傳輸數(shù)據(jù),避免了頻繁的 HTTP 請求和響應(yīng),節(jié)省了網(wǎng)絡(luò)帶

    2024年02月10日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包