對於初接觸 EJB 的開發者,讓第一個程式順利跑起來往往是最大挑戰。本文整理 JBoss EJB 開發所需的完整配置檔結構與關鍵設定,涵蓋資料源、JNDI 綁定、CMP 欄位映射、Web 模組等核心環節,助你快速建立可運行的 EJB 應用。
| 檔案路徑 | 用途 |
|---|---|
jboss/conf/default/jboss.jcml | 資料源設定 |
jboss/conf/default/standardjaws.xml | 資料庫類型設定 |
[project.ear]/META-INF/application.xml | 專案基本資訊設定 |
[project_ejb.jar]/META-INF/ejb-jar.xml | EJB 元資料設定 |
[project_ejb.jar]/META-INF/jboss.xml | JNDI 名稱綁定設定 |
[project_ejb.jar]/META-INF/jaws.xml | CMP 欄位與資料庫映射 |
[project_web.war]/WEB-INF/web.xml | Welcome file、Servlet 等 Web 設定 |
// 1) 程式碼查找
Context ctx = new InitialContext();
MyHome home = (MyHome) ctx.lookup("jndiEJBName");
// 2) ejb-jar.xml 宣告
<ejb-ref>
<ejb-ref-name>ejb/MyEJB</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.example.MyHome</home>
<remote>com.example.MyRemote</remote>
</ejb-ref>
// 3) jboss.xml 綁定 JNDI 名稱
<entity>
<ejb-name>EJBName</ejb-name>
<jndi-name>jndiEJBName</jndi-name>
</entity>
// 1) 程式碼查找 DataSource
DataSource ds = (DataSource) ctx.lookup("java:comp/env/DBName");
// 2) ejb-jar.xml 定義 resource-ref
<entity>
<ejb-name>MyBMP</ejb-name>
<resource-ref>
<res-ref-name>DBName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
// 3) jboss.xml 映射到 JBoss 資源管理器
<entity>
<ejb-name>MyBMP</ejb-name>
<resource-ref>
<res-ref-name>DBName</res-ref-name>
<resource-name>myDB</resource-name>
</resource-ref>
</entity>
<resource-managers>
<resource-manager res-class="javax.sql.DataSource">
<res-name>myDB</res-name>
<res-jndi-name>mySQLDS</res-jndi-name>
</resource-manager>
</resource-managers>
<datasource>mySQLDS</datasource>
<type-mapping>mySQL</type-mapping>
<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>
<mbean code="org.jboss.jdbc.XADataSourceLoader"
name="DefaultDomain:service=XADataSource,name=mySQLDS">
<attribute name="PoolName">mySQLDS</attribute>
<attribute name="DataSourceClass">
org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl
</attribute>
<attribute name="URL">jdbc:mysql://pyliu/cake</attribute>
<attribute name="JDBCUser">root</attribute>
<attribute name="Password" />
</mbean>
依照上述結構配置,即可在 JBoss 上成功部署並運行 EJB 應用。建議開發時善用 XDoclet 或 IDE 自動生成工具減少手工 XML 編寫錯誤。