implements EntityBean{
private EntityContext ctx;
public ProductBean(){
}
// 开始抽象的 get/set 方法,这里的 getter/setter 方法名称由 get/set 开头,后面紧跟着 CMP
// 需管理域的名字,并且把此名字第一个字母大写,这些 CMP 管理的域在 ejb-jar.xml 中声明
public abstract String getName();
public abstract void setName(String name);
public abstract String getDescription();
public abstract void setDescription(String description);
public abstract double getBasePrice();
public abstract void setBasePrice(double price);
public abstract String getProductID();
public abstract void setProductID(String productID);
//开始EJB必须的方法,方法由容器调用,不是由客户端程序调用,这里只需声明即可
public void ejbActivate(){}
public void ejbRemove(){}
public void ejbPassivate(){}
public void ejbLoad(){}
public void ejbStore(){}
public void setEntityContext(EntityContext ctx){
this.ctx = ctx;
}
public void unsetEntityContext(){
this.ctx = ctx;
}
public void ejbPostCreate(String productID,String name,String description,double basePrice){}
//这个Create和Home接口中的Create对应,这里它要返回一个主键类
//它调用由容器实现的getter/setter方法来产生实体Bean对象。
public ProductPK ejbCreate(String productID,String name,String description,double basePrice) throws CreateException{
setProductID(productID);
setName(name);
setDescription(description);
setBasePrice(basePrice);
return new ProductPK(productID);
}
}
8、 好了,通过以上几步,我们编写好了CMP所需的类文件,下面我们来编写部署此CMP的部署描述符文件。首先编写的是ejb-jar.xml,进入META-INF目录(即C:JBOSSmyprojectProductCMPejbproduct.jarMETA-INF),在此目录中新建一个ejb-jar.xml文件,内容如下:(这个文件的说明我写在文件中了,是一个自解说的文件)
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<!—此处声明CMP必须的基本信息-->
<enterprise-beans>
<entity>
<ejb-name>Product</ejb-name> <!—此处声明此CMP的Bean名字,以便引用 -->
<home>product.ejb.ProductHome</home>
<remote>product.ejb.Product</remote>
<ejb-class>product.ejb.ProductBean</ejb-class>
<persistence-type>Container</persistence-type> <!—此处指出是CMP Bean -->
<prim-key-class>product.ejb.ProductPK</prim-key-class> <!—指出主键类-- >
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<!--指出在EJB QL查询中和实体Bean对应的数据库中的数据表名-->
<abstract-schema-name>ProductBean</abstract-schema-name>
<!—下面的部分cmp-field指出了CMP中哪几个域是由容器维护的-- >
<!— 注意这些域的名称的写法要和 getter/setter 方法中一致 -- >
<cmp-field>
<field-name>productID</field-name>
</cmp-field>
<cmp-field>
<field-name>name</field-name>
</cmp-field>
<cmp-field>
<field-name>description</field-name>
</cmp-field>
<cmp-field>
<field-name>basePrice</field-name>
</cmp-field>
<!—下面的部分描述出Home接口中定义的查找方法-- >
<query>
<query-method>
<method-name>findByName</method-name> <!—查找方法的方法名-- >
<method-params>
<method-param>java.lang.String</method-param> <!—参数类型 -- >
</method-params>
</query-method>
<ejb-ql> <!—下面用EJB-QL语言定义了此方法如何查找,?1参数由调用时传入-- >
<![CDATA[SELECT OBJECT(a) FROM ProductBean AS a WHERE a.name=?1]]>
</ejb-ql>
</query>
<query>
<query-method>
<
上一页 [1] [2] [3] [4] [5] [6] 下一页