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

JBoss 3.2.1 部署 J2EE 應用完整指南:資料源、日誌、EJB 與 Web 容器調優

     編輯:Java 相關知識

JBoss 3.2.1 特色

  • 免安裝、基於 JMX 微核心架構
  • 熱部署、EJB 開發效率高
  • 開源文檔較少,需累積實戰經驗
假設安裝路徑:C:\jboss-3.2.1_tomcat-4.1.24,使用 default 配置集。

一、關鍵配置檔設定

1. 資料源配置

JBoss 內建主流資料庫範例於 docs/examples/jca/。以 SQL Server 2000 為例:

  • 複製 mssql-ds.xml 至 server/default/deploy/
  • 修改 JNDI 名稱、連線 URL、驅動類別、帳密、連線池大小
<datasources>
  <local-tx-datasource>
    <jndi-name>VSSDB</jndi-name>
    <connection-url>jdbc:microsoft:sqlserver://125.16.45.158:1433;DatabaseName=DDD</connection-url>
    <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
    <user-name>sa</user-name>
    <password>sa</password>
    <min-pool-size>50</min-pool-size>
    <max-pool-size>200</max-pool-size>
  </local-tx-datasource>
</datasources>

若 EJB 需使用此 DataSource,需修改 server/default/conf/standardjbosscmp-jdbc.xml:

<defaults>
  <datasource>java:/VSSDB</datasource>
  <datasource-mapping>MS SQLSERVER2000</datasource-mapping>
  <create-table>true</create-table>
  <remove-table>false</remove-table>
  ...
</defaults>

注意: java:/ 前綴表示僅 JBoss 內部可見,外部應用無法使用。

2. 日誌輸出層級調整

JBoss 擴展 Log4j,配置檔 server/default/conf/log4j.xml。調整主控台輸出至 DEBUG:

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
  <param name="Target" value="System.out"/>
  <param name="Threshold" value="DEBUG"/> <!-- 原為 INFO -->
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
  </layout>
</appender>

Entity Bean 調試需同步修改 standardjboss.xml,將 Standard CMP 2.x EntityBean 的 call-logging 設為 true,主控台將顯示 JDBC 呼叫細節。

3. Tomcat 容器參數

整合版位於 server/default/deploy/jbossweb-tomcat.sar/:

  • web.xml:擴充 MIME 型別、Session 逾時等
  • META-INF/jboss-service.xml:HTTP 埠號(預設 8080,改 80 需修改此處)

4. 第三方類庫放置

  • 全域共用(如 JDBC Driver):server/default/lib/(非 JBoss 根目錄 lib)
  • 應用專用:打包進 .war 或 .ear 的 WEB-INF/lib/

二、EJB 開發實戰原則

1. 實體 Bean 交易策略選擇

JBoss 提供 A/B/C/D 四種提交選項。若僅 Entity Bean 存取資料庫,選 A 最佳;若有其他存取途徑,需根據具體情況選擇,並配合鎖定策略降低死鎖風險。優先採用 1:n 關聯操作 n 端資料表,提升容器效率。

2. 事務管理三不原則

  • 不混用 JDBC、JTA、容器管理事務 (CMT)
  • 事務範圍盡可能縮短,單一方法內完成
  • Session Bean 用 JTA 時,必須透過 SessionContext.getUserTransaction() 取得,不可 JNDI 查找

3. 程式化事務範例

// JDBC 事務
public void processT(String orders) {
    Connection conn = ds.getConnection();
    try {
        conn.setAutoCommit(false);
        orderNo = createOrder(orders);
        updateOrderStatus(orderNo, "orders created");
        conn.commit();
    } catch (Exception e) {
        conn.rollback();
        throw new EJBException("事務回滾: " + e.getMessage());
    }
}

// JTA 事務
public void processOrder(String orderMessage) {
    UserTransaction tx = sessionContext.getUserTransaction();
    try {
        tx.begin();
        orderNo = sendOrder(orderMessage);
        updateOrderStatus(orderNo, "order sent");
        tx.commit();
    } catch (Exception e) {
        tx.rollback();
        throw new EJBException("事務回滾: " + e.getMessage());
    }
}

4. 容器管理事務 (CMT) 注意事項

  • 需拋出系統級異常 (EJBException, NoSuchEntityException) 觸發回滾,應用級異常不會回滾。
  • 能用 CMP 盡量不用 BMP;BMP 不如 Session Bean + JDBC + JTA 靈活。
  • 優先用聲明式事務 (CMT),專注業務邏輯,提升可移植性。

三、Web 應用開發建議

  • 採用成熟框架:Struts (事實標準)、Log4j、WebMethods 等
  • JSF 即將推出,將與 Struts 互補整合,革新 JSP 前端開發
  • JBoss 3.2.1 下 Web 開發流程與其他應用伺服器大同小異
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved