/**
* This is the EJB Receiver Xbean
*
* @ejb:bean type="Stateless"
* name="ejbReceiver"
* jndi-name="org.xbeans.ejb.receiver.Receiver"
* display-name="EJB Receiver Xbean"
*
* ... other javadoc tags ...
*/
public class ReceiverBean implements SessionBean, DOMSource {
ejb:bean最常用的属性是:
name:EJB的名称(在描述中使用)
type:定义bean的”类型“,对会话bean,是Stateful或Stateless,对实体bean是CMP或BMP
jndi-name:JNDI名称将在特定厂商的部署描述中使用(对远程接口来说)
local-jndi-name:和jndi-name相似,除了给本地接口使用外。
view-type:说明bean将支持的"接口视图(views)",可以是remote,local或者both.
至于全部标签,可以查看XDoclet文档了解全部选项。
标签:@ejb:env-entry
这个标签定义一个经由特殊的java:comp/env上下文,被配置在JNDI的环境实体.我们将定义一个环境实体,在此实体中bean将在链表中寻找下一个Xbean.
/**
* This is the EJB Receiver Xbean
*
* ... other javadoc tags ...
*
* @ejb:env-entry name="channelBean" type="java.lang.String"
* value="com.your.ChannelBean"
*
* ... other javadoc tags ...
*/
public class ReceiverBean implements SessionBean, DOMSource {
标签:@weblogic:pool
现在我们将使用Weblogic的参数来配置特定厂商的池特征。为了表示我们在使用特定厂商,我么使用了weblogic命名空间:
/**
* This is the EJB Receiver Xbean
*
* ... other javadoc tags ...
*
* @weblogic:pool max-beans-in-free-pool="1000"
* initial-beans-in-free-pool="10"
*
* ... other javadoc tags ...
*/
public class ReceiverBean implements SessionBean, DOMSource {
这个标签将在weblogic的部署描述文件(weblogic-ejb-jar.xml)里配置池的参数。
当然了,在部署中,还可以使用许多其他类级别(class-level)的标签。以下是经常被使用的标准标签的一瞥:
@ejb:bean
这是唯一要求必须的标签,它用来配置bean的基本信息
@ejb:home
这个标签提供了home接口的信息。你可以让XDoclet去继承一个自定义的接口,可以生成那种home接口(none,remote,local,or both),接口的package应该是什么,等等
@ejb:interface
和home标签相似,除了可以配置相关接口的信息(远程和/或本地)。
@ejb:finder
在实体beans的home接口中定义查找的方法
@ejb:select
在实体beans的home接口中定义选择的方法
@ejb:pk
为实体bean定义主键。XDoclet能够为你自动生成主键类。
@ejb:data-object
通过这个标签,可以自动生成实体beans的数据对象。
@ejb:ejb-ref
配置EJB的引用
@ejb:ejb-external-ref
配置要引用在别的应用中的beans。在这里,你需要输入象bean的类型,home/remote接口的类等
@ejb:resource-ref
配置资源引用。
@ejb:security-role-ref
配置安全角色引用
@ejb:transaction
为有事务行为的remote和home接口的所有方法定义事务类型。单独方法的事务标签可以覆盖。
@ejb:permission
允许基于角色来调用remote和home接口的所有方法。
@ejb:security-identity
用来指定在执行EJB的方法时,是否需要调用者的安全标识,或者是否需要一个特别的运行标识。
方法级别标签的定义
如果我们想让一个方法成为remote接口的一部分,那么只需要通过一个方法级别的标签就可以了。示例如下:
/**
* The method that the sender uses to pass the Document
*
* @ejb:interface-method view-type="remote"
*/
public void documentReady(Document incomingDocument) {
这个标签是必须。你将在bean类中完成这些方法,并且如果你希望让客户端也能够访问它,那么在你方法声明处加入这个标签。如果你想仅仅通过本地接口访问,你只需要简单把view-type值修改成为"local"就可以了。
以下是其他一些EJB方法级别的标签:
@ejb:relation
定义了EJB2.0 CMP实体bean之间的关系
@ejb:home-method
将方法定义为ejbHome*的方法
@ejb:persistent-field
在生成的CMP层类型(layer of type)中创建CMP的字段"X",并且具体实现getX/setX方法。
对于BMP来说,它将生成保持脏标志(dirty flag)的getX/setX方法(以方便ejbStore在需要的时候调用)
@ejb:pk-field
标志主键字段
@ejb:transaction
给方法定义事务的行为(只能是以下有效属性:NotSupported|Supports|Required|RequiresNew|Mandatory|Never.
@ejb:permission
定义方法的权限(以逗号分隔的角色列表将被允许访问这个方法)。
使用XDoclet来构建Bean
现在我们已经有一个使用XDoclet做了标记的ReceiverBean.java的源文件。现在需要运行XDoclet来为生成所有我们需要的。更好的方法是使用Jakarta-Ant来构建系统。
Ant是一个基于java的普遍使用的构建系统。如果你还没有使用Ant,那么就到Jakarta官方网站下载一个,或者参考Open Source Java:Ant
XDoclet的团体已经开发好了Ant任务(task),所以我们只需要简单加入到构建文件(build.xml)中就可以使用了.
主要有两个任务:和.既然我们在使用EJB,那就让我们在构建文件中仔细的研究一下ejbdoclet目标(target详细请参考Ant文档)。
本文地址:http://com.8s8s.com/it/it16258.htm