当前位置: 首页 > ds >正文

宝蓝德中间件部署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,读取成功。
这个思路其实有一点根据问题现象反推原因的意思,如果有对中间件比较熟悉的同学或者有其他想法的同学也欢迎在评论区一起讨论。

http://www.xdnf.cn/news/5329.html

相关文章:

  • 《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-俄罗斯方块:用旋转矩阵打造经典
  • 质量、重力、引力、惯性 的本质,以及虫洞
  • 按键实现多个界面切换的方法
  • 从需求到用例的AI路径:准确率与挑战
  • PyQt5基础:QWidget类的全面解析与应用实践
  • LinkedList源码解析
  • stm32 lcd绘制波形和频谱
  • android HashMap和List该如何选择
  • Go多服务项目结构优化:为何每个服务单独设置internal目录?
  • ChatBI选型指南:主流产品技术对比与落地建议
  • 【Docker 新手入门指南】第四章:镜像加速
  • 相机Camera日志分析之八:高通Camx HAL架构opencamera三级日志详解及关键字
  • [6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)
  • JMeter 中实现 双 WebSocket(双WS)连接
  • 【Linux实践系列】:进程间通信:万字详解共享内存实现通信
  • 系统分析与设计期末复习
  • 高效全能PDF工具,支持OCR识别
  • ThinkPad T440P如何从U盘安装Ubuntu24.04系统
  • QMK键盘固件开发全解析:QMK 固件开发的最新架构和规范(2025最新版)
  • [亲测搭建可用]LoliMeow主题二次元风博客WordPress主题模板
  • Android 关闭Activity切换过渡动画
  • 栈溢出攻击最基本原理
  • 宝塔服务安装使用的保姆级教程
  • Redis 集群
  • 安装或更新 CUDA Toolkit - Ubuntu - RuntimeError
  • CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
  • WPF中如何自定义控件
  • 【Oracle认证】MySQL 8.0 OCP 认证考试英文版(MySQL30 周年版)
  • #Redis黑马点评#(四)优惠券秒杀
  • Fabric系列 - SoftHSM 软件模拟HSM