me>
</session>
</enterprise-beans>
</openejb-jar>
在Apache Geronimo上部署J2EE应用程序(5)
时间:2011-04-16 IBM Kunal Mittal
注: Aaron Mulder 编写的 Apache Geronimo Development and Deployment 一书中有这 个 XML 文件结构的精彩可视表示。(请参阅 参考资料 获得这本书的链接。)
基本上,这个文件:
定义在容器中部署的实体 bean。
设置 Java 命名和目录接口(JNDI)名称。
声明该 bean 是实体 EJB。
定义使用的数据源。
定义这个实体 EJB 代表的表的名称。
用数据库表中对应的列,对代表列的容器管理字段进行定义。
这就够了!使用一个简单的 Java 类和这个部署描述符,就完成了部署实体 EJB 需要做 的全部工作。在过去,编写实体 EJB 至少需要一到两天。现在,只要两个小时。
无状态会话 EJB
在部署时,会话 EJB 需要的工作实际上与实体 EJB 相同。实际上,在这里 XDoclet 的 使用方式也与前面用于实体 EJB 的方式类似。清单 5 所示的 PhoneBookSessionBean.java 显示了处理会话 EBJ 时需要的部署描述符的基本情况。它实际上比实体 EJB 的部署描述符 简单得多。
清单 5. PhoneBookSessionBean.javapackage org.acme.phonebook.ejb;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* Phone book session bean. A place for all of the useful business
* methods that can be done with phone book entries.
*
* @ejb.bean name="PhoneBookSession"
* type="Stateless"
* local-jndi-name="java:comp/env/ejb/PhoneBookSessionLocal"
* jndi-name="org.acme.phonebook.ejb/PhoneBookSession/Home"
* view-type="both"
*
* @ejb.permission unchecked="true"
*
* @ejb.interface generate="local,remote"
* remote-class="org.acme.phonebook.ejb.PhoneBookSession"
* local-class="org.acme.phonebook.ejb.PhoneBookSessionLocal"
* @ejb.home generate="local, remote"
* remote-class="org.acme.phonebook.ejb.PhoneBookSessionHome"
* local-class="
* org.acme.phonebook.ejb.PhoneBookSessionLocalHome"
* @ejb.util generate="physical"
* @ejb.ejb-ref ejb-name="PhoneBookEntry" view-type="local"
* ref-name="ejb/PhoneBookEntryLocal"
* @web.ejb-local-ref
* name="ejb/PhoneBookSessionLocal"
* type="Session"
* home="org.acme.phonebook.ejb.PhoneBookSessionLocalHome"
* local="org.acme.phonebook.ejb.PhoneBookSessionLocal"
* link="PhoneBookSession"
*
*/
public abstract class PhoneBookSessionBean implements
javax.ejb.SessionBean {
/**
* Add a phone book entry.
* @param name the name
* @param number the number
*
* @ejb.interface-method view-type="both"
* @ejb.transaction type="Required"
*/
public void addEntry(java.lang.String name,
java.lang.String number) {
try {
PhoneBookEntryLocal entry =
PhoneBookEntryUtil.getLocalHome().
create(name,number);
} catch(Throwable ex) {
|