Tomcat/Jetty 適合中小項目,大型企業級應用常選 **JRun、IBM WebSphere、BEA WebLogic (現 Oracle WebLogic)**。本文對比三者架構特點、核心配置、管理控制台、部署模型、典型故障排查,助力技術選型與運維。
| 問題 | 解決 |
| Web 應用如何加載非 Servlet/EJB 類? | 管理控制台 → Web 應用 → 高級 → 可重新加載類路徑,放入 JAR/目錄。 |
| 調用 JAR 類報 ClassNotFound? | 類路徑必須包含 **JAR 完整路徑**,而非目錄。 |
| Model/Clone 概念? | Model = 應用模板;Clone = 基於模板創建的實例,用於負載均衡。 |
| 運行時能刪除日誌嗎? | **不能**,會導致寫入停滯。需停服務器 → 刪除/改名 → 重啟。 |
| 啟動報端口 9000 衝突? | AIX X-windows 佔用。修改 admin.config com.ibm.ejs.sm.adminServer.lsdPort=9005。 |
| EJB 部署 NoClassDefFoundError? | 將支持 JAR 加入應用服務器類路徑 -classpath 或 MANIFEST.MF Class-Path。 |
WebSphere Studio (開發工具) 提示
- JSP 版本設置:項目屬性 → 高級 → JSP 版本選 1.0 (匹配 WAS 運行時)。
- 拖放 Java 文件生成
jsp:useBean:工具 → 選項 → HTML 元素選 JSP:useBean。
- 遠程同步 VAJ:啟動 VAJ
Remote Access to Tool API,Studio 插入 → 文件 → 從外部數據源 → VAJ。
三、BEA WebLogic Server (現 Oracle WebLogic)
配置核心:weblogic.properties (舊版) / config.xml (現代)
# 經典屬性 (weblogic.properties 風格)
weblogic.httpd.documentRoot=public_html/
weblogic.password.system=encrypted_password
weblogic.system.listenPort=7001
weblogic.httpd.servlet.classpath=/weblogic/myserver/servletclasses
# Servlet 註冊 (舊版必須註冊才能訪問)
weblogic.httpd.register.helloWorld=examples.servlets.HelloWorldServlet
# 實際類路徑:/weblogic/myserver/servletclasses/examples/servlets/HelloWorldServlet.class
# 管理控制台 Servlet 群
weblogic.httpd.register.AdminMain=admin.AdminMain
# 訪問 https://host:7001/AdminMain 輸入 system/password 進入管理台
現代 WebLogic (12c/14c) 關鍵點
- Domain:頂級管理單元,包含 AdminServer + 多 ManagedServer + Cluster。
- 配置中心:
config.xml + jdbc/ jms/ 子目錄,WLST (Python) 腳本自動化運維。
- 部署模型:
.war/.ear → AdminServer 推送 → ManagedServer 階段模式/外部階段/無階段。
- 類加載:
weblogic-application.xml <prefer-application-packages> 解決 Jar 衝突。
- 集群:單播/組播、會話複製 (In-Memory/DB/JDBC)、負載演算法 (輪詢/權重/隨機)。
典型故障排查
| 現象 | 排查方向 |
| 啟動慢/卡住 | JRockit/JDK 版本、熵源不足 (-Djava.security.egd=file:/dev/./urandom)、DB 連接池初始化阻塞 |
| ClassCastException / LinkageError | 父優先/父最後策略錯誤,檢查 prefer-application-packages、prefer-web-inf-classes |
| 會話丟失 | 集群會話複製配置、Sticky Session、序列化實現 Serializable |
| JDBC 連接洩漏 | 連接池 Inactive Connection Timeout、Test Connections On Reserve、代碼未 close |
四、三大商業服務器對比總結
| 維度 | JRun (歷史) | WebSphere | WebLogic |
| 定位 | 輕量 Servlet/JSP 引擎 | 全棧 Java EE/EJB/微服務 | 全棧 Java EE/雲原生/高性能 |
| 管理控制台 | Swing Applet/遠程 | ISC (Web 管理控制台) + wsadmin | WebLogic Console + WLST (Python) |
| 集群/高可用 | Pro/Enterprise 支援 | ND (Network Deployment) 強大 | Cluster + Whole Server Migration |
| 類加載隔離 | 多 JVM 物理隔離 | 模塊類加載器、父最後 | FilteringClassLoader、應用包優先 |
| 授權模式 | CPU/併發 | PVU (Processor Value Unit) | Core/Named User |
| 現狀 | **EOL (Adobe 收購後停止)** | 活躍 (WAS 9/Traditional + Liberty) | 活躍 (WebLogic 14c + Kubernetes Operator) |
五、選型建議
- 中小項目/微服務/雲原生:Tomcat / Jetty / Undertow + Spring Boot,輕量、啟動快、容器友好。
- 傳統大型單體、重 EJB/JMS/JCA、IBM 技術棧:WebSphere Traditional (ND) 或 Liberty (輕量化)。
- Oracle 生態、高併發、需 WebLogic 特有功能 (JMS 高級、Tuxedo 集成、Coherence 緩存):WebLogic 14c。
- 避免新項目選 JRun:已無安全更新、社區支持、人才市場。
- 上一篇文章: JSP 用戶登錄驗證、Application 變量、防緩存、HTML 編碼工具類完整代碼集
- 下一篇文章: JSP 連接數據庫方法大全 (精簡版):Oracle、SQL Server 核心代碼與配置要點
Copyright ©
程式碼之家 All Rights Reserved