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

J2EE 13 大核心技術深度解析 (一):從兩層到多層、JDBC、JNDI、WebLogic 實踐

     編輯:J2EE

歷史演進:從 Client/Server 到 N 層架構

兩層架構痛點

  • 客戶端承擔:UI + 業務邏輯 + 數據訪問 (Fat Client)
  • 部署惡夢:數百客戶端升級、DLL 地獄、配置漂移
  • 邏輯復用困難:業務邏輯綁定在特定 UI 技術 (VB/PowerBuilder/Delphi)
  • 擴展性瓶頸:數據庫連接數線性增長、鎖爭用劇烈、無法水平擴展應用邏輯
  • 協議綁定:專有數據庫協議、中間件鎖定

J2EE 多層架構重塑


+------------------+     +------------------+     +------------------+     +------------------+
|   Client Tier    |     |   Web Tier       |     |  Business Tier   |     |  EIS Tier        |
|  (Browser/Applet |←→   |  (Servlet/JSP/   |←→   |  (Session Bean/  |←→   |  (Database/ERP/  |
|   Java Web Start)|     |   JSF/Struts)    |     |   Spring Service)|     |   Legacy/MQ)     |
+------------------+     +------------------+     +------------------+     +------------------+
        ↑                        ↑                        ↑                        ↑
   表現邏輯                  動態頁面生成              核心業務邏輯              數據訪問/集成
   用戶交互                  控制器/視圖              事務/安全/持久門面        JDBC/JCA/JMS
  • 關注點分離:每層專注單一職責,獨立開發、部署、擴展、技術棧演進
  • 標準化組件模型:Servlet、JSP、EJB、JCA 定義契約,容器提供通用服務
  • 聲明式中間件服務:事務、安全、資源池、命名、消息、管理 — 開發者零代碼享用

JDBC:統一數據訪問標準

四類驅動架構演進

類型架構優點缺點定位
Type 1: JDBC-ODBC BridgeJDBC → ODBC → DB早期通用性需客戶端裝 ODBC、Windows 綁定、雙重轉換性能差已淘汰
Type 2: Native APIJDBC → Native Client Lib → DB性能優於 Type 1需客戶端裝 Native Lib、平台綁定Oracle OCI 等老牌驅動
Type 3: Network ProtocolJDBC → Middleware Server → DB純 Java、無客戶端安裝、支持連接池/負載均衡中間件單點、雙網絡跳轉早期三層架構方案
Type 4: Pure Java (Direct)JDBC → DB Native Protocol (Pure Java)零部署、跨平台、直連、高性能、支持連接池需 DB 廠商提供純 Java 協議實現現代標準 (MySQL Connector/J, PostgreSQL JDBC, Oracle Thin, SQL Server JDBC)

企業級 JDBC 最佳實踐


// 1. 數據源注入 (JNDI 查找或 Spring 注入)
DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/MyDB");

// 2. 連接池配置
// 生產環境必用連接池 (HikariCP/Druid/Tomcat DBCP),避免頻繁建立/銷毀連接開銷

// 3. 標準操作模板
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
    conn = ds.getConnection();          // 從池獲取
    conn.setAutoCommit(false);          // 事務邊界控制
    ps = conn.prepareStatement(sql);    // 預編譯防注入、優化複用
    ps.setString(1, param);             // 參數綁定
    rs = ps.executeQuery();             // 執行查詢
    while (rs.next()) { ... }           // 流式處理結果集
    conn.commit();                      // 提交事務
} catch (SQLException e) {
    if (conn != null) conn.rollback();  // 回滾
    throw new DAOException(e);
} finally {
    closeQuietly(rs, ps, conn);         // 必須歸還連接到池
}

WebLogic JDBC 進階特性

  • 多數據源:負載均衡/故障轉移算法 (Round Robin/Failover)、XA/非 XA 混合
  • 連接池優化:InitialCapacity、MaxCapacity、CapacityIncrement、ShrinkPeriodMinutes、TestConnectionsOnReserve、TestTableName (如 SELECT 1 FROM DUAL)
  • 語句緩存:PreparedStatement Cache Size、PreparedStatement Cache Profiling
  • 分布式事務:JTA/XA 驅動、兩階段提交、事務日志持久化、恢復服務
  • RowSet:斷開連接的結果集 (CachedRowSet、WebRowSet),支持序列化傳遞、XML 導入導出

JNDI 在 WebLogic 中的實踐

資源配置與查找


// config.xml (域配置) 片段
<jdbc-system-resource>
  <name>MyDB</name>
  <jdbc-resource>
    <jndi-name>jdbc/MyDB</jndi-name>  <-- 全局 JNDI 名稱 -->
    <jdbc-driver-params>
      <url>jdbc:oracle:thin:@host:1521:SID</url>
      <driver-name>oracle.jdbc.OracleDriver</driver-name>
      <properties><property name="user" value="scott"/><property name="password" value="tiger"/></properties>
    </jdbc-driver-params>
    <jdbc-connection-pool-params>
      <initial-capacity>5</initial-capacity>
      <max-capacity>20</max-capacity>
      <test-table-name>SELECT 1 FROM DUAL</test-table-name>
    </jdbc-connection-pool-params>
  </jdbc-resource>
</jdbc-system-resource>

// 應用查找 (標準 java:comp/env 映射)

    jdbc/MyDB  // 應用邏輯名
    javax.sql.DataSource
    Container


// weblogic.xml (應用級映射)

    jdbc/MyDB
    jdbc/MyDB  // 映射到全局 JNDI

WebLogic 應用服務器:J2EE 參考實現

核心價值主張

  • 簡化分布式開發:容器托管事務、安全、連接池、線程池、負載均衡、故障轉移、部署、管理
  • 標準合規:通過 Sun J2EE 1.4 認證,緊跟規範演進 (EJB 3.0、JPA、JAX-WS、JAX-RS)
  • 生產級質量:24×7 支持、HP/Novell/CA/Unisys 合作伙伴生態、關鍵任務系統驗證
  • 創新引領:JMX 微內核、SOA 架構、熱部署類加載器、JRockit JVM、AOP 集成、FastSwap 類重定義

WebLogic 核心服務矩陣

服務J2EE 標準WebLogic 增強
事務JTA 1.0.1高性能事務管理器、跨域事務、事務日志磁盤/數據庫存儲
安全JAAS/JACC嵌入式 LDAP、SAML 2.0、XACML 授權、PKI/雙向 SSL
消息JMS 1.1分布式隊列/主題、單元次序、存儲轉發、JMS SAF
命名JNDI 1.2集群化 JNDI 樹、外部 LDAP 整合、複製綁定
管理JMX 1.2管理控制台、WLST 腳本、SNMP、REST 管理 API、診斷框架
部署JSR-88生產重部署、版本管理、應用庫、計劃部署、FastSwap

總結:J2EE 架構師必備認知

  1. 架構分層 是應對複雜性的唯一出路,J2EE 提供標準化分層契約
  2. JDBC Type 4 + 連接池 + DataSource + JNDI 是數據訪問的黃金組合
  3. 容器服務聲明式使用,業務代碼零侵入,專注領域邏輯
  4. WebLogic 等商業級容器 將標準轉化為生產級能力,是關鍵任務系統的穩定基石
  5. 技術演進本質:EJB → Spring POJO、JSP → Template Engine、RMI → REST/gRPC、JMS → Kafka、XML → JSON — 核心契約 (事務、安全、命名、資源管理) 永恆不變
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved