日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

【使用xdoclet開發(fā)ejb】

 昵稱1098 2005-08-24
你開發(fā)過EJB么?當你去創(chuàng)建和操作EJB的XML部署描述以及接口時,是否受過挫折呢?我當然有過。
我近來正在用EJB開發(fā)一個叫Xbeans的開源項目,并且決定使用另外一個開源工具 -- XDoclet -- 來生成XML描述和EJB接口.
   使用XDoclet可以讓你在J2EE框架內更高效的工作。你將有一個更簡單的beans之間的視圖和關系,
并且可以去除很多你在開發(fā)中的煩惱。
   這篇文章將討論XDoclet,以及如何去使用和擴展它。在這里,我們將創(chuàng)建一個使用javadoc標記(tag)的會話(Session)Bean,并且使用XDoclet運行它。
什么是XDoclet?
   XDoclet是在Rickard Oberg創(chuàng)建的EJBDoclet基礎上演化過來的一個工具。它的想法很簡單:通過bean類本身來查看整個組件,而不是通過操作多個ejb文件。它是怎樣做到的呢?java除了有javadoc標記外,并沒有.NET所宣傳的"屬性"。我們可以在javadoc注釋中放入特殊@標簽,讓一個Doclet的工具來尋找這些標簽,讓后根據(jù)bean給的信息集合來生成合適的XML描述和接口。XDoclet以EJBDoclet觀念為基礎,并且把此框架擴展在EJB領域之外,現(xiàn)在你可以生成Web Services,Web Applicaiton的描述,甚至通過擴展來滿足你個人的需要。
   @標簽有一個標準的格式:一個“命名空間(namespace)”和一個屬于命名空間的“標簽名稱(tagname)",然后是經由 name="value"的屬性傳遞給標簽。
 下面是一個通用的示例:
  /**
 * @namespace:tag name="value" name2="value2" ...
 */

當前的命名空間有:
   ejb:標準EJB信息(不包括特定廠商)
   jboss:關于Jboss應用服務器的特定信息
   weblogic:關于BEA‘s Weblogic 應用服務器的特定信息
   wegSphere:關于IBM‘s WebSphere 應用服務器的特定信息
   orion:關于Orion應用服務器(Oracle)的特定信息
   castor:根據(jù)Castor框架生成相關的映射信息
   mvcsoft:根據(jù)MVCSoft EJB2.0的持久管理器生成相關的文件
   soap:生成SOAP描述
   structs:根據(jù)FORM和Action生成structs-config.xml
   web:根據(jù)Web Application生成web.xml配置
   jsp:生成tld信息
正如你看到的,除了EJB還支持很多其他的框架,所有EJBDoclet改名成XDoclet.(譯者:當然了,現(xiàn)在支持的框架更多了,包括近來流行的spring,hibernate等,具體參考官方網站http://xdoclet.

會話Bean:通過使用特殊的Javadoc標簽創(chuàng)建一個會話Bean
    既然我們已經談論了XDoclet,現(xiàn)在讓我們來一個真實的示例吧。我們將以一個會話EJB開始。這個EJB是Xbeans框架的一部分,但是在這里,我們并不關心它是做什么的。我們僅僅關心怎樣通過Javadoc標簽把這個bean類標記出來,然后使用XDoclet來生成我們的元文件(meta files).
    ReceiverBean.java將包含方法:documentReady(Document doc).在這個XBean鏈表中,此方法使用一個DOM文檔(document)參數(shù),并且把它傳遞給下一個XBean。
 
類級別標簽的定義
    在類級別中,我們需要定義:
   1。這是一個無狀態(tài)的會話bean.
   2。JNDI的名稱
   3。環(huán)境實體
   4。廠商的特定信息(Weblogic pooling信息)

標簽:@ejb:bean
    在這個標簽中,唯一要設置的XDoclet屬性是bean的名稱。我們還將定義bean的類型,綁定到客戶樁的JNDI名稱以及顯示名稱:
/**
 *   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的環(huán)境實體.我們將定義一個環(huán)境實體,在此實體中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
現(xiàn)在我們將使用Weblogic的參數(shù)來配置特定廠商的池特征。為了表示我們在使用特定廠商,我么使用了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)里配置池的參數(shù)。
當然了,在部署中,還可以使用許多其他類級別(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的數(shù)據(jù)對象。
@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
    用來指定在執(zhí)行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)中創(chuàng)建CMP的字段"X",并且具體實現(xiàn)getX/setX方法。
    對于BMP來說,它將生成保持臟標志(dirty flag)的getX/setX方法(以方便ejbStore在需要的時候調用)
@ejb:pk-field
    標志主鍵字段
@ejb:transaction
    給方法定義事務的行為(只能是以下有效屬性:NotSupported|Supports|Required|RequiresNew|Mandatory|Never.
@ejb:permission
    定義方法的權限(以逗號分隔的角色列表將被允許訪問這個方法)。
使用XDoclet來構建Bean
  現(xiàn)在我們已經有一個使用XDoclet做了標記的ReceiverBean.java的源文件?,F(xiàn)在需要運行XDoclet來為生成所有我們需要的。更好的方法是使用Jakarta-Ant來構建系統(tǒng)。
Ant是一個基于java的普遍使用的構建系統(tǒng)。如果你還沒有使用Ant,那么就到Jakarta官方網站下載一個,或者參考Open Source Java:Ant
  XDoclet的團體已經開發(fā)好了Ant任務(task),所以我們只需要簡單加入到構建文件(build.xml)中就可以使用了.
主要有兩個任務:.既然我們在使用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" />
                
找123強力網站統(tǒng)計系統(tǒng)

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多