首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

J2EE 專案實戰經驗談:WAR 包資源讀取與 Ant 記憶體優化

     編輯:Java 相關知識

痛點一:WAR 部署後資源文件「找不到」

開發階段常用解壓目錄部署,上線卻打包成 .war。WebLogic 不自動解壓 WAR,導致 ServletContext.getRealPath("/") 返回 null,原本用文件 IO 讀取 WEB-INF/log4j.properties 的代碼瞬間失效。

錯誤示範

// 開發環境正常,打包部署失敗
String path = context.getRealPath("/") + "/WEB-INF/log4j.properties";
PropertyConfigurator.configure(path);

正解:統一用 getResourceAsStream

InputStream is = getServletContext().getResourceAsStream("/WEB-INF/log4j.properties");
Properties props = new Properties();
props.load(is);
PropertyConfigurator.configure(props);

getResourceAsStream 兼容文件系統、JAR/WAR、資料庫等多種資源來源,無論打包與否皆可用,徹底消除環境差異。

痛點二:大專案 Ant 編譯 OutOfMemoryError

類文件數千時,JVM 預設 64MB 堆內存不夠用。修改 ant.bat(或 ant.sh)的啟動參數:

:runAnt
"%_JAVACMD%" -Xms128m -Xmx512m -classpath ...

若用 Jike 編譯器,同步修改 :runAntWithJikes 區塊。-Xms 設初始堆、-Xmx 設最大堆,視物理內存調整,通用於所有 Java 應用啟動腳本。

核心原則

  • 資源訪問**只用標準 API**,拒絕文件系統路徑假設。
  • 建構腳本**預留內存擴容**參數,避免臨時改代碼、分批編譯的痛苦。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved