/**
* 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的名稱(chēng)(在描述中使用)
type:定義bean的”類(lèi)型“,對會(huì )話(huà)bean,是Stateful或Stateless,對實(shí)體bean是CMP或BMP
jndi-name:JNDI名稱(chēng)將在特定廠(chǎng)商的部署描述中使用(對遠程接口來(lái)說(shuō))
local-jndi-name:和jndi-name相似,除了給本地接口使用外。
view-type:說(shuō)明bean將支持的"接口視圖(views)",可以是remote,local或者both.
至于全部標簽,可以查看XDoclet文檔了解全部選項。
標簽:@ejb:env-entry
這個(gè)標簽定義一個(gè)經(jīng)由特殊的java:comp/env上下文,被配置在JNDI的環(huán)境實(shí)體.我們將定義一個(gè)環(huán)境實(shí)體,在此實(shí)體中bean將在鏈表中尋找下一個(gè)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的參數來(lái)配置特定廠(chǎng)商的池特征。為了表示我們在使用特定廠(chǎng)商,我么使用了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 {
這個(gè)標簽將在weblogic的部署描述文件(weblogic-ejb-jar.xml)里配置池的參數。
當然了,在部署中,還可以使用許多其他類(lèi)級別(class-level)的標簽。以下是經(jīng)常被使用的標準標簽的一瞥:
@ejb:bean
這是唯一要求必須的標簽,它用來(lái)配置bean的基本信息
@ejb:home
這個(gè)標簽提供了home接口的信息。你可以讓XDoclet去繼承一個(gè)自定義的接口,可以生成那種home接口(none,remote,local,or both),接口的package應該是什么,等等
@ejb:interface
和home標簽相似,除了可以配置相關(guān)接口的信息(遠程和/或本地)。
@ejb:finder
在實(shí)體beans的home接口中定義查找的方法
@ejb:select
在實(shí)體beans的home接口中定義選擇的方法
@ejb:pk
為實(shí)體bean定義主鍵。XDoclet能夠為你自動(dòng)生成主鍵類(lèi)。
@ejb:data-object
通過(guò)這個(gè)標簽,可以自動(dòng)生成實(shí)體beans的數據對象。
@ejb:ejb-ref
配置EJB的引用
@ejb:ejb-external-ref
配置要引用在別的應用中的beans。在這里,你需要輸入象bean的類(lèi)型,home/remote接口的類(lèi)等
@ejb:resource-ref
配置資源引用。
@ejb:security-role-ref
配置安全角色引用
@ejb:transaction
為有事務(wù)行為的remote和home接口的所有方法定義事務(wù)類(lèi)型。單獨方法的事務(wù)標簽可以覆蓋。
@ejb:permission
允許基于角色來(lái)調用remote和home接口的所有方法。
@ejb:security-identity
用來(lái)指定在執行EJB的方法時(shí),是否需要調用者的安全標識,或者是否需要一個(gè)特別的運行標識。
方法級別標簽的定義
如果我們想讓一個(gè)方法成為remote接口的一部分,那么只需要通過(guò)一個(gè)方法級別的標簽就可以了。示例如下:
/**
* The method that the sender uses to pass the Document
*
* @ejb:interface-method view-type="remote"
*/
public void documentReady(Document incomingDocument) {
這個(gè)標簽是必須。你將在bean類(lèi)中完成這些方法,并且如果你希望讓客戶(hù)端也能夠訪(fǎng)問(wèn)它,那么在你方法聲明處加入這個(gè)標簽。如果你想僅僅通過(guò)本地接口訪(fǎng)問(wèn),你只需要簡(jiǎn)單把view-type值修改成為"local"就可以了。
以下是其他一些EJB方法級別的標簽:
@ejb:relation
定義了EJB2.0 CMP實(shí)體bean之間的關(guān)系
@ejb:home-method
將方法定義為ejbHome*的方法
@ejb:persistent-field
在生成的CMP層類(lèi)型(layer of type)中創(chuàng )建CMP的字段"X",并且具體實(shí)現getX/setX方法。
對于BMP來(lái)說(shuō),它將生成保持臟標志(dirty flag)的getX/setX方法(以方便ejbStore在需要的時(shí)候調用)
@ejb:pk-field
標志主鍵字段
@ejb:transaction
給方法定義事務(wù)的行為(只能是以下有效屬性:NotSupported|Supports|Required|RequiresNew|Mandatory|Never.
@ejb:permission
定義方法的權限(以逗號分隔的角色列表將被允許訪(fǎng)問(wèn)這個(gè)方法)。
使用XDoclet來(lái)構建Bean
現在我們已經(jīng)有一個(gè)使用XDoclet做了標記的ReceiverBean.java的源文件?,F在需要運行XDoclet來(lái)為生成所有我們需要的。更好的方法是使用Jakarta-Ant來(lái)構建系統。
Ant是一個(gè)基于java的普遍使用的構建系統。如果你還沒(méi)有使用Ant,那么就到Jakarta官方網(wǎng)站下載一個(gè),或者參考Open Source Java:Ant
XDoclet的團體已經(jīng)開(kāi)發(fā)好了Ant任務(wù)(task),所以我們只需要簡(jiǎn)單加入到構建文件(build.xml)中就可以使用了.
主要有兩個(gè)任務(wù):和 .既然我們在使用EJB,那就讓我們在構建文件中仔細的研究一下ejbdoclet目標(target詳細請參考Ant文檔)。
classname="xdoclet.ejb.EjbDocletTask" classpath="${java.class.path};${xdoclet.jar.path};
${log4j.jar.path};${ant.jar.path}"/>
<>
sourcepath="${java.dir}"
destdir="${generated.java.dir}"
ejbspec="2.0">
version="2.4" xmlencoding="UTF-8" /><>< span=""> <>

聯(lián)系客服