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

JBoss EJB 開發完整配置指南:從數據源到部署描述符

     編輯:Java 程式設計入門

文件結構總覽

JBoss EJB 部署涉及 7 個核心配置文件,分佈在 EAR、EJB-JAR、WAR 三類歸檔中:

#文件路徑用途
1jboss/conf/default/jboss.jcml數據源 (XADataSource) 定義
2jboss/conf/default/standardjaws.xml數據庫類型映射 (Type Mapping)
3[project.ear]/META-INF/application.xml項目基本信息 (模塊列表、顯示名等)
4[project_ejb.jar]/META-INF/ejb-jar.xmlEJB 標準元數據 (Home/Remote、方法、事務屬性)
5[project_ejb.jar]/META-INF/jboss.xmlJBoss 專用配置 (JNDI 名、安全域、實體命令)
6[project_ejb.jar]/META-INF/jaws.xmlCMP 字段與數據庫列映射
7[project_web.war]/WEB-INF/web.xmlWeb 模塊配置 (Servlet、Welcome 文件、過濾器)

常見引用場景配置模板

1. 引用其他 EJB (本地/遠程)

<!-- ejb-jar.xml -->
<ejb-ref>
  <ejb-ref-name>ejb/OtherEJB</ejb-ref-name>
  <ejb-ref-type>Session</ejb-ref-type>
  <home>com.other.OtherHome</home>
  <remote>com.other.Other</remote>
</ejb-ref>

<!-- jboss.xml -->
<ejb-ref>
  <ejb-ref-name>ejb/OtherEJB</ejb-ref-name>
  <jndi-name>jndi/OtherEJB</jndi-name> <!-- 目標 EJB 實際 JNDI 名 -->
</ejb-ref>

代碼查找:ctx.lookup("java:comp/env/ejb/OtherEJB")。

2. BMP 直接引用 DataSource (以 MySQL 為例)

<!-- ejb-jar.xml -->
<resource-ref>
  <res-ref-name>jdbc/MyDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

<!-- jboss.xml -->
<resource-ref>
  <res-ref-name>jdbc/MyDB</res-ref-name>
  <resource-name>MyDBPool</resource-name> <-- 對應 jboss.jcml 中的 PoolName -->
</resource-ref>

<resource-managers>
  <resource-manager res-class="javax.sql.DataSource">
    <res-name>MyDBPool</res-name>
    <res-jndi-name>MySQLDS</res-jndi-name> <-- JNDI 名 -->
  </resource-manager>
</resource-managers>

<!-- standardjaws.xml -->
<datasource>MySQLDS</datasource>
<type-mapping>mySQL</type-mapping>

3. 數據源定義 (jboss.jcml - MySQL XADataSource)

<mbean code="org.jboss.jdbc.XADataSourceLoader"
       name="DefaultDomain:service=XADataSource,name=MySQLDS">
  <attribute name="PoolName">MyDBPool</attribute>
  <attribute name="DataSourceClass">
    org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl
  </attribute>
  <attribute name="URL">jdbc:mysql://localhost:3306/mydb</attribute>
  <attribute name="JDBCUser">root</attribute>
  <attribute name="PassWord">password</attribute>
</mbean>

標準實體 Bean 默認設置 (standardjaws.xml)

<default-entity>
  <create-table>false</create-table>
  <remove-table>false</remove-table>
  <tuned-updates>false</tuned-updates>
  <read-only>false</read-only>
  <time-out>300</time-out> <!-- 緩存超時秒數 -->
</default-entity>

避坑提示

  • JNDI 名稱統一:ejb-jar.xml 的 ejb-name、jboss.xml 的 jndi-name、代碼 lookup() 參數三者必須對應。
  • 資源引用名 res-ref-name 必須以 jdbc/ 或 ejb/ 開頭 (J2EE 規範慣例)。
  • type-mapping 必須與數據庫廠商匹配 (mySQL, Oracle, PostgreSQL 等),影響 CMP SQL 生成。
  • JBoss 3.x/4.x 為經典版本,現代 WildFly (JBoss AS 7+) 配置遷移至 standalone.xml/domain.xml,但 EJB 部署描述符結構基本兼容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved