智能救护车系统设计

使用大数据和物联网概念的智能救护车系统

1 引言

信息技术(IT)通过计算机和电信系统用于存储、检索、传输和处理数据。
在当今世界,信息技术被广泛应用于包括医学科学在内的众多领域,在医学 科学领域中被称为健康信息技术(HIT)。将健康信息技术(HIT)应用于 救护车是改变患者在救护车内接受治疗方式的一项技术成就。

紧急医疗响应系统的需求和需求推动了为这些系统开发更多基于技术的 智能高效解决方案的发展。鉴于此,我们提出了一种基于技术的智能救护车 系统。该设计方案利用无线体域传感器网络(WBANs)、物联网(IoT)、 大数据分析和人工智能(AI)等技术来提供:
1. 远程医疗
2. 病史数据
3. 远程医学

1.1 远程医疗

随着对医疗服务需求的增长,传统的诊断服务已难以满足需求。E‐health 是 提供高效成本诊断工具的服务之一。 24×7远程移动健康监测是这些举措中 的一项创新。基于实时监测健康记录可连续发现患者的任何问题。远程医疗 可通过减少出行、医师和实验室时间,降低公共卫生成本,提高患者安心感, 从而改善患者的生活质量[1]。

约瓦诺夫[2]在其研究中实现了一种利用传感器技术和短距离个人区域网 (PANs)的远程医疗系统。马马加尼安等人[3]在其研究中提出了基于 MEMS的陀螺仪、心电图(ECG)集成前端以及加速度计的采集方案。这些 是基于传感器的系统,用于提供生命体征和生理活动信息。斯宾桑特和甘比 [4]在其研究中专注于无线和以家庭为中心的健康监测系统,用于医疗设备 的高效管理。该研究基于开放服务网关倡议(OSGi)框架。库尔卡尼和€厄 兹图€尔克[5]为灾难场景下的无线基础设施提供了一个软件框架和通用协议。

所提出的系统将实现对患者的无线监测和跟踪。还有一个名为移动健康[6], 的项目,用于医院外患者的连续监测,并通过疾病诊断、远程协助、身体状 态监测和临床研究等服务来提高生活质量。近年来,已提出多种医疗保健监 测系统。

陈[7]在其研究中提出了一种具有智能数据分析功能的基于网络的远程人体 脉搏监测系统。该系统采用人体脉搏、个人数字助理(PDA)、无线通信和万维 网技术,用于日常家庭医疗保健。该系统通过便捷的基于网络的用户界面,提供 了一种远程医疗治疗系统,用于监测患者的脉率和心率。雷东迪等人[8]提出了 针对室内患者的研究构想,并提供了一种利用无线传感器网络对患者进行跟踪和 监控的设备。

1.2 病史数据

患者病历的计算机化这一概念已经存在多年,但直到过去几十年才得到广泛 采用。患者病历的计算机化被称为电子健康记录(EHR),它用于以数字方 式存储患者数据,而不是采用传统的手写笔记和纸质档案系统中的打字报告。

电子健康记录已在许多国家以不同的比例被接受。

加拿大于2001年启动了一项通过信息与通信技术(ICT)实现医疗设施现代 化的倡议。到2015年,加拿大为91%的国民建立了电子健康记录(EHRs)。
2014年,使用EHR服务的诊所数量为62,000家,到2015年上升至91,000家。因 此,在一年内,通过在卫生服务中应用信息与通信技术,EHR实现了大幅增长。

英格兰于2001年启动了一项名为“国家IT计划”(NPf1T)的全国性倡 议,以实现医疗系统的现代化。该计划旨在为近5400万人建立摘要健康记录 (SHRs),约占英格兰总人口的96%。

在德国,约90%的私人执业医生在其医疗记录中使用电子健康记录(EHR)系统。
在强调安全性的同时,还赋予患者封锁或隐藏其健康记录中任何信息的能力。

新西兰为其总人口的97%采用了电子健康记录系统。目前,为了从新西 兰任何机构访问电子健康记录系统,采用的是分布式系统而非集式EHR系统, 但近期目标是部署一个集式EHR系统。

在印度,卫生服务中的IT使用水平与其他国家相比处于较低水平。私立 医院正在实施集成的基于ICT的技术,以实现更好的医疗保健管理。印度的 Max Healthcare医院从2009年开始为患者实施电子健康记录系统,并达到 了HIMSS用于评估医院电子健康记录系统采用水平的EMR采用模型的6级[1]。

阿波罗集团已在位于金奈、南达纳姆、阿亚南巴卡姆和朱比利山的四家 医院实施了6级电子病历(EMR)采用。桑卡拉眼科医院(SN)在金奈的医 院及卫星诊所实施了电子病历服务[3]。该医院使用塔塔咨询来实施此项服务。
桑卡拉眼科医院与TCS合作,还向其他医院提供电子病历服务。

1.3 远程医学

远程医学利用信息技术用于医疗应用和服务,以弥合医生与患者之间的沟通 差距。远程医学使用多种信息技术,以更好地应用传统医疗服务[9]。远程医 学可用于远程放射学、远程会诊、远程ICU、远程护理等服务

远程手术等。这些服务中的每一项在实时应用方面都有其自身的优势和挑战,以确保 高效且合法地运行。

以临床医学为例,远程医学是该领域中快速发展应用之一。远程医学可 用于进行检查和远程医疗操作[10],并利用先进的通信技术,在对话、通信等 技术方面提供协助。[11],患者护理、公共卫生诊断、培训、研究、健康信息 的发送与接收、X光分析以及卫生专业人员教育[12]等领域均可归属于远程 医学范畴。互联网健康记录的评估标准如下:
• 可靠性——信息来源及其相关性需经过编辑审查。
• 内容——数据本身应准确且完整。
• 披露——使用户了解网站的目的,或与该网站相关的信息收集情况。
• 链接——包括基于选择、内容、架构和反向链接的评估。
• 设计——涵盖可访问性、导航性以及互联网搜索能力。
• 互动性——关注数据的交互程度。
• 注意事项——旨在澄清网站功能是用于营销产品和服务,还是主要作为信息提供者。

本章节所述系统的优点是:
1. 救护车内患者的实时监控:通过智能救护车,可以在救护车运输过程 中轻松实现对患者的监控。由于血糖、心电图报告、血型、其他血液报告、 心率等重要指标均可在到达医院前进行检查并发送给医生,医生可提前做好 准备。
2. 患者信息的便捷访问:患者记录可通过互联网从云计算中的数据 库轻松存储、管理和访问。
3. 随时随地为患者提供处理后的信息,以满足未来需求。
4. 安全信息:现有和上传的信息均保存在具有适当安全协议的 安全环境中,并需凭正确凭证才能访问。
5. 担架和器械的便捷稳定可访问性:患者的装卸将更加安全、便捷和舒适。
6. 具体细分:通过对患者进行细分,可根据地区、疾病类型和性别做出高效的行政决策。

2 技术与方法

本章节讨论的设计方案采用多种基于信息与通信技术的技术来构建智能救护 车,从而为患者提供实时快速响应系统。智能救护车系统中使用的技术与方 法如下:
1. 物联网
2. 大数据技术
3. 云计算
4. 无线体域网(WBAN)
5. 人工智能

2.1 物联网

物联网(IoT)在信息技术(IT)以及我们看待科学的方式上引发了一场革 命,随着物联网的发展,信息技术也发生了巨大变化。各种技术如无线传感 器网络(WSN)、微服务、微机电系统(MEMS)、框架、万维网、互联网 等,推动了物联网的演进。信息技术与操作技术有助于数据分析,从而在许 多领域提升了预测能力。可以说,物联网是设备(物理的)、家用电器、智 慧城市、智能电网、农业、医疗设备、智能交通系统、虚拟电厂或任何其他 嵌入或配备有传感器、电子设备、软件、执行器、网络或互联网的物体所组 成的网络,这些设备或物体能够通过网络共享、连接或交换信息。所有这些 “事物”都嵌入了一个具有唯一标识的设备,能够与其他设备在网络中通信。
这些支持物联网的设备减少了人为干预,提高了系统的有效性。

2.1.1 物联网技术路线图

在2000年代初期,射频识别标签被用于智能交通和路由,通常被认为是物联 网的前身。物联网在早期阶段被用于损失检测与预防;随着其被接受程度的 提高和用途的增加,开始应用于医疗保健、食品安全、安全管理等其他各个 领域。如今,物联网进一步用于定位日常物品和人员,随着技术的不断进步 以及对物联网的日益接受,它将被用于监控和控制远端物体;即,可用于远 程操作或远程呈现(也称为普适定位)。

此外,物联网的未来前景广阔;最终它将几乎应用于我们生活的各个方 面,使我们的生活更加便捷。近年来,物联网的发展显著增长,随着在该技 术上的投入不断增加,这一领域的创新必将发生。

2.1.2 物联网的应用
  • 智能医疗管理
  • 智能家居自动化
  • 能源管理
  • 农业
  • 在搜救行动中(由国防或消防员用于野外作业)
  • 媒体基础设施管理
  • 环境监测
2.1.3 物联网的挑战

在接下来的几年中,物联网将减少对人工监控设备的依赖,从而降低人为错 误的发生几率。物联网设备能够提供早期诊断,并预防那些仅通过人工交互 难以发现的问题。物联网设备正在持续改进信息技术行业,但目前仍存在一 些物联网应用的障碍,例如:
- 隐私和安全问题
- 缺乏互操作性和价值主张不明确
- 医疗隐私
- IT集成和网络安全
- 连接挑战
- 兼容性和持久性挑战
- 物联网内智能分析的采用
- 政策执行

在所提出的系统中,将使用物联网实现救护车与主站之间的信息传输,以便为患 者提供快速响应时间。

2.2 大数据

大数据顾名思义,是指大量且复杂的资料或数据集,这些数据使用传统的数 据处理系统或传统的数据库管理工具难以处理。这些庞大而复杂的数据在采 集、整理、搜索、共享、传输、分析和可视化方面面临着诸多挑战。已收集 了大量患者数据,从X光到血液检测报告。这些数据的电子存储与处理可使 患者医疗保健更加便捷和高效。随着基因组学和个人化医疗作为未来医疗服 务的一部分被引入,数据量持续呈倍数增长,对这些数据的深入分析需求也 将不断增加。鉴于数据量巨大以及数据处理的需求,大数据将成为一项新兴 技术,能够有效解决这一问题,并以具有成本效益的方式提供所需结果。

一旦大数据技术的初始设置完成,用于存储和处理大量患者数据,那么增加更多 患者的数据的成本将显著降低,因此规模经济将推动进一步的技术发展。从长远来看,这项技术 将非常有益,有助于医学科学的进步。

Hadoop 是一个使用简单编程模型的框架,允许用户在由普通计算机组 成的节点集群的分布式环境中存储和处理大规模数据集。Hadoop 在分布式 环境中利用节点集群处理大数据;它是一个具有横向扩展存储和分布式处理 能力的开源数据管理工具。Hadoop 的简单编程模型称为 MapReduce。在 处理大规模数据集时,Hadoop 通过分布式存储和传输代码来减少昂贵的传 输步骤。Hadoop 提供冗余机制,从而在单个节点发生故障时能够实现恢复。
Hadoop 编程也更加容易,因为它采用了易于编程的 MapReduce 框架。在 Hadoop 内部,数据的分区、任务向节点的分配以及节点之间的通信都是自 动完成的。无需手动分配这些任务,程序员可以专注于需要实现的数据和逻 辑。

Hadoop的核心包括:
(1) Hadoop分布式文件系统(HDFS)
(2) 处理部分,MapReduce

HDFS用于数据存储。它由一个包含两种节点(名称节点和数据节点)的机 器集群组成,其中名称节点充当管理节点,数据节点充当数据存储。
HDFS具有原生冗余性,这意味着冗余是内置的,一个节点的所有数据都会 复制到另一个节点以避免故障。因此,数据存储在多个位置以防止数据故障。

用于数据处理的MapReduce是一种将任务分配到多个处理器上的编程 模型。Hadoop将文件分割成大小可变的较小数据块,并将数据分发到集群 的各个节点上,然后使用MapReduce函数对数据进行并行处理。因此, Hadoop提供了一个可靠的共享存储和分析系统,其中存储由HDFS提供, 分析则由MapReduce完成。该设计方案采用Hadoop技术,以快速高效地 处理大规模医疗信息,从而提供所需的输出结果。

2.3 云计算

云是一组庞大的异构对象,从远处看呈现出对象集群的形态。在这些集群内 的计算称为云计算。云计算平台是一种高性能的新兴技术,可让用户按使用 付费的方式进行访问。它是一种通过互联网以较低成本存储和访问数据的机 制,只要存在互联网连接,就可以持续访问资源。

云与面向服务的架构(SOA)、虚拟化、效用计算、网格计算和互联网集成,为 我们提供了低成本的平台、基础设施和服务成本。该计算平台允许普遍访问共享资源。云计算具有多种不同模型的特征, 例如点对点、客户端‐服务器模型、网格计算、大型机计算、绿色计算、效用 计算、云沙箱等。

云计算的一些主要特征包括:
- 资源池化
- 性能
- 成本降低
- 可靠性
- 可用性
- 可访问性
- 安全性
- 可扩展性
- 迁移灵活性
- 低维护
- 计量服务
- 位置和设备无关性
- 按需自助服务

云计算中的一些问题包括:
- 缺乏安全性
- 缺乏隐私
- 依赖互联网
- 文化问题
- 高实施成本
- 技术采用的统一性

2.3.1 云在医疗保健中的应用

医疗行业不断发展,所使用的技术也在不断进步。如今,许多拥有各种遗留 系统的医院已转向电子健康记录(EHR)等数字系统。不同的供应商现在提 供医疗保健服务和解决方案,例如医学影像、基于云的患者管理、基于云的 患者数据管理、电子数据交换(EDI)等。

以下是对医疗保健领域云计算的SWOT(优势、劣势、机会、威胁)分析:
优势:
- 信息技术在医疗行业的发展
- 来自云的支持

弱点:
- 缺乏专家
- 可行性问题

机遇:
- 快速弹性
- 可用性
- 可访问性

威胁:
- 缺乏信任
- 缺乏法规
- 缺乏教育和使用。

如前所述,许多专注于为患者提供更具成本效益和高效服务的医疗利益相关 者正在将其医疗服务迁移到云。云计算解决了在硬件、计算资源等IT基础设 施方面进行投资的需求,并通过虚拟化提高了共享能力。大多数医疗机构正 在对其基础设施以及对待患者的方式进行现代化升级。云计算、物联网、人 工智能和大数据共同提供了更好的解决方案。

2.4 无线体域网

无线体域网(WBAN)是一种IEEE标准802.15.6协议,用于将身体部位的信 息传播到远程位置[13]。WBAN是一种低功耗、短距离且极高可靠性的通信 媒介,适用于人体。其数据速率从75.9kbps(窄带)到15.6 Mbps(超宽带) 不等。所选WBAN的类型取决于其用途。WBAN技术可与互联网以及多种无 线技术(如蓝牙、无线局域网(WLANs)、ZigBee、无线传感器网络、无 线个人区域网(WPAN)、蜂窝网络和视频监控系统)进行交互。WBAN技术 改变了人们与信息技术互动的方式,并从中受益。WBAN传感器能够采样、 监测、处理并传输各种生命体征,方便地为用户和医务人员提供实时反馈。
WBAN可用于连续监测患者生理参数,从而为患者提供更大的移动性和灵活 性。因此,可以说WBAN用于提供患者数据的安全性、便捷访问、隐私保护、 实时数据以及兼容性[14]。

WBAN架构由被定义为具有交互能力的独立设备的节点组成。根据其实 施、角色和功能,这些节点可分为以下三类:
1. 植入式节点
2. 体表节点
3. 外部节点

植入式节点是种植在人体内部的节点或传感器,可位于皮肤下方或身体组织内部。
体表节点放置于患者体表或距离患者身体2cm处。外部节点放置在距离患者身体几厘米到约5米的位置。传感器是基于身体刺激来收集数据的设备。传感器用于感知患者身体的 某些参数;这些参数可以是内部的或外部的,具体取决于需求。这些传感器 可以是环境传感器、生理传感器或生物运动传感器。执行器接收来自传感器 的数据,然后与用户进行交互。它们通过作用于传感器数据在网络中提供反 馈。执行器可用于诸如向患者体内泵入正确剂量药物等应用。个人设备用于 收集来自传感器和执行器的信息,并用于处理与用户的交互。在不同应用类 型中,这也被称为体域网关、汇聚节点、体控单元(BCU)或个人数字助理 (PDA)[15]。

节点可以根据其在无线体域网中的网络角色进行如下分类:
1. 协调器
2. 终端节点
3. 中继

协调器节点作为外部世界、另一个无线体域网、接入协调器或信任中心访问无线体域 网的网关。它可以是无线体域网上的个人数字助理(PDA),用于与所有其他节点进 行通信。终端节点用于嵌入式应用,这些节点不能用于转发来自其他节点的消息。中 继节点是用于数据感知的中级节点,这些节点具有父节点、子节点,并可转发消息。
如果某个节点是末端节点或位于边缘位置的节点,则其发送的任何数据在到达个人数 字助理(PDA)并向患者显示之前,必须通过其他节点进行中继。

无线体感网络(WBSN)中的节点数量可能从几个执行器或传感器到数 十至数千个执行器或传感器不等,这些节点通过网关与互联网通信。在一个 3m³ [16]的区域内,无线体感网络支持的最多节点数可扩展至256个。由于传 输策略的限制,在一个区域内的无线体域网(WBAN)中只能存在1个集线器, 最多支持64个节点。在一个人/患者范围内,每平方米内可共存两个到四个无 线体域网[13],,从而在一个网络内最多支持256个节点。在地址分配方面, 采用单字节的无线体域网标识符(WBAN ID)为节点、集线器或无线体域网 在其帧交换[17]中分配简略地址。该字节的取值范围为x00至xFF(0–255)。

关于使用无线体域网技术的数据安全性,可以说数据在无线体域网网络 内非常安全,因为无线体域网通过安全管理提供了安全机制,包括数据的加 密/解密、数据可用性、通过共享密钥实现数据认证、通过数据认证协议确保 数据完整性,以及数据新鲜度以确保数据不会被重用且其帧顺序正确。

在无线体域网中,用于患者数据通信的路由协议有多种类型。这些路由 协议可根据其网络结构、位置、温度、层和服务质量(QoS)指标分为以下 五类:
1. 基于簇的算法 :该算法将无线体域网节点划分为不同的集群,并为每 个集群分配一个簇头。数据通过这些簇头从传感器路由到汇聚节点。因此, 该协议减少了传感器到汇聚节点的直接传输次数,但存在开销和延迟的缺点。
2. 概率算法 :该算法基于链路状态信息工作,并根据链路状态信息导出的最 小代价寻找最佳路径。该算定期根据链路状态信息更新其代价函数。该算法的缺点是需要大量传输来更新链路状态信息。
3. 跨层算法 :该算法采用生成树的概念,在无线体感网络内进行流量路由。该协议提供低能耗、高吞吐量和固定的端到端延迟。
4. 基于温度的算法 :该算法基于以下概念:无线通信会产生电场和磁场,这种电磁场暴露会导致辐射吸收,从而引起人体平均温度升高 [9]。该算法的主要缺点是牺牲了网络寿命和可靠性。
5. 基于QoS的路由算法 :该算法通过为不同的QoS指标提供不同模块,并使这些模块相互协作来实现功能。

2.5 案例研究

计算机技术从20世纪50年代开始被引入医学科学。古斯塔夫·瓦格纳于1949 年在德国建立了健康信息学的首个专业组织。在20世纪60年代,荷兰、德国、 法国和比利时设立了专门的大学部门和信息学培训中心。在20世纪70年代, 美国和波兰出现了医学信息学研究单位,这些发达国家开始大量开展高质量 健康教育的发展工作。这些发展工作重点在于利用信息与通信技术进行医疗 服务领域的研究、基础设施建设和教育领域的发展。

南非 :南非使用一种名为Dokoza系统的实时移动系统,用于快速跟踪 和改进的医疗服务。该移动系统最初用于艾滋病/艾滋病和结核病治疗,并计 划涵盖许多其他疾病。它利用短信服务和手机技术进行信息管理、个人通信 和事务交换。该系统在任何现有的手机网络上使用普通发行的SIM卡。
Dokoza的后端系统与现有的医院系统集成。Dokoza系统可以在实时基础上进行访问。由于艾滋病病毒患者数据的安全性是一个特别 关注的问题,该系统极易受到对敏感信息的未授权访问。

印度尼西亚 :印度尼西亚在西爪哇省苏加武眉的部分地区实施了移动远 程医学系统。该项目覆盖面积达4248km²,人口约230万。该系统采用移动 远程医学技术,提供基于信息与通信技术的高效医疗监控服务。

在印度,已开展了多项旨在将信息与通信技术应用于医疗服务领域的举 措。通过与多个国际组织合作,相关进展正在持续推进。印度专家与英国拉 夫堡大学的专家合作,于2005年开发出一种独特的基于移动设备的健康监测 系统。该系统利用手机服务,将患者的生命体征信息(如心电图(ECG)心 脏信号、血压、血氧饱和度或血糖水平)传输至全球任何医院或专家。已建 立与德里印度理工学院、全印医学科学研究所、阿里格尔穆斯林大学和伦敦 金斯顿大学的合作关系,以进一步发展该系统。

印度理工学院坎普尔分校开展了名为Sehat Sathi的基于信息与通信技术的 医疗服务 initiative。这是在印度理工学院坎普尔分校的亚洲媒体实验室开发的 一种农村远程医疗系统。该系统的重点是将医疗服务延伸到国家偏远地区。该系 统由经过培训的非医疗专业人员在前端支持并操作,而后端则由医生和其他健康 专家提供支持。亚洲媒体实验室与全印医学科学研究所合作,使用手持式计算机 进行医疗数据收集和规划。

3 设计方案

随着信息技术的进步,几乎所有行业都从中受益,医疗行业也不例外。健康 信息技术(卫生信息系统)是指在医疗行业中对信息系统的分析、设计、开 发、测试、维护和使用。医疗领域的信息技术能够降低成本,提高护理质量, 减少出错几率,提升效率和患者满意度。几十年来,救护车在急诊救治中发 挥了良好效果。许多紧急病例如果能在事故发生后一小时内(称为“黄金一 小时”)得到准确的早期诊断和及时的适当医疗救治,便可得到有效治疗。

我们提出一种配备信息与通信技术的智能救护车,以帮助救护人员更高 效、有效地处理或治疗患者,从而有可能改善或挽救患者的生命。救护人员 可以与医院医生/工作人员协作,并及时获得建议。在救护车上使用信息与通 信技术将提高事故现场诊断的质量,并更准确地确定应将患者送往哪家医院 以及哪位医生。智能救护车还可以配备移动实验室,对诊断非常有用。

示意图0

本节讨论并提出了智能救护车中的实时患者监测系统(图1)。这些系统 可监测/跟踪患者的生命体征、关键活动、身心状态、药物等信息。实时患者 监测将有助于快速应对需要立即关注的情况。在所提出的系统中,通过 WBAN(连接到集线器的异构传感器网络)对患者的数据进行监测和访问。
每辆救护车被视为无线网络中的一个节点,通过互联网连接到特定医院安装 的集中式医院服务器。同样,同一家医院的多辆救护车将把患者的有关数据 发送到该特定医院服务器。

此外,特定范围内所有医院的所有服务器都连接到一个云网络,所有医院服务器都将 数据发送到云端的中央服务器。该原始数据进一步通过大数据分析进行处理,然后

示意图1
已处理数据/报告可由患者或医生用于进一步的诊断和治疗。无线体域网检查 患者状态,患者病史也上传至医院服务器供医师参考。

所提出的系统还执行以下任务:
1. 患者记录他的报告
患者的报告或病史也可以通过系统上传。可以使用唯一的患者ID(可能是阿 达haar卡号码)从集中式云网络检索患者病史。
2. 带有数字签名的医疗处方
智能救护车可以获取带有数字签名的医疗处方,以便在途中购买所需的药品。
3. 药剂师的信息
为应用程序提供了一个模块,用于显示附近的药剂师,以实现更好的时间管理和 可追溯性。
4. 未来报告生成和医疗记录设施的 24×7访问
通过大数据分析,为医生和患者提供定制化报告生成的功能。 24×7对报告 或记录的访问可降低患者、医生及家属的压力。由于所有记录均可在线获取, 纸质记录丢失的风险也得以降低。
5. 风险分层与评估
在任何医院进行治疗时,基于既往病史将更容易识别风险。此外,可进一步 利用分析技术来帮助研究和分析患者群体。
6. 具体细分
细分基于地区、性别、时间等,通过数据分析实现高效决策,以采取预防和治疗措施。

希望智能救护车在紧急情况下挽救生命方面的潜力远超此前存在的救护 车系统。如果智能救护车的概念在全球范围内得到认可,医疗保健领域的治 疗标准和信息与通信技术(ICT)的应用水平也将得到提升。

3.1 智能救护车的技术细节

从无线体域网获取的数据通过PDA设备进行数据聚合后传输到云计算,因为 已收集了大量患者数据,从X光报告到血液检测。多个患者的大量医疗数据 可以以电子形式存储在云中。
并且大量数据的处理将通过大数据分析,利用Hadoop来完成。随着基因组 学和个性化医疗作为未来医疗服务的一部分被引入,数据量增长过快,需要 对这些数据进行更深入的分析。

Hadoop将从传感器接收到的原始数据格式通过其软件进行处理,并按 照用户要求以处理后的方式输出结果。在设计Hadoop分布式文件系统集群 时,创建了两种类型的节点,它们采用主从模式工作,其中作为主节点工作 的称为NameNode,作为从节点工作的称为DataNode。NameNode用于管 理文件系统命名空间。NameNode维护文件系统树中的所有文件和目录,同 时也维护这些文件和目录的元数据。两个称为命名空间镜像和编辑日志的文 件被持久化存储在本地磁盘上,包含有关Hadoop架构的信息。除了管理文 件系统命名空间外,NameNode还调节客户端对文件的访问,并用于执行文 件系统操作,如文件和目录的重命名、关闭和打开。NameNode也被称为数 据节点,某个给定文件的所有数据块都位于该节点上。DataNode根据客户 端请求在文件系统上执行读写操作。DataNode根据NameNode的指令提供 删除、创建和复制等各种操作。DataNode是文件系统的主力。DataNode基 于来自客户端或NameNode的命令存储或检索数据块,并定期向 NameNode报告其正在存储的数据块列表。如果没有NameNode,文件系统 将无法运行,因为一旦丢失,将无法从DataNode上的数据块重新构造文件。
为了避免此类情况的发生,需要维护数据备份。为了备份数据,安装了一个 secondary NameNode,其核心目的是通过定期将编辑日志与命名空间镜像 合并,防止编辑日志变得过大。由于系统在合并过程中需要充足的中央处理 器和内存资源,NameNode通常运行在单独的机器上。客户端通过与 NameNode和DataNode通信,代表用户访问文件系统。

所有元数据操作都在NameNode中进行。元数据是包含有关文件列表、每 个文件的数据块列表、每个数据块的数据节点列表、文件属性(如时间、复 制因子等)的信息的数据,甚至还存储事务日志,例如文件创建、文件删除 等记录。因此可以说,NameNode包含了整个文件目录结构的信息以及数据块 的存储位置。元数据存储在NameNode的内存中,且文件系统元数据不采用按 需分页机制。因此,NameNode仅包含元数据,而不包含实际数据。客户端与 NameNode交互以执行元数据操作,从而从包含实际信息的DataNode中提取信 息。

客户端可以通过Java接口或HDFS命令行读取或写入DataNode。最终用户可通过 客户端获取结果。客户端可直接读写DataNode,但需从文件系统中获取DataNode的位 置信息。

NameNode。机架是为多个DataNode提供空间的物理位置。多个机架共同构成 集群。DataNode是一种商用硬件,被划分为数据块,每个数据块具有特定大 小,通常为64兆字节或128兆字节。远程过程调用(RPC)是一种用于设备 之间相互通信的协议。

NameNode是系统的主节点。NameNode是一台高质量且高可用性的机器, 负责维护和管理DataNode上的数据块。NameNode是单点故障,因此在整个集 群中它是唯一的机器:如果NameNode发生故障,则没有NameNode的备份,整 个系统在这种情况下会失效。secondary NameNode是灾难恢复的解决方案。
它并不能在NameNode故障时提供冗余,而是每小时将NameNode的元数据备份 到外部驱动器。因此,当主NameNode发生故障时,可以使用已保存的备份来 重建故障的NameNode。因此,secondary NameNode并不是NameNode的热备, 而是每小时连接一次NameNode以进行备份[18]。

DataNode是负责处理客户端读写请求的节点。它们是从节点,通常提供 实际存储,并部署在每台机器上。可以为DataNode创建任意数量的廉价副本。
DataNode充当文件系统中文件的数据库。当客户端或NameNode请求时,数据 块会在DataNode中进行存储和检索。包含数据块列表的报告随后从DataNode 发送回NameNode。文件系统的命名空间由NameNode管理。此外,文件和目录 的元数据及文件系统树也由NameNode维护和管理。两个名为命名空间和编辑 日志的文件,其中包含架构信息,被持久地存储在本地磁盘上。除了管理文 件系统命名空间外,NameNode还控制客户端对文件的访问,并用于执行文件 系统操作,如文件和目录的重命名、关闭和打开。NameNode还用于确定给定 文件的所有数据块所在的节点。DataNode根据客户端请求在文件系统上执行 读写操作。DataNode还根据NameNode的指令执行数据块的创建、删除和复制 操作。DataNode是文件系统的主力。DataNode基于来自客户端或NameNode的 命令来存储或检索数据块,并定期向NameNode报告结果。文件系统仅通过NameNode构建,因为无法从DataNode的数据块直接生成文件,因此如果NameNode丢失,文件系统将无法工作。为了避免此类情况,需要维护数据备份。

在图2中可以看出,所有的元数据操作都发生在NameNode。元数据是包含诸 如文件列表、每个文件的数据块列表、每个数据块的数据节点列表、文件属性 (如时间、复制因子等)信息的数据,甚至存储了事务日志,例如文件创建、文 件删除等记录。因此可以说,NameNode包含了整个文件目录结构的信息,并且是 数据块存储位置的管理节点。元数据存储在NameNode的内存中,文件系统没有按 需分页元数据。因此,NameNode仅包含元数据,而不包含实际数据。客户端与NameNode交互以执行元数据操作,从而从DataNode提取信息。

客户端可以通过Java接口或HDFS命令行读取或写入DataNode。最终用 户可以通过客户端获取结果。客户端可以直接读取和写入DataNode,但需要 从NameNode获取DataNode位置的信息。
机架是为多个DataNode提供空间的物理位置。多个机架共同构成集群。DataNode是一种商用硬件,被划分为多个数据块,每个数据块具有特定的大小,通常 在64MB到128MB之间。远程过程调用(RPC)是用于设备间通信的协议。

NameNode接收来自DataNode的信息。从传感器接收到的数据以表格格式进行管理,如 下所示:

各个传感器在00:00发送的数据:

患者 ID 患者
name
ABC
Date
00102015
Time
0000
传感器
data
87,569
类型 疾病
糖尿病
紧急程度 type C00001
中级

在不同时间从不同传感器收集的整合数据被合并到一个文件中,如下所示:

整合后的患者数据:

患者 ID 患者
name
ABC
BCD
CDE
DCE
Date
00102015
00102015
00102015
00102015
Time
0000
0010
0027
0044
传感器
data
7653
65,432
87,569
2341
类型 疾病
疾心病脏
癌性的 发烧 头痛
紧急程度 type C0001
中级 C00231
High C00001
Low C00032
Low

因此,将根据医生/患者的需求和要求为所有患者创建列表,数据可以从任何 位置获取。已处理数据可用于 24×7报告访问。由于所有记录都可在线获取, 因此丢失纸质记录的风险大大降低。

3.2 结论

不断发展的信息技术已对生活的各个方面产生了巨大影响,并对医疗服务带来了 重大变革。鉴于此,我们提出的设计方案引入了一辆具备信息技术支持的智能救 护车,利用Hadoop、云计算、物联网和无线体域网等服务,提供多种功能设施。
所提出的系统由一辆配备WBAN传感器的救护车组成,用于检测患者的 实时数据。这些传感器随后通过物联网技术,利用消息队列遥测传输(MQTT)协议将数据发送至中心节点或汇聚节点;物联网数据聚合被用来向 远程医院的医生提供汇总的实时数据。原始数据被收集并存储在云计算中, 在云中分配了多个虚拟机,用于不同的软件和基础设施,以存储和处理这些 数据。来自不同汇聚节点的数据在云计算中集中收集,并使用Hadoop作为 大数据进行处理,从而生成医生、管理部门和患者所需形式的已处理数据。

Hadoop 提供了数据的图形视图,可用于查看按区域、疾病类型和疾病严重程度分段 分组的患者数量。

图1 展示了基于区域的疾病分割示例 ,以图形形式显示了特定区域(如 州、区或地区)内的患者数量,因为智能救护车传感器传递的参数包含区域 代码。Hadoop 技术将使医务人员能够了解在指定区域内患有特定疾病的患 者数量,从而帮助他们做出行政决策,以有效治疗和预防这些疾病。

图2 展示了基于时间的疾病分割 ,可以按年、月、日甚至小时进行。通 过 Hadoop MapReduce 技术,该图以时间顺序显示了特定地区/区域内患 有某种疾病的患者数量。这些数据可用于找出一年中某种疾病最为严重的时 段,有助于采取预防措施,并帮助管理部门根据此时间分析为今后几年制定 针对该疾病的未来行动计划。

图3 显示了在给定特定时间段内某个区域的基于性别的疾病细分 。这些 数据将用于采取预防措施,以解决特定疾病的性别相关问题。

示意图2

同样,我们可以为从智能救护车上传感器检索到的数据找到合适的细分 图表,用于对特定患者数据进行分析,从而采取预防和治疗措施。

4 结果

本章节提出的智能救护车可用于提供下文所述的医疗服务和管理结果。

远程医疗监控 :在许多发展中国家,偏远医院是一个主要问题。经常出 现交通拥堵等情况,导致无法及时救治患者。鉴于此,该设计方案提供无线 体感传感器(WBNs),以向医生实时传输患者信息。这些传感器由救护车 上的受训人员连接到患者身体上,并通过物联网技术将数据汇集至医院服务 器,医生可基于实时患者信息,在救护车上指导急诊医疗培训人员并利用救 护车上的设备,对患者进行实时治疗。
所提出的系统还能通过物联网和基于传感器的系统等技术,实现远程医 疗管理和远程医学,具有实用性和辅助作用。
所提出的系统还支持应急响应系统,使医生能够根据传感器提供给医院 服务器的数据快速治疗患者。

电子病历 :以电子形式安全且私密地存储患者数据是本提案的另一个方 面。通过安全登录信息,可以随时在任何地点从云计算中访问和收集这些数 据。该机制将减少携带纸质文件的负担,还可用于收集以往有关健康问题或 治疗的任何所需细节。

基于区域的分割 :利用Hadoop的大数据技术可用于提供任何地区的基 于区域的分割报告,以图形格式展示特定区域疾病的影响和预览情况。主管 部门可根据特定地区或区域疾病的严重程度,利用该信息采取必要的措施。

基于时间的分割 :这可以通过大数据应用实现,提供疾病与月份/年份/ 日之间的图形表示。该图形表示可用于找出疾病在相应月份/年份/日的最高 影响,从而协助管理部门进行监控,并在特定时间针对疾病处理做出适当决 策。

基于性别的分割 :这种细分可用于在特定时间与位置下,针对疾病方面 的男女比例进行比较分析。

The use of configuration keys that have been renamed was found in the environment: Property source 'applicationConfig: [classpath:/application.yml]': Key: spring.redis.database Line: 18 Replacement: spring.data.redis.database Key: spring.redis.host Line: 16 Replacement: spring.data.redis.host Key: spring.redis.password Line: 19 Replacement: spring.data.redis.password Key: spring.redis.port Line: 17 Replacement: spring.data.redis.port Key: spring.resources.cache.period Line: 33 Replacement: spring.web.resources.cache.period Key: spring.resources.chain.cache Line: 37 Replacement: spring.web.resources.chain.cache Key: spring.resources.chain.gzipped Line: 35 Replacement: spring.web.resources.chain.compressed Property source 'Config resource 'class path resource [application.yml]' via location 'optional:classpath:/'': Key: spring.redis.database Line: 18 Replacement: spring.data.redis.database Key: spring.redis.host Line: 16 Replacement: spring.data.redis.host Key: spring.redis.password Line: 19 Replacement: spring.data.redis.password Key: spring.redis.port Line: 17 Replacement: spring.data.redis.port Key: spring.resources.cache.period Line: 33 Replacement: spring.web.resources.cache.period Key: spring.resources.chain.cache Line: 37 Replacement: spring.web.resources.chain.cache Key: spring.resources.chain.gzipped Line: 35 Replacement: spring.web.resources.chain.compressed Each configuration key has been temporarily mapped to its replacement for your convenience. To silence this warning, please update your configuration to use the new keys. 什么问题
最新发布
08-22
程序 [csp] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:03.125 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [csp] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:03.126 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[csp]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745)] 30-Jun-2025 10:41:08.216 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.106 30-Jun-2025 10:41:08.218 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Jun 5 2025 19:02:30 UTC 30-Jun-2025 10:41:08.218 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.106.0 30-Jun-2025 10:41:08.218 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Linux 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 3.10.0-862.el7.x86_64 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: /usr/local/jdk/jre 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 1.8.0_44-b02 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=/home/csp/apache-tomcat-9.0.106/conf/logging.properties 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djdk.tls.ephemeralDHKeySize=2048 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dsun.io.useCanonCaches=false 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dignore.endorsed.dirs= 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=/home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=/home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=/home/csp/apache-tomcat-9.0.106/temp 30-Jun-2025 10:41:08.221 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能 30-Jun-2025 10:41:08.401 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"] 30-Jun-2025 10:41:08.419 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[340]毫秒内初始化 30-Jun-2025 10:41:08.440 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina] 30-Jun-2025 10:41:08.440 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.106] 30-Jun-2025 10:41:08.453 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR 正在部署web应用程序存档文件[/home/csp/apache-tomcat-9.0.106/webapps/csp.war] 30-Jun-2025 10:41:12.531 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 10:41:12,573 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 10:41:12,573 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/classes/logback.xml] 10:41:12,574 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath. 10:41:12,574 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/lib/client-collect-api-0.3.28.0.jar!/logback.xml] 10:41:12,574 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/classes/logback.xml] 10:41:12,608 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 10:41:12,614 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 10:41:12,618 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE] 10:41:12,632 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - setting totalSizeCap to 200 GB 10:41:12,635 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - Archive files will be limited to [100 MB] each. 10:41:12,649 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - Will use gz compression 10:41:12,650 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - Will use the pattern ./logs/csp-%d{yyyy-MM-dd}.%i.log.tar for the active file 10:41:12,655 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@3e81a56b - The date pattern is 'yyyy-MM-dd' from file name pattern './logs/csp-%d{yyyy-MM-dd}.%i.log.tar.gz'. 10:41:12,655 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@3e81a56b - Roll-over at midnight. 10:41:12,655 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@3e81a56b - Setting initial period to Thu Jun 26 15:58:50 CST 2025 10:41:12,657 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:41:12,672 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: ./logs/csp.log 10:41:12,672 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [./logs/csp.log] 10:41:12,673 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 10:41:12,675 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 10:41:12,675 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.springframework] to INFO 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [springfox.documentation] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.quartz] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.mybatis] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.pbccrc] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine] to DEBUG 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine.csp.validate.utils] to DEBUG 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine.csp.common.dao] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine.csp.serviceresult.dao] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 10:41:12,677 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 10:41:12,678 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 10:41:12,685 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@4bc614fc - Registering current configuration as safe fallback point . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.18) 2025-06-30 10:41:13.285 [background-preinit] INFO org.hibernate.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final 2025-06-30 10:41:13.307 [main] INFO com.sine.Application - Starting Application v1.0.35-SNAPSHOT using Java 1.8.0_44 on localhost with PID 92930 (/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/classes started by root in /home/csp/apache-tomcat-9.0.106/bin) 2025-06-30 10:41:13.308 [main] DEBUG com.sine.Application - Running with Spring Boot v2.7.18, Spring v5.3.39 2025-06-30 10:41:13.308 [main] INFO com.sine.Application - The following 1 profile is active: "dev" 2025-06-30 10:41:14.873 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode 2025-06-30 10:41:14.877 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-06-30 10:41:14.945 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 51 ms. Found 0 Redis repository interfaces. 2025-06-30 10:41:15.963 [main] INFO org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 2629 ms 2025-06-30 10:41:16.575 [main] INFO org.springframework.boot.web.servlet.RegistrationBean - Filter xssFilter was not registered (possibly already registered?) 2025-06-30 10:41:17.892 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited 2025-06-30 10:41:20.438 [main] INFO org.springframework.scheduling.quartz.LocalDataSourceJobStore - Using db table-based data access locking (synchronization). 2025-06-30 10:41:20.439 [main] INFO org.springframework.scheduling.quartz.LocalDataSourceJobStore - JobStoreCMT initialized. 2025-06-30 10:41:21.526 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.528 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.531 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.829 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.839 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.843 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:22.696 [main] WARN org.thymeleaf.templatemode.TemplateMode - [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead. 2025-06-30 10:41:23.124 [main] INFO org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver - Exposing 0 endpoint(s) beneath base path '/actuator' 2025-06-30 10:41:23.164 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean - Starting Quartz Scheduler now 2025-06-30 10:41:24.144 [main] INFO com.sine.Application - Started Application in 11.303 seconds (JVM running for 16.22) 2025-06-30 10:41:24.458 [main] INFO org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener - Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-06-30 10:41:24.486 [main] ERROR org.springframework.boot.SpringApplication - Application run failed java.lang.IllegalStateException: Failed to execute ApplicationRunner at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:759) at org.springframework.boot.SpringApplication.lambda$callRunners$2(SpringApplication.java:746) at org.springframework.boot.SpringApplication$$Lambda$1079/1133797119.accept(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:744) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:155) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:97) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4491) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1013) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1861) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:817) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1579) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:412) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:739) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1689) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1597) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1383) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1366) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1093) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:421) at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:193) at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:211) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:191) at org.springframework.data.redis.core.RedisTemplate.keys(RedisTemplate.java:896) at com.sine.csp.common.boot.RedisCleanService.run(RedisCleanService.java:27) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:756) ... 56 common frames omitted Caused by: org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:109) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1595) ... 68 common frames omitted Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:330) at io.lettuce.core.RedisClient.connect(RedisClient.java:216) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider$$Lambda$1084/1822563181.get(Unknown Source) at java.util.Optional.orElseGet(Optional.java:267) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.lambda$null$0(LettucePoolingConnectionProvider.java:97) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider$$Lambda$1082/1664936139.get(Unknown Source) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:211) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:201) at org.apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.java:70) at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:571) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:298) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:223) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:122) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:117) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:103) ... 69 common frames omitted Caused by: io.lettuce.core.RedisCommandExecutionException: NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user> <pass> option can be used to authenticate the client and select the RESP protocol version at the same time at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147) at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116) at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120) at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111) at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:63) at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:747) at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:682) at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:599) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:745) 2025-06-30 10:41:24.514 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean - Shutting down Quartz Scheduler 2025-06-30 10:41:25.601 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ... 2025-06-30 10:41:25.616 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed 30-Jun-2025 10:41:25.621 严重 [main] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序 archive [/home/csp/apache-tomcat-9.0.106/webapps/csp.war] 时出错 java.lang.IllegalStateException: 启动子级时出错 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:602) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1013) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1861) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:817) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1579) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:412) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:739) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) Caused by: org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/csp]] at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:406) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:179) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599) ... 37 more Caused by: java.lang.IllegalStateException: Failed to execute ApplicationRunner at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:759) at org.springframework.boot.SpringApplication.lambda$callRunners$2(SpringApplication.java:746) at org.springframework.boot.SpringApplication$$Lambda$1079/1133797119.accept(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:744) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:155) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:97) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4491) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ... 38 more Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1689) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1597) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1383) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1366) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1093) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:421) at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:193) at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:211) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:191) at org.springframework.data.redis.core.RedisTemplate.keys(RedisTemplate.java:896) at com.sine.csp.common.boot.RedisCleanService.run(RedisCleanService.java:27) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:756) ... 56 more Caused by: org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:109) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1595) ... 68 more Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:330) at io.lettuce.core.RedisClient.connect(RedisClient.java:216) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider$$Lambda$1084/1822563181.get(Unknown Source) at java.util.Optional.orElseGet(Optional.java:267) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.lambda$null$0(LettucePoolingConnectionProvider.java:97) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider$$Lambda$1082/1664936139.get(Unknown Source) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:211) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:201) at org.apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.java:70) at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:571) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:298) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:223) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:122) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:117) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:103) ... 69 more Caused by: io.lettuce.core.RedisCommandExecutionException: NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user> <pass> option can be used to authenticate the client and select the RESP protocol version at the same time at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147) at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116) at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120) at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111) at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:63) at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:747) at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:682) at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:599) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:745) 30-Jun-2025 10:41:25.637 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR web应用程序存档文件[/home/csp/apache-tomcat-9.0.106/webapps/csp.war]的部署已在[17,181]ms内完成 30-Jun-2025 10:41:25.637 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/ROOT] 30-Jun-2025 10:41:25.659 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/ROOT]的部署已在[22]毫秒内完成 30-Jun-2025 10:41:25.659 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/docs] 30-Jun-2025 10:41:25.672 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/docs]的部署已在[12]毫秒内完成 30-Jun-2025 10:41:25.672 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/examples] 30-Jun-2025 10:41:25.770 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/examples]的部署已在[97]毫秒内完成 30-Jun-2025 10:41:25.770 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/host-manager] 30-Jun-2025 10:41:25.782 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/host-manager]的部署已在[12]毫秒内完成 30-Jun-2025 10:41:25.783 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/manager] 30-Jun-2025 10:41:25.805 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/manager]的部署已在[23]毫秒内完成 30-Jun-2025 10:41:25.809 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"] 30-Jun-2025 10:41:25.836 信息 [main] org.apache.catalina.startup.Catalina.start [17417]毫秒后服务器启动 30-Jun-2025 10:41:29.190 警告 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [csp] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:29.191 警告 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [csp] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:29.193 警告 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[csp]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745)] 30-Jun-2025 10:41:29.194 严重 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks web应用程序[csp]创建了一个ThreadLocal,其键类型为[org.springframework.boot.SpringBootExceptionHandler.LoggedExceptionHandlerThreadLocal](值为[org.springframework.boot.SpringBootExceptionHandler$LoggedExceptionHandlerThreadLocal@284f8fa0]),值类型为[org.springframework.boot.SpringBootExceptionHandler](值为[org.springframework.boot.SpringBootExceptionHandler@4a632f7c),但在停止web应用程序时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏 30-Jun-2025 10:41:29.194 严重 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks web应用程序[csp]创建了一个ThreadLocal,其键类型为[java.lang.ThreadLocal](值为[java.lang.ThreadLocal@40ba36e7]),值类型为[io.netty.util.internal.InternalThreadLocalMap](值为[io.netty.util.internal.InternalThreadLocalMap@6ad179a0),但在停止web应用程序时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏 30-Jun-2025 10:41:29.995 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1374) at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:997) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 30-Jun-2025 10:41:32.509 信息 [http-nio-8080-exec-3] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
07-01
这是jar包运行 成功了吗:Windows PowerShell 版权所有(C) Microsoft Corporation。保留所有权利。 安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows PS E:\后台\项目\novel-master\novel-master> java -jar target/novel-3.5.1-SNAPSHOT.jar 19:02:59,679 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6 19:02:59,682 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Here is a list of configurators discovered as a service, by rank: 19:02:59,683 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - org.springframework.boot.logging.logback.RootLogLevelConfigurator 19:02:59,683 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - They will be invoked in order until ExecutionStatus.DO_NOT_INVOKE_NEXT_IF_ANY is returned. 19:02:59,683 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Constructed configurator of type class org.springframework.boot.logging.logback.RootLogLevelConfigurator 19:02:59,690 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - org.springframework.boot.logging.logback.RootLogLevelConfigurator.configure() call lasted 1 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY 19:02:59,690 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator 19:02:59,692 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Constructed configurator of type class ch.qos.logback.classic.joran.SerializedModelConfigurator 19:02:59,692 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.scmo] 19:02:59,694 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.scmo] 19:02:59,694 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - ch.qos.logback.classic.joran.SerializedModelConfigurator.configure() call lasted 2 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY 19:02:59,694 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator 19:02:59,695 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator 19:02:59,695 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 19:02:59,696 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml] 19:02:59,696 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 1 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY 19:02:59,696 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Trying to configure with ch.qos.logback.classic.BasicConfigurator 19:02:59,697 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - Constructed configurator of type class ch.qos.logback.classic.BasicConfigurator 19:02:59,697 |-INFO in ch.qos.logback.classic.BasicConfigurator@ea27e34 - Setting up default configuration. 19:02:59,725 |-INFO in ch.qos.logback.classic.util.ContextInitializer@10b3df93 - ch.qos.logback.classic.BasicConfigurator.configure() call lasted 28 milliseconds. ExecutionStatus=NEUTRAL 19:03:00,137 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@33a2499c - URL [jar:nested:/E:/后台/项目/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/logback-spring.xml] is not of type file 19:03:00,173 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word clr with class [org.springframework.boot.logging.logback.ColorConverter] 19:03:00,173 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word wex with class [org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter] 19:03:00,173 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word wEx with class [org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter] 19:03:00,195 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT] 19:03:00,195 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 19:03:00,198 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 19:03:00,207 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [FILE] 19:03:00,207 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 19:03:00,214 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@242408359 - No compression will be used 19:03:00,215 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@242408359 - Will use the pattern logs/debug.%d.%i.log for the active file 19:03:00,227 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@33c2bd - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/debug.%d.%i.log'. 19:03:00,227 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@33c2bd - Roll-over at midnight. 19:03:00,231 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@33c2bd - Setting initial period to 2025-08-04T11:03:00.231Z 19:03:00,231 |-WARN in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@33c2bd - SizeAndTimeBasedFNATP is deprecated. Use SizeAndTimeBasedRollingPolicy instead 19:03:00,231 |-WARN in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@33c2bd - For more information see http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedRollingPolicy 19:03:00,232 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 19:03:00,233 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: logs/novel.log 19:03:00,233 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [logs/novel.log] 19:03:00,234 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to INFO 19:03:00,234 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@1dfd5f51 - Propagating INFO level on Logger[ROOT] onto the JUL framework 19:03:00,234 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT] 19:03:00,234 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE] to Logger[ROOT] 19:03:00,234 |-INFO in ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting level of logger [io.github.xxyopen] to DEBUG 19:03:00,234 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@1dfd5f51 - Propagating DEBUG level on Logger[io.github.xxyopen] onto the JUL framework 19:03:00,236 |-INFO in ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting additivity of logger [io.github.xxyopen] to false 19:03:00,236 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[io.github.xxyopen] 19:03:00,236 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE] to Logger[io.github.xxyopen] 19:03:00,236 |-INFO in ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting level of logger [org.zalando.logbook] to TRACE 19:03:00,236 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@1dfd5f51 - Propagating TRACE level on Logger[org.zalando.logbook] onto the JUL framework 19:03:00,236 |-INFO in ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting additivity of logger [org.zalando.logbook] to false 19:03:00,236 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[org.zalando.logbook] 19:03:00,236 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE] to Logger[org.zalando.logbook] 19:03:00,236 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@3c321bdb - End of configuration. 19:03:00,236 |-INFO in org.springframework.boot.logging.logback.SpringBootJoranConfigurator@24855019 - Registering current configuration as safe fallback point . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.3.0) 2025-08-04 19:03:00.269 INFO 37232 --- [kground-preinit] o.h.validator.internal.util.Version : HV000001: Hibernate Validator 8.0.1.Final 2025-08-04 19:03:00.341 INFO 37232 --- [ main] i.github.xxyopen.novel.NovelApplication : Starting NovelApplication v3.5.1-SNAPSHOT usin g Java 21.0.5 with PID 37232 (E:\鍚庡彴\椤圭洰\novel-master\novel-master\target\novel-3.5.1-SNAPSHOT.jar started by LENOVO in E:\鍚庡彴\椤圭洰\novel-master\novel-master) 2025-08-04 19:03:00.341 DEBUG 37232 --- [ main] i.github.xxyopen.novel.NovelApplication : Running with Spring Boot v3.3.0, Spring v6.1.8 2025-08-04 19:03:00.342 INFO 37232 --- [ main] i.github.xxyopen.novel.NovelApplication : The following 1 profile is active: "dev" 2025-08-04 19:03:02.105 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode 2025-08-04 19:03:02.117 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode. 2025-08-04 19:03:02.139 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 16 ms. Found 0 Elasticsearch repository interfaces. 2025-08-04 19:03:02.145 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode 2025-08-04 19:03:02.146 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode. 2025-08-04 19:03:02.150 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 3 ms. Found 0 Reactive Elasticsearch repository interfaces. 2025-08-04 19:03:02.159 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode 2025-08-04 19:03:02.162 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-08-04 19:03:02.175 INFO 37232 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 4 ms. Found 0 Redis repository interfaces. 2025-08-04 19:03:03.399 INFO 37232 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8888 (http) 2025-08-04 19:03:03.414 INFO 37232 --- [ main] o.a.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8888"] 2025-08-04 19:03:03.416 INFO 37232 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-08-04 19:03:03.416 INFO 37232 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.24] 2025-08-04 19:03:03.458 INFO 37232 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-08-04 19:03:03.459 INFO 37232 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2861 ms _ _ |_ _ _|_. ___ _ | _ | | |\/|_)(_| | |_\ |_)||_|_\ / | 3.5.6 2025-08-04 19:03:05.955 INFO 37232 --- [ main] org.redisson.Version : Redisson 3.19.1 2025-08-04 19:03:06.222 WARN 37232 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initializ ation - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'resourceContro ller' defined in URL [jar:nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/github/xxyopen/ novel/controller/front/ResourceController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name ' resourceServiceImpl' defined in URL [jar:nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/ github/xxyopen/novel/service/impl/ResourceServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'verifyCodeManager' defined in URL [jar:nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/cla sses/!/io/github/xxyopen/novel/manager/redis/VerifyCodeManager.class]: Unsatisfied dependency expressed through constructor parameter 0: Error crea ting bean with name 'stringRedisTemplate' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'stringRedisTemplate' parameter 0: Error creating bean with name 'redissonConnectionFactory' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'redissonConnectionFac tory' parameter 0: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.c lass]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 2025-08-04 19:03:06.228 INFO 37232 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-08-04 19:03:06.261 INFO 37232 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-08-04 19:03:06.272 ERROR 37232 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'resourceController' defined in URL [jar:nested:/E: /鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/github/xxyopen/novel/controller/front/ResourceContr oller.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'resourceServiceImpl' defined in URL [jar:nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/github/xxyopen/novel/service/impl/Re sourceServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'verifyCodeManager' defin ed in URL [jar:nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/github/xxyopen/novel/manag er/redis/VerifyCodeManager.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'stringRedisTemp late' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'stringRedisTemplate' parameter 0: Error creating bean with name 'redissonConnectionFactory' defined in class path resource [org/redisson/spring/s tarter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'redissonConnectionFactory' parameter 0: Error creating be an with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1357) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1194) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:962) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) at io.github.xxyopen.novel.NovelApplication.main(NovelApplication.java:32) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'resourceServiceImpl' defined in URL [ja r:nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/github/xxyopen/novel/service/impl/Resou rceServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'verifyCodeManager' defined in URL [jar:nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/github/xxyopen/novel/manager/ redis/VerifyCodeManager.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'stringRedisTemplat e' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 's tringRedisTemplate' parameter 0: Error creating bean with name 'redissonConnectionFactory' defined in class path resource [org/redisson/spring/star ter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'redissonConnectionFactory' parameter 0: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1357) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1194) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 24 common frames omitted Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'verifyCodeManager' defined in URL [jar: nested:/E:/鍚庡彴/椤圭洰/novel-master/novel-master/target/novel-3.5.1-SNAPSHOT.jar/!BOOT-INF/classes/!/io/github/xxyopen/novel/manager/redis/Verify CodeManager.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'stringRedisTemplate' defined i n class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'stringRedisTe mplate' parameter 0: Error creating bean with name 'redissonConnectionFactory' defined in class path resource [org/redisson/spring/starter/Redisson AutoConfiguration.class]: Unsatisfied dependency expressed through method 'redissonConnectionFactory' parameter 0: Error creating bean with name 'r edisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1357) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1194) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 38 common frames omitted Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'stringRedisTemplate' defined in class p ath resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'stringRedisTemplate' p arameter 0: Error creating bean with name 'redissonConnectionFactory' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfi guration.class]: Unsatisfied dependency expressed through method 'redissonConnectionFactory' parameter 0: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:542) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1337) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1167) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 52 common frames omitted Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redissonConnectionFactory' defined in c lass path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'redissonConnecti onFactory' parameter 0: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfigurat ion.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:542) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1337) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1167) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 66 common frames omitted Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisson' defined in class path resource [org/re disson/spring/starter/RedissonAutoConfiguration.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:648) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1337) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1167) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 80 common frames omitted Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:177) at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644) ... 94 common frames omitted Caused by: org.redisson.client.RedisConnectionException: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379 at org.redisson.connection.pool.ConnectionPool.lambda$createConnection$0(ConnectionPool.java:154) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194) at org.redisson.connection.pool.ConnectionPool.promiseFailure(ConnectionPool.java:318) at org.redisson.connection.pool.ConnectionPool.lambda$createConnection$6(ConnectionPool.java:277) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194) at org.redisson.client.RedisClient$1$2.run(RedisClient.java:250) at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.util.concurrent.CompletionException: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: getsockopt: 127.0.0.1/127.0.0.1:6379 at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:368) at java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:377) at java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1097) ... 11 common frames omitted Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: getsockopt: 127.0.0.1/127.0.0.1:6379 Caused by: java.net.ConnectException: Connection refused: getsockopt at java.base/sun.nio.ch.Net.pollConnect(Native Method) at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682) at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:973) at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:336) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:339) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:1583)
08-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值