寶藍德中間件部署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.pswp.cn/diannao/82421.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82421.shtml
英文地址,請注明出處:http://en.pswp.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,控制臺…