宝蓝德中间件部署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.mzph.cn/diannao/82421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java、Python、NodeJS等开发环境安装及配置镜像加速到国内源

文章目录 Java1.Windows1.1 scoop方式安装JDK 2.Linux2.1 apt方式安装JDK2.1.1 切换JDK2.1.2 验证版本2.1.3 原理 Python1.Windows1.1 scoop方式安装Python1.2 uv方式安装Python(推荐) 2.Linux2.1 apt方式安装Python2.1.1 配置版本切换2.1.2 切换Python2…

Linux系统管理与编程16:PXE自动化安装部署centos7.9操作系统

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 0.准备 1)防火墙和SELinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config (很不好的…

MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议

核心定义 MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议,通过安全可控的方式向AI应用暴露数据和功能。主要提供以下能力: 标准化的上下文管理安全的功能调用接口跨平台的数据交…

Fiori学习专题三十四:Responsiveness

在这一步中,我们提高了应用程序的响应能力。SAPUI5应用程序可以在手机、平板电脑和台式机设备上运行,我们可以配置应用程序以充分利用每种场景的屏幕状态。幸运的是,像sap.m.Table这样的SAPUI5控件已经提供了许多我们可以使用的功能。 1.修改…

解决 TimeoutError: [WinError 10060] 在 FramePack项目中连接 Hugging Face 超时的问题

#工作记录 以下是针对 TimeoutError: [WinError 10060] 的完整排查方案,适用于 FramePack项目中。 (一般该错误的发生原因请重点排查Hugging Face模型仓库受限需要登录的情形) FramePack项目参考资料 FramePack部署(从PyCharm解…

obj = null; 赋值null之前没有其他引用指向obj对象,那么,当obj=null时,会被垃圾回收机制立即回收吗?

不会立即回收。 具体原因是: 赋值 obj null; 后,对象变成“不可达”,符合垃圾回收条件,但垃圾回收器并不会立刻回收它。垃圾回收是CLR自动控制的非确定性过程,什么时候执行回收取决于系统内存压力、GC策略、分代情况…

【Ubuntu 安装Docker CE-Jenkins】

安装Docker CE(Ubuntu) Install | Docker Docs官网 使用apt仓库安装 DNS配置(可选) #手动替换 sudo vim /etc/systemd/resolved.conf #典型配置如下 [Resolve] DNS8.8.8.8 DNS114.114.114.114 FallbackDNS1.1.1.1 # 备用 DNS#sed替换 sudo sed -i /^#DNS/ {s/#DNS/DNS8.8.8…

5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming

76个工业组件库示例汇总 开放式PLC编程环境 这是一个开放式PLC编程环境的自定义组件,提供了一个面向智能仓储堆垛机控制的开放式PLC编程环境。该组件采用苹果科技风格设计,支持多厂商PLC硬件,具有直观的界面和丰富的功能。 功能特点 多语…

内网和外网怎么互通?外网访问内网的几种简单方式

在企业或家庭网络中,经常会遇到不同内网环境下网络互通问题。例如,当公司本地局域网内有个办公OA网站,在办公室内电脑上网可以登录使用,但在家带宽下就无法直接通信访问到。这就需要我们采取一些实用的内外网互通技巧来解决这个问…

使用大语言模型进行机器人规划(Robot planning with LLMs)

李升伟 编译 长期规划在机器人学领域可以从经典控制方法与大型语言模型在现实世界知识能力的结合中获益。 在20世纪80年代,机器人学和人工智能(AI)领域的专家提出了莫雷奇悖论,观察到人类看似简单的涉及移动和感知的任务&#x…

【计算机视觉】OpenCV实战项目: opencv-text-deskew:实时文本图像校正

opencv-text-deskew:基于OpenCV的实时文本图像校正 一、项目概述与技术背景1.1 核心功能与创新点1.2 技术指标对比1.3 技术演进路线 二、环境配置与算法原理2.1 硬件要求2.2 软件部署2.3 核心算法流程 三、核心算法解析3.1 文本区域定位3.2 角度检测优化3.3 仿射变换…

可视化图解算法33:判断是不是平衡二叉树

1. 题目 描述 输入一棵节点数为 n 的二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质&#xff1…

【Linux网络】应用层自定义协议与序列化

应用层自定义协议与序列化 应用层 我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序,都是在应用层. 协议是一种"约定".Socket的接口,在读写数据时,都是按"字符串"的方式来发送接收的.如果我们要传输一些"结构化的数据"怎么办…

MySQL + Elasticsearch:为什么要使用ES,使用场景与架构设计详解

MySQL Elasticsearch:为什么要使用ES,使用场景与架构设计详解 前言一、MySQL Elasticsearch的背景与需求1.1 为什么要使用Elasticsearch(ES)?1.2 为什么MySQL在某些场景下不足以满足需求?1.3 MySQL Elas…

PPL困惑度的计算

1. 公式 PPL(Perplexity)困惑度 是自然语言处理(NLP)中常用的评估语言模型(Language Model)性能的指标。PPL 用于衡量语言模型对语言序列的预测能力,数值越小,说明模型的预测能力越…

MegaCLI Raid管理工具

整理在CentOS 7.9和Ubuntu 24.04上,MegaCLI 工具的安装与常用命令。 1. 参考 下载和安装MegaCLI工具 MegaCli RAID管理工具 Megacli 批量磁盘巡检 ubuntu24.04 No such file libncursesw.so.5 dell服务器硬盘的状态变成外来(foreign)命…

HTML9:页面结构分析

页面结构分析 元素名描述header标题头部区域的内容(用于页面或页面中的一块区域)footer标记脚部区域的内容(用于整个页面或页面的一块区域)sectionWeb页面的一块独立区域article独立的文章内容aside相关的内容或应用(…

分布式处理架构

分布式处理架构是一种将计算任务分散到多台计算机或服务器上协同完成的系统设计方法。这种架构通过将工作负载分配到多个节点(可以是物理机、虚拟机或容器)来提高性能、可靠性和可扩展性。下面我将从多个角度详细解释这一概念: 分布式架构的…

算法每日一题 | 入门-分支结构-Apples Prologue/苹果和虫子

Apples Prologue/苹果和虫子 题目描述 小 B 喜欢吃苹果。她现在有 m m m(1 ≤ m ≤100)个苹果,吃完一个苹果需要花费 t t t(0 ≤ t≤ 100)分钟,吃完一个后立刻开始吃下一个。 现在时间过去了 s s s&a…

RT Thread Studio创建软件和硬件RTC工程

MCU型号:STM32F103RET6 一.配置软件模拟RTC 1.生成一个带串口输出的工程文件,新建RT-Thread项目工程文件。 2.查看电路图中的串口输出管脚,根据STMCubeMx软件可知此串口为USART1,选择芯片型号为STM32F103RET6,控制台…