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

WebLogic Server 9 新特性:J2EE Libraries 與 Optional Packages 共享模組完整指南

     編輯:Java 相關知識

背景:企業應用模組共享的演進

WebLogic Server 9.0(WLS9)引入 J2EE Shared Libraries,允許一個 J2EE 模組(EJB、Web、EAR)被多個企業應用共享。同時支援 J2EE 1.4 標準的 Optional Packages(JAR 級共享)。兩者解決「公共程式庫重複打包、版本衝突、升級困難」的經典難題。

核心機制:MANIFEST.MF 擴充屬性

在模組 META-INF/MANIFEST.MF 宣告共享身分:

Extension-Name: myLib
Specification-Version: 1.0
Implementation-Version: 1.0
  • Extension-Name:邏輯名稱,引用端以此匹配。未指定則用部署名。
  • Specification-Version:規範版本,支援 major.minor.micro 或字串格式。引用端可指定最低版本、精確版本。
  • Implementation-Version:實作版本,需配合 Specification-Version 使用。

亦可透過 weblogic.Deployer 部署參數 -library、-libspecver、-libimplver 設定,無需修改 JAR。

J2EE Libraries vs Optional Packages 深度對比

特性J2EE LibrariesOptional Packages
封裝形式EAR、WAR、EJB JAR、RAR、資源適配器純 JAR 檔
部署描述符保留並生效忽略(視為普通類別庫)
引用者範圍僅企業應用(EAR)任意 J2EE 模組(EAR/WAR/EJB/RAR)
引用方式weblogic-application.xml <library-ref>MANIFEST.MF Extension-List
巢狀引用不支援 Library 引用 Library支援 Optional Package 引用 Optional Package
URI 來源部署名(建議打包成 EAR 避免衝突)Extension-Name

最佳實踐七原則

  1. 共享 J2EE 模組給多 EAR → 用 J2EE Libraries。
  2. 獨立模組做共享庫 → 打包成 EAR,指定部署名作為 URI,避免 URI 衝突。
  3. 純 Java 類別共享 → 用 Optional Packages。
  4. 穩定第三方類別(極少升級) → 放 domain/lib,啟動自動載入系統 ClassLoader,最輕量。
  5. 即使不需要版本控制,建議給定版本號,便於測試多版本共存。
  6. 明確指定 Extension-Name,避免部署名變更導致引用失效。
  7. Web 應用共享時注意 context-root 衝突,可在引用端 weblogic-application.xml 覆蓋。

實戰練習一:開發與部署 Shared J2EE Library

專案結構

J2EEShared/
├── SharedLibraryEAR/          # 被共享的 Library
│   ├── LoanEJB.jar            # EJB 模組
│   ├── META-INF/
│   │   ├── application.xml
│   │   ├── weblogic-application.xml
│   │   └── MANIFEST.MF        # Extension-Name: myLib
│   └── APP-INF/               # 應用內部第三方 JAR
└── CallingLibraryEAR/         # 引用端企業應用
    ├── LoanApproval.war       # Web 模組(JSP 呼叫 EJB)
    ├── META-INF/
    │   ├── application.xml
    │   └── weblogic-application.xml  #  指向 myLib
    └── APP-INF/

關鍵步驟

  1. 建置 Library:java weblogic.appc SharedLibraryEAR 預編譯驗證。
  2. 部署 Library:java weblogic.Deployer -deploy -library SharedLibraryEAR。Console 顯示 myLib(1.0) 狀態 Installed。
  3. 建置引用端:java weblogic.appc -library SharedLibraryEAR CallingLibraryEAR。-library 讓 appc 解析 Library 類別解決 JSP 編譯依賴。
  4. 部署引用端:java weblogic.Deployer -deploy CallingLibraryEAR。狀態 Active。
  5. 驗證:瀏覽 https://localhost:7001/LoanApproval 顯示 EJB 回傳字串。

移除順序:先移除所有引用應用 → Activate Changes → Lock → 移除 Library。

實戰練習二:開發與部署 Optional Packages

專案結構

OptionalPackages/
├── SimpappOptionalPackage/    # 共享 JAR
│   ├── simpapp.jar            # 含 MANIFEST.MF (Extension-Name: myOptionalPackage)
│   └── META-INF/MANIFEST.MF
└── SimpappEAR/                # 引用端
    ├── SimpappWebApp.war
    ├── META-INF/
    │   ├── application.xml
    │   └── MANIFEST.MF        # Extension-List: simpapp + 版本屬性
    └── APP-INF/

關鍵差異

  • 建置引用端:java weblogic.appc -classpath SimpappOptionalPackage/simpapp.jar SimpappEAR(用 -classpath 而非 -library)。
  • 部署共享包:java weblogic.Deployer -deploy -library SimpappOptionalPackage/simpapp.jar。
  • 引用端 MANIFEST.MF 宣告依賴:
Extension-List: simpapp
simpapp-Extension-Name: myOptionalPackage
simpapp-Extension-Specification-Version: 0.9

總結與選型建議

WLS9 雙軌共享機制各有甜點:

  • J2EE Libraries:重資產(含部署描述符、資源定義、EJB/Web 元件),企業級治理。
  • Optional Packages:輕量類別庫、工具類、第三方 JAR,開發期彈性高。
  • domain/lib:極穩定、全域共用、無版本管理需求的基礎設施類別。

善用三者組合,可構建清晰分層、版本可控、部署高效的企業級應用生態系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved