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

Apache OpenJPA 在 Java EE 環境下的整合與部署實戰(JBoss 篇)

     編輯:Java 相關知識

本系列前幾篇著重於 OpenJPA 在獨立 Java SE 環境下的應用,本文將深入實戰,示範如何在 JBoss 應用伺服器上部署 OpenJPA,開發實體 Bean、封裝 Session Bean、並透過 Local 接口實現客戶端訪問。

核心遷移任務:從應用管理到容器管理

將 OpenJPA 遷移至 Java EE 容器,需完成三大關鍵轉型:

  1. 部署單元變更:從獨立 JAR/WAR 轉為 EJB JAR 或 EAR 企業應用檔。
  2. 資料源與事務托管:放棄應用層級 JDBC 配置與手動事務控制(entityManager.getTransaction().begin()),改用容器管理的 JTA 資料源(JNDI 綁定)與容器管理事務(CMT)。
  3. EntityManager 注入:不再手動創建 EntityManagerFactory,改用 @PersistenceContext 或 @PersistenceUnit 註解注入 EntityManager 或 EntityManagerFactory,或透過 JNDI 查找。

Session Bean 封裝實體訪問

EJB 3.0 規範規定實體無法直接綁定到 JNDI 供遠程客戶端訪問,必須透過 Session Bean 封裝。本例定義 Remote(IAnimalDAO)與 Local(ILocalAnimalDAO)雙介面,實現類 AnimalDAO 同時實現兩者,並以 @Stateless 聲明無狀態 Session Bean,@PersistenceContext 注入 EntityManager:

@Stateless
public class AnimalDAO implements IAnimalDAO, ILocalAnimalDAO {
    @PersistenceContext
    EntityManager em;

    public void persistAnimal(Animal animal) {
        em.persist(animal); // 事務由容器 JTA 自動管理,無需 begin/commit
    }
}

JBoss 環境配置詳解

1. JDBC 資料源配置 (mysql-ds.xml)

將 MySQL 驅動 JAR 放入 $JBOSS_HOME/server/default/lib,在 deploy 目錄建立 mysql-ds.xml,定義 JNDI 名稱 java:/mysqlDS,配置連線池參數。

2. JPA 配置 (persistence.xml)

關鍵在於指定 provider 為 org.apache.openjpa.persistence.PersistenceProviderImpl,否則 JBoss 預設使用 Hibernate。並透過 <jta-data-source>java:/mysqlDS</jta-data-source> 引用容器資料源:

<persistence-unit name="ejb3">
  <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
  <jta-data-source>java:/mysqlDS</jta-data-source>
  <class>org.vivianj.jpademo.beans.Animal</class>
</persistence-unit>

3. OpenJPA 庫部署

將 openjpa-*.jar、commons-*.jar、serp-*.jar 複製至 $JBOSS_HOME/server/default/lib,確保類路徑可用。

Ant 自動化建構與熱部署

提供完整 build.xml,涵蓋編譯、OpenJPA Enhancer 增強實體類、打包 EJB JAR、複製至 JBoss deploy 目錄觸發熱部署。關鍵任務:

  • compile:編譯原始碼。
  • enhance:呼叫 org.apache.openjpa.ant.PCEnhancerTask 增強位元組碼,支援延遲載入等進階特性。
  • ejbjar:打包並部署。

客戶端驗證

編寫簡單 JSP (Client.jsp) 部署於 JBoss Web 容器,透過 JNDI 查找 AnimalDAO/local 呼叫 persistAnimal,驗證實體持久化成功。瀏覽器訪問 https://localhost:8080/Client.jsp,資料庫 Animal 表應出現新記錄。

總結

OpenJPA 完整實現 JPA 標準,可無縫整合至 JBoss 等 Java EE 容器。關鍵在於:容器管理資料源與 JTA 事務、@PersistenceContext 注入 EntityManager、Session Bean 封裝實體訪問、OpenJPA 庫正確部署至容器類路徑。掌握此流程,即可在企業級環境發揮 OpenJPA 強大的 ORM 能力。

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