宝蓝德中间件部署war包时,配置的绝对路径读取错误。
文章目录
- 问题场景
- 解决办法
- 宝蓝德是什么??
- 一、基础环境与依赖配置
- 二、自动化部署工具链
- 三、高可用性与集群配置
- 四、安全与合规性措施
- 五、产品线差异化部署
- 六、典型部署流程示例
- 七、运维与优化
- 原因
- 1. 明确“当前工作目录”与“绝对路径”的关系
- 2. 问题根源:中间件对路径的“上下文隔离”机制
- 场景还原
问题场景
先说环境:系统是linux系统,中间件是宝蓝德,部署war包,部署服务时配置的文件位置是:/app/bes/f/f/f。项目是springboot项目,yml文件中配置了一段绝对路径(举例,路径是:files:/app/a/b/c/files)。
再说问题:前台访问服务的时候,某个功能会访问这个配置的绝对路径的文件。但是报错了。日志提示是找不到/app/bes/f/f/f/app/a/b/c/files路径下的文件。
解决办法
先说解决办法,在确认代码没问题的情况下,重启宝蓝德解决。重启之后再点这个功能就会正常运行了。
宝蓝德是什么??
先说下宝蓝德有哪些功能
一、基础环境与依赖配置
硬件与操作系统支持
宝蓝德中间件支持 x86、ARM 等多种架构,适配麒麟、统信 UOS 等国产操作系统,以及主流 Linux 发行版。硬件配置建议至少 4 核 CPU、8GB 内存,高并发场景可根据需求提升配置。
JDK 依赖与版本兼容
需根据具体产品选择 JDK 版本,例如部署 iServer 时需使用 JDK 8 及以上,而宝蓝德 9.5.2 版本兼容 JDK 7 和 8。需通过环境变量配置JAVA_HOME,并确保路径正确。
中间件安装与初始化
解压安装包后,执行initstore命令初始化中间件,并通过systemctl或脚本启停服务。默认控制台端口为 6900,用户名 / 密码为admin/B#2008_2108#es。
支持单实例或集群模式,集群部署需配置节点和实例,通过控制台进行集中管理。
二、自动化部署工具链
信创部署工具
宝蓝德提供自研的信创部署工具,支持图形化和静默两种方式,可自动完成数据库初始化、中间件配置、应用部署等操作,减少人工干预。例如,部署协同 OA 系统时,工具会自动调整 JVM 参数、处理冲突 jar 包,并生成初始化 SQL 脚本。
与 CI/CD 集成
虽然未明确官方集成方案,但宝蓝德支持通过脚本和命令行接口(如deploycli)实现自动化部署,可与 Jenkins、GitLab CI 等主流工具链结合,实现从代码提交到生产环境的持续交付。
三、高可用性与集群配置
集群架构与负载均衡
宝蓝德中间件支持多节点集群部署,通过故障转移机制确保服务连续性。负载均衡策略包括轮询、最少连接数等,可结合 HAProxy 等工具实现流量分发。例如,RabbitMQ 集群配置中,通过 HAProxy 实现客户端请求的动态分配。
热部署与动态调整
支持热部署功能,通过控制台开启 “自动部署” 后,将应用 war 包或 jar 包放置在指定目录(如hotdeploy)即可自动更新,无需重启实例。同时,可动态调整 JVM 参数(如堆内存、元空间)以优化性能。
四、安全与合规性措施
数据加密与传输安全
支持 SSL/TLS 加密通信,确保数据在传输过程中的安全性。同时,提供基于角色的访问控制(RBAC),通过 IAM(身份认证与访问管理)实现细粒度权限管理。
审计与日志监控
内置审计功能,记录用户操作和系统事件。结合 WebGate 融合监控系列产品,可实现对基础设施、应用性能、用户体验的全栈式监控,并生成详细报告。
国产化适配与等保合规
产品经过与国产芯片(鲲鹏、龙芯等)、数据库(达梦、人大金仓等)的适配测试,符合等保 2.0 要求,满足党政、金融等行业的合规需求。
五、产品线差异化部署
中间件与协同 OA 集成
需先创建节点和实例,启动后使用信创工具部署 OA 系统,自动配置数据库连接和中间件参数。部署完成后需重启实例使配置生效。
智能运维与 AI 平台
智能运维产品(如 WebGate APM)支持与现有监控系统集成,通过大数据分析实现故障预测和根因诊断。AI 平台(如 AILink 系列)需结合算力资源调度和模型微调,支持私有化部署或混合云模式。
数据治理与开发平台
数据治理平台(DGP)提供可视化数据建模和 ETL 工具,支持多源数据接入和血缘分析。开发平台支持低代码 / 无代码开发,可通过拖拉拽方式快速构建应用服务。
六、典型部署流程示例
中间件单实例部署
上传安装包并解压,配置 JDK 环境变量。
初始化中间件,启动控制台服务。
创建节点和实例,调整 JVM 参数(如堆最大值≥2048MB)。
部署应用 war 包至applications目录,配置虚拟主机和访问路径。
信创环境下的自动化部署
使用图形化工具选择中间件类型、数据库参数及协同路径。
验证参数后执行部署,自动完成数据库初始化、中间件配置及应用分发。
部署完成后重启实例,通过控制台验证应用状态。
集群高可用性部署
配置多个节点并加入集群,通过控制台同步元数据。
结合 HAProxy 配置负载均衡,监听客户端请求。
测试故障转移机制,确保节点宕机后服务无缝切换。
七、运维与优化
性能调优
调整连接池参数(如最大连接数、空闲超时)以提升数据库访问效率。
优化 JVM 垃圾回收策略,通过-XX:+UseGCLogFileRotation等参数监控日志。
监控与告警
集成 WebGate 监控工具,实时采集 CPU、内存、磁盘 I/O 等指标。
设置阈值触发告警,通过邮件或短信通知运维人员。
版本管理与升级
使用信创工具实现平滑升级,自动处理依赖冲突和配置迁移。
定期备份中间件配置和应用数据,确保灾难恢复能力。
原因
核心的问题是为什么宝蓝德部署中间件的时候两次访问的路径不一致?为什么会在我们配置的绝对路径前面多了这个文件部署路径的前缀导致读取文件失败?在宝兰德中间件部署war包的过程中发生了什么?为什么重新部署之后就解决了?
1. 明确“当前工作目录”与“绝对路径”的关系
关键概念
当前工作目录(Working Directory):进程启动时所在的目录,影响相对路径的解析。例如,代码中写 new File(“data.txt”),系统会从工作目录开始查找该文件。
绝对路径:以根目录(如 /)开头的路径,理论上不受工作目录影响。例如,/app/a/b/c/files 应直接指向操作系统中的该路径。
2. 问题根源:中间件对路径的“上下文隔离”机制
中间件的上下文(Context)隔离
宝兰德中间件部署 WAR 包时,会为每个应用创建一个独立的上下文环境,类似于“沙箱”。该环境可能包含以下规则:
文件访问限制:应用默认只能访问其解压后的目录(如 /app/bes/f/f/f)内的文件,无法直接访问外部的绝对路径(如 /app/a/b/c/files)。
虚拟路径映射:中间件可能将某些逻辑路径(如 /files)映射到物理路径,但若配置不当,会导致路径解析异常。
场景还原
首次启动时:
中间件将 WAR 包解压到 /app/bes/f/f/f,但未正确配置上下文路径映射。
当代码尝试访问 /app/a/b/c/files 时,中间件的安全机制误认为这是一个相对于上下文根目录的路径,于是将其拼接为:
上下文根目录(/app/bes/f/f/f) + 请求路径(/app/a/b/c/files) → /app/bes/f/f/f/app/a/b/c/files
由于该路径不存在,导致文件读取失败。
重启后:
中间件重新加载配置,正确识别到 /app/a/b/c/files 是操作系统的真实绝对路径,不再进行路径拼接。
应用直接访问 /app/a/b/c/files,读取成功。
这个思路其实有一点根据问题现象反推原因的意思,如果有对中间件比较熟悉的同学或者有其他想法的同学也欢迎在评论区一起讨论。
相关文章:
宝蓝德中间件部署war包时,配置的绝对路径读取错误。
文章目录 问题场景解决办法宝蓝德是什么??一、基础环境与依赖配置二、自动化部署工具链三、高可用性与集群配置四、安全与合规性措施五、产品线差异化部署六、典型部署流程示例七、运维与优化 原因1. 明确“当前工作目录”与“绝对路径”的关系2. 问题根…...

Linux `ifconfig` 指令深度解析与替代方案指南
Linux `ifconfig` 指令深度解析与替代方案指南 一、核心功能与现状1. 基础作用2. 版本适配二、基础语法与常用操作1. 标准语法2. 常用操作速查显示所有接口信息启用/禁用接口配置IPv4地址修改MAC地址(临时)三、高级配置技巧1. 虚拟接口创建2. MTU调整3. 多播配置4. ARP控制四…...

Python pandas 向excel追加数据,不覆盖之前的数据
最近突然看了一下pandas向excel追加数据的方法,发现有很多人出了一些馊主意; 比如用concat,append等方法,这种方法的会先将旧数据df_1读取到内存,再把新数据df_2与旧的合并,形成df_new,再覆盖写入,消耗和速…...

【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路
摘要:本文详细阐述了政府项目中将 MySQL 5.7 数据库迁移至 KingbaseES 的全过程,涵盖迁移前的环境评估、数据梳理和工具准备,迁移实战中的数据源与目标库连接配置、迁移任务详细设定、执行迁移与过程监控,以及迁移后的质量验证、系…...

Go语言——goflow工作流使用
一、引入依赖 这个很坑,他不允许连接带密码的redis,只能使用不带密码的redis,要带密码的话得自己改一下源代码,无语 go get github.com/s8sg/goflow二、画出我们的工作流程 三、编写代码 package mainimport ("encoding/j…...

yarn npm pnpm
1 下载方式 npm 之前串行下载 现在并行下载 yarn 并行下载 加入缓存复用 pnpm 硬连接 避免重复下载,先检查本地是否存在,存在的话直接连接过去...

Block Styler——字符串控件
字符串控件的应用 参考官方帮助案例:(这个方式感觉更好,第二种方式也可以)E:\NX1980\UGOPEN\SampleNXOpenApplications\C\BlockStyler\ColoredBlock 普通格式: 读取: //方法一 string0->GetProperti…...

LangGraph(三)——添加记忆
目录 1. 创建MemorySaver检查指针2. 构建并编译Graph3. 与聊天机器人互动4. 问一个后续问题5. 检查State参考 1. 创建MemorySaver检查指针 创建MemorySaver检查指针: from langgraph.checkpoint.memory import MemorySavermemory MemorySaver()这是位于内存中的检…...

【无标题】I/O复用(epoll)三者区别▲
一、SOCKET-IO复用技术 定义:SOCKET - IO复用技术是一种高效处理多个套接字(socket)的手段,能让单个线程同时监听多个文件描述符(如套接字)上的I/O事件(像可读、可写、异常)&#x…...
通俗的理解MFC消息机制
1. 消息是什么? 想象你家的门铃响了(比如有人按门铃、敲门、或者有快递),这些都是“消息”。 在 MFC 中,消息就是系统或用户触发的各种事件,比如鼠标点击(WM_LBUTTONDOWN)、键盘输入…...

ClassLoader类加载机制的核心引擎
ClassLoader类加载机制的核心引擎 文章目录 ClassLoader类加载机制的核心引擎1. ClassLoader基础1.1 什么是ClassLoader?1.2 ClassLoader的层次结构1.3 类加载的过程 2. 源码解析与工作原理2.1 ClassLoader的核心方法2.2 双亲委派模型的工作原理2.3 打破双亲委派模型…...

tryhackme——Enumerating Active Directory
文章目录 一、凭据注入1.1 RUNAS1.2 SYSVOL1.3 IP和主机名 二、通过Microsoft Management Console枚举AD三、通过命令行net命令枚举四、通过powershell枚举 一、凭据注入 1.1 RUNAS 当获得AD凭证<用户名>:<密码>但无法登录域内机器时,runas.exe可帮助…...

【Linux学习笔记】系统文件IO之重定向原理分析
【Linux学习笔记】系统文件IO之重定向原理分析 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】系统文件IO之重定向原理分析前言一. 系统文件I/01.1 一种传递标志位的方法1.2 hello.c写文件:1.3 he…...
【新教程】Linux服务器ssh启用两步验证
1 背景 服务器被恶意破解的事件层出不穷,一旦被破解就比较麻烦。不如提前通过简单的措施——增加两步验证,来大大增强服务器的安全性。本教程在Debian 12.5、Ubuntu 24.04等系统上测试通过。 2 详细过程 1、安装 libpam-google-authenticator sudo a…...

SpringBoot中使用MCP和通义千问来处理和分析数据-连接本地数据库并生成实体类
文章目录 前言一、正文1.1 项目结构1.2 项目环境1.3 完整代码1.3.1 spring-mcp-demo的pom文件1.3.2 generate-code-server的pom文件1.3.3 ChatClientConfig1.3.4 FileTemplateConfig1.3.5 ServiceProviderConfig1.3.6 GenerateCodeController1.3.7 Columns1.3.8 Tables1.3.9 Fi…...

实现滑动选择器从离散型的数组中选择
1.使用原生的input 详细代码如下: <template><div class"slider-container"><!-- 滑动条 --><inputtype"range"v-model.number"sliderIndex":min"0":max"customValues.length - 1"step&qu…...

基于Credit的流量控制
流量控制(Flow Control),也叫流控,它是控制组件之间发送和接收信息的过程。在总线中,流控的基本单位称为flit。 在标准同步接口中(比如AXI协议接口),握手信号如果直接采用寄存器打拍的方式容易导致信号在不同的方向上出现偏离。因…...

【金仓数据库征文】金仓数据库KingbaseES: 技术优势与实践指南(包含安装)
目录 前言 引言 一 : 关于KingbaseES,他有那些优势呢? 核心特性 典型应用场景 政务信息化 金融核心系统: 能源通信行业: 企业级信息系统: 二: 下载安装KingbaseES 三:目录一览表: 四:常用SQL语句 创建表: 修改表结构…...
LLaVA:开源多模态大语言模型深度解析
一、基本介绍 1.1 项目背景与定位 LLaVA(Large Language and Vision Assistant)是由Haotian Liu等人开发的开源多模态大语言模型,旨在实现GPT-4级别的视觉-语言交互能力。该项目通过视觉指令微调技术,将预训练的视觉编码器与语言模型深度融合,在多个多模态基准测试中达到…...

金丝猴食品:智能中枢AI-COP构建全链路数智化运营体系
“金丝猴奶糖”,这个曾藏在无数人童年口袋里的甜蜜符号,如今正经历一场数智焕新。当传统糖果遇上数字浪潮,这家承载着几代人味蕾记忆的企业,选择以数智化协同运营平台为“新配方”,将童年味道酿成智慧管理的醇香——让…...
泛型设计模式实践
学海无涯,志当存远。燃心砺志,奋进不辍。 愿诸君得此鸡汤,如沐春风,事业有成。 若觉此言甚善,烦请赐赞一枚,共励学途,同铸辉煌! 为解决在设计框架或库时遇到的类型安全问题ÿ…...

java的输入输出模板(ACM模式)
文章目录 1、前置准备2、普通输入输出API①、输入API②、输出API 3、快速输入输出API①、BufferedReader②、BufferedWriter 案例题目描述代码 面试有时候要acm模式,刷惯leetcode可能会手生不会acm模式,该文直接通过几个题来熟悉java的输入输出模板&…...

鸿蒙 所有API缩略图鉴
从HarmonyOS NEXT Developer Preview1(API 11)版本开始,HarmonyOS SDK以 Kit 维度提供丰富、完备的开放能力,涵盖应用框架、应用服务、系统、媒体、AI、图形在内的六大领域,共计30000个API...
【LangChain全景指南】构建下一代AI应用的开发框架
目录 🌟 前言🏗️ 技术背景与价值🚧 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🧩 关键技术模块说明⚖️ 技术选…...
垃圾对象回收
1.如何判断对象可以被回收 对象是否可以被回收通常由垃圾回收器决定。 垃圾回收器使用一种称为"可达性分析"的算法来确定对象是否可被回收。 可达性分析是指如果一个对象无法从任何GCRoots直接或间接访问到,它就被认为是不可达的,可以被垃圾回…...

【Docker系列】使用格式化输出与排序技巧
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
nvme Unable to change power state from D3cold to D0, device inaccessible
有个thinkpad l15 gen4笔记本,使用较少,有一块三星m2和东芝14t硬盘,想安装飞牛nas系统作为家庭照片库,制作飞牛启动盘,发现安装飞牛需要全盘格式化,电脑本身的系统还是需要保留的,故想到再安装一…...

基础语法(二)
Mysql基础语法(二) Mysql基础语法(二)主要介绍Mysql中稍微进阶一点的内容,会稍微有一些难度(博主个人认为)。学习完基础语法(一)和基础语法(二)之…...
AcWing 877:扩展欧几里得算法
【题目来源】 https://www.acwing.com/problem/content/879/ 【题目描述】 给定 n 对正整数 ai,bi,对于每对数,求出一组 xi,yi,使其满足 aixibiyigcd(ai,bi)。 【输入格式】 第一行包含整数 n。接下来 n 行,每行包含两个整数 ai…...
WebRTC流媒体传输协议RTP点到点传输协议介绍,WebRTC为什么使用RTP协议传输音视频流?
通过上一章《WebRTC工作原理详细介绍、WebRTC信令交互过程和WebRTC流媒体传输协议介绍》,我们知道WEBRTC在完成 SDP 协商和 ICE 候选交换信令后,双方就可以建立 RTP 流,开始传输音视频数据,这时,RTP 数据包就通过在 IC…...