当前位置:首页 > 经验 >

解析包出现问题怎么解决(一键修复解析包)

来源:原点资讯(www.yd166.com)时间:2022-10-31 13:53:09作者:YD166手机阅读>>

  • 一、引言
  • 二、问题分析
  • 三、解决问题
  • 四、划重点

一、引言

小编最近接了个成功的服务端项目,在他们项目中集成了一个WebSocket,嗯,其实不难,有很多成功案例。

本文主要来记录一下,如果没有百度在自己的项目启动就抛开一些奇怪的问题,或者有一些奇奇怪怪的问题,靠自己怎么排查问题,另一种引擎去清除所有的问题都能够通过搜索来解决。

除了力,那我们就只剩下:“异常信息、来源、和自己的经验”

项目框架用的是SpringBoot,然后集成WebSocket就行,在集成的过程中,其中有一步需要配置一个Bean。

@Component public class WsConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { ServerEndpointExporter serverEndpointExporter = new ServerEndpointExporter(); return serverEndpointExporter; } }

然后在项目启动的时候抛出了异常信息:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [org/springblade/modules/hol/config/WsConfig.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:1769) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:863) at org.Springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391) at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140) at org.springblade.core.launch.BladeApplication.run(BladeApplication.java:50) at org.springblade.Application.main(Application.java:18) Caused by: java.lang.IllegalStateException: javax.websocket.Server.ServerContainer not available at org.springframework.util.Assert.state(Assert.java:73) at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:107) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1828) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1765) ... 16 common frames omitted

基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

视频教程:https://doc.iocoder.cn/video/

二、问题分析

该类路径资源 [org/springblade/modules/hol/config/WsConfig.class] 中定义名称为“serverEndpointExporter”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.IllegalStateException: javax.websocket.server.ServerContainer 不可用

通过异常的第一行就可以得知,是在 Spring 创建“serverEndpointExporter”beanW 的时候抛出来的,是这个配置类,原因是:ServerContainer 这个对象不可使用。

抛出异常的类是:AbstractAutowireCapableBeanFactory.java:1769

分析这里就可以得知,是在spring创建serverEndpoint的时候异常了, “那么异常的原因是Exporter ,为什么ServerContainer不可用呢?” 接下来分析

通过点击转换的源码信息:AbstractAutowireCapableBeanFactory.java:1769

protected Object initializeBean(String beanName, Object bean, @Nullable RootBeanDefinition mbd) { if (System.getSecurityManager() != null) { AccessController.doPrivileged((PrivilegedAction<Object>) () -> { invokeAwareMethods(beanName, bean); return null; }, getAccessControlContext()); } else { invokeAwareMethods(beanName, bean); } Object wrappedBean = bean; if (mbd == null || !mbd.isSynthetic()) { wrappedBean = applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName); } try { invokeInitMethods(beanName, wrappedBean, mbd); } catch (Throwable ex) { throw new BeanCreationException( // 1769 这里就是1769行~~ (mbd != null ? mbd.getResourceDescription() : null), beanName, "Invocation of init method failed", ex); } if (mbd == null || !mbd.isSynthetic()) { wrappedBean = applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName); } return wrappedBean; }

通过查看源码,是在1796行的catch里面抛出的异常的,catch是捕捉到invokeInitMethods这个异常的方法,然后才抛出来的,这样就可以开始调试了。

我们是在创建serverendpointExporter的,加一个筛选条件beanName为serverEndpointExporter,这样再过滤创建异常的其他bean。

解析包出现问题怎么解决,一键修复解析包(1)

断点卡好,下调试模式来启动项目,然后F5进到vokeInitMethods,单步往下执行。

解析包出现问题怎么解决,一键修复解析包(2)

最后执行到了 ((InitializingBean) bean).afterPropertiesSet(); 这行代码,bean方法对象是ServerEndpointExporter,调用了这个对象的afterPropertiesSet。

解析包出现问题怎么解决,一键修复解析包(3)

这个ServerEndpointExporterjava类,其中就有在获取serverPropertiesSet方法之后,首先调用这个getServerContainer方法获取serverContainer对象。

很明显这里返回的肯定是null,null != null 结果肯定是false,最后就是这样调用state(false,javax.websocket.server.ServerContainer not available)

通过state源知道,最后抛出这个异常:java.lang.IllegalStateContainerException: javax.websocket.server.server not available

解析包出现问题怎么解决,一键修复解析包(4)

首页 123下一页

栏目热文

手机解析包出现错误怎么解决(手机 出现解析包错误如何解决)

手机解析包出现错误怎么解决(手机 出现解析包错误如何解决)

对于任何一个关注手机硬件发展的朋友来说,天玑8100绝对是今年上半年不可忽视的一款SoC。不同于“大哥”天玑9000追求...

2022-10-31 13:42:31查看全文 >>

手机解析包时出现问题怎么解决(安装软件解析包出现问题怎么解决)

手机解析包时出现问题怎么解决(安装软件解析包出现问题怎么解决)

近期多省份疫情形势严峻,我市外防输入压力持续加大。加之国庆假期刚刚结束,有省外旅居史、省内有疫情地市来返我市人员较多。不...

2022-10-31 14:04:37查看全文 >>

手机解析包有问题怎么办(手机解析包时出现问题怎么解决)

手机解析包有问题怎么办(手机解析包时出现问题怎么解决)

如今,如何保护自己的隐私成了很多人关注的问题你出门随手拍的一张图片就可能暴露你的位置在聊天中随意提起的内容手机APP很快...

2022-10-31 14:13:21查看全文 >>

手机出现解析包错误如何解决(手机出现解析包错误怎么解决)

手机出现解析包错误如何解决(手机出现解析包错误怎么解决)

大河报·豫视频记者 侯冰玉 国庆节假期的最后第一天,刚从巩义回到郑州的陈先生突然发现,自己的行程卡上显示去过洛阳,家人的...

2022-10-31 14:01:45查看全文 >>

手机解析包出现问题怎么解决(手机解析包出现问题解决方法)

手机解析包出现问题怎么解决(手机解析包出现问题解决方法)

全文1337字,阅读约需1.5分钟民小生的手机最近总卡顿,仔细一看原来256G的内存也快满了。△民小生制图换手机时长还不...

2022-10-31 14:14:24查看全文 >>

手机解析包错误怎么解除(手机解析包出现问题解决方法)

手机解析包错误怎么解除(手机解析包出现问题解决方法)

平时在给电视安装软件的过程中,往往有用户会遇到【解析程序包出现错误】以及类似的其他提示。这个时候该怎么办呐?首先需要确定...

2022-10-31 13:42:40查看全文 >>

牛在飞歌词完整版(牛牛在飞原唱)

牛在飞歌词完整版(牛牛在飞原唱)

{"rich_content":{"text":"","spans":null},"video":{"vid":"v02...

2022-10-31 13:25:51查看全文 >>

歌曲牛在飞(牛在飞女声版歌曲)

歌曲牛在飞(牛在飞女声版歌曲)

{"rich_content":{"text":"","spans":null},"video":{"vid":"v02...

2022-10-31 13:40:24查看全文 >>

一个牛在飞什么歌(歌词有牛在天上飞的是什么歌)

一个牛在飞什么歌(歌词有牛在天上飞的是什么歌)

现在生活没有忧愁 一日三餐满嘴流油整点小菜喝点小酒迷迷糊糊开始吹牛他说 吃一辈子没买过单喝一辈子没伤过肝赌一辈子没输...

2022-10-31 13:29:54查看全文 >>

牛在飞歌曲什么意思(带有牛在飞的歌曲)

牛在飞歌曲什么意思(带有牛在飞的歌曲)

今天为我们唱歌的是易县尉都乡朔内村的张秋玲她要演唱的歌曲是《牛在飞》认识我姓名:张秋玲全民K歌:心随你远行性别:女居住地...

2022-10-31 13:49:02查看全文 >>

文档排行