国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

XDoclet:EJB開發(fā)好幫手

2019-11-18 12:35:29
字體:
供稿:網(wǎng)友

  使用XDoclet,你能夠在J2EE環(huán)境下更加高效地工作,你所看到的Bean以及Bean之間的關(guān)系將更加簡單,許多繁雜的事情將遠離你的EJB開發(fā)過程。本文討論的是如何使用和擴展XDoclet。在這篇文章中,我們將創(chuàng)建一個使用javadoc標記的會話Bean,然后利用XDoclet處理這個Bean。
  
  
  一、什么是XDoclet
  
  
  XDoclet從Rickard Oberg創(chuàng)建的EJBDoclet工具發(fā)展而來,它的設(shè)想很簡單:避免為每個EJB提供多個文件,而是從單一Bean類文件中提供組件需要的所有信息。那么,這是如何實現(xiàn)的呢?Java沒有.NET吹噓的“屬性”,但Java有Javadoc標記。我們可以把一個非凡的@標記放入Javadoc注釋,然后讓一個Doclet工具處理這些標記。由工具為指定的Bean生成合適的xml描述器文件和接口文件。XDoclet建立在EJBDoclet思想的基礎(chǔ)上,但適用范圍不再局限于EJB。現(xiàn)在,我們已經(jīng)可以用XDoclet生成Web服務(wù)、Web應用描述器,甚至還可以對它進行擴展,滿足自己的非凡需要。
  
  
  @標記有一個標準的格式,包含一個“名稱空間”以及一個屬于該名稱空間的“標記名稱”。標記的屬性以“名字=值”的形式在標記中指定。下面是一個例子:
  
  
  
  /**
  
  * @namespace:tag name="value" name2="value2" ...
  
  */
  
  
  
  
  
  當前可用的名稱空間包括:
  
  
  
  ejb
  
  標準的EJB信息(非廠商私有的信息)
  
  jboss
  
  面向JBoss應用服務(wù)器的信息。
  
  weblogic
  
  面向BEA Weblogic應用服務(wù)器的信息。
  
  webSphere
  
  面向IBM WebSphere應用服務(wù)器的信息。
  
  orion
  
  面向Orion應用服務(wù)器(Oracle)的信息。
  
  castor
  
  為Castor框架生成映射信息。
  
  mvcsoft
  
  為MVCSoft EJB 2.0持久化治理器生成文件。
  
  soap
  
  生成SOAP描述器。
  
  struts
  
  生成struts-config.xml。
  
  web
  
  為Web應用生成web.xml配置文件。
  
  jsp
  
  生成標記庫擴展描述器信息。
  
  從上面的清單可以看出,除了EJB之外,XDoclet還提供了許多其它方面的支持(因此它的名字也從EJBDoclet變成了XDcolet)。
  
  二、用Javadoc標記標注會話Bean
  
  
  前面我們討論了XDoclet工具的基本情況,下面來看一個實例。我們從一個會話EJB開始。這個EJB是XBeans框架的一部分,但對于本文來說,Bean有什么樣的功能其實無關(guān)緊要。我們關(guān)心的是如何在Bean類的基礎(chǔ)上,用Javadoc標記進行適當?shù)臉俗ⅲ缓笥肵Doclet生成我們需要的各種文件。
  
  
  ReceiverBean.java文件包含了一個documentReady(Document doc)方法,這個方法接收一個DOM文檔并把它傳遞給鏈上面的下一個XBean。
  
  
  2.1 在類這一級上的定義
  
  
  在類這一層次上,我們必須定義:
  
  
  
  聲明Bean的類型,本例是無狀態(tài)會話Bean。
  
  JNDI名稱。
  
  環(huán)境變量。
  
  面向廠商的信息(例如WebLogic 緩沖池信息)。
  
  2.1.1 @ejb:bean標記
  
  
  該標記唯一必需的屬性是把Bean的名字告訴XDoclet。此外,我們還將定義Bean的類型、JNDI名稱和顯示的名稱(display-name):
  
  
  
  /**
  
  * This is the EJB Receiver Xbean
  
  *
  
  * @ejb:bean type="Stateless"
  
  * name="ejbReceiver"
  
  * jndi-name="org.xbeans.ejb.receiver.Receiver"
  
  * display-name="EJB Receiver Xbean"
  
  *
  
  * ... 其他javadoc標記 ...
  
  */
  
  public class ReceiverBean implements sessionBean, DOMSource {
  
  
  
  
  
  ejb:Bean標記最常用的屬性是:
  
  
  
  name
  
  EJB的名字(用于描述器)。
  
  type
  
  定義Bean的類型。對于會話Bean,Bean的類型是Stateful或者Stateless;對于實體Bean,它是CMP或BMP。
  
  jndi-name
  
  提供Bean的JNDI名字,它將被用于廠商私有的部署描述器(用于遠程接口)。
  
  local-jndi-name
  
  與jndi-name相同,但用于本地接口。
  
  view-type
  
  表示應當支持哪一種Bean的“視圖”。可以是remote或local,或者both。
  
  要查看所有標記的完整說明,請訪問XDoclet的文檔。
  
  
  2.1.2 @ejb:env-entry標記
  
  
  這個標記定義了將在JNDI中通過java:comp/env上下文配置的環(huán)境變量。下面我們將定義一個環(huán)境變量,Bean用它來查找鏈上面的下一個XBean:
  
  
  
  /**
  
  * This is the EJB Receiver Xbean
  
  *
  
  * ... 其他javadoc標記 ...
  
  *
  
  * @ejb:env-entry name="channelBean" type="java.lang.String"
  
  * value="com.your.ChannelBean"
  
  *
  
  * ... 其他javadoc標記 ...
  
  */
  
  public class ReceiverBean implements SessionBean, DOMSource {
  2.1.3 @weblogic:pool標記
  
  
  下面我們將配置面向特定廠商的緩沖池特征,為便于討論,我們將使用WebLogic。為表示聲明僅對特定廠商有效,我們先聲明weblogic名稱空間:
  
  
  
  /**
  
  * This is the EJB Receiver Xbean
  
  *
  
  * ... 其他javadoc標記 ...
  
  *
  
  * @weblogic:pool max-beans-in-free-pool="1000"
  
  * initial-beans-in-free-pool="10"
  
  *
  
  * ... 其他javadoc標記 ...
  
  */
  
  public class ReceiverBean implements SessionBean, DOMSource {
  
  
  
  
  
  這個標記將在面向WebLogic的部署描述器(weblogic-ejb-jar.xml)中配置緩沖池參數(shù)。
  
  
  還有其他許多類這一級的標記,這些標記使得我們能夠調(diào)整任何可以在部署描述器中指定的選項。下面概要地介紹了可能在部署過程中要用到的一些“標準”標記:
  
  
  
  @ejb:bean:唯一必需的標記,配置有關(guān)Bean的基本信息。
  
  @ejb:home:提供有關(guān)Home接口的信息。可以要求XDoclet擴展一個定制的接口,或者把接口放入指定的包,等等。
  
  @ejb:interface:類似于home標記,但用來配置與組件接口(遠程的和/或本地的)有關(guān)的信息。
  
  @ejb:finder:在實體Bean Home接口上定義查找器方法。
  
  @ejb:select:在實體Bean Home接口上定義select方法。
  
  @ejb:pk:為實體Bean定義主鍵。XDoclet能夠生成主鍵類。
  
  @ejb:data-object:數(shù)據(jù)對象(也就是值對象)可以通過這個標記自動生成。
  
  @ejb:ejb-ref:配置EJB引用。
  
  @ejb:ejb-external-ref:配置對其他應用中的EJB的引用,這里必需指定Bean的類型等信息。
  
  @ejb:resource-ref:配置資源引用。
  
  @ejb:security-role-ref:配置安全角色引用。
  
  @ejb:transaction:為當前Bean的Home接口和Remote接口中的所有方法定義事務(wù)屬性。可以通過為單個方法提供的事務(wù)標記覆蓋。
  
  @ejb:permission:答應role-name中指定的角色調(diào)用該Bean的Home接口和Remote接口中的所有方法。
  
  @ejb:security-identity:指定是否用調(diào)用者的安全標識符執(zhí)行EJB的方法,還是用另外一個特定的安全標識符。
  
  2.2 在方法這一級上的定義
  
  
  下面我們來看看方法級的標記。要讓某個方法成為遠程接口的一部分,我們只需通過一個方法級的標記告訴XDoclet:
  
  
  
  /**
  
  * The method that the sender uses to pass the Document
  
  *
  
  * @ejb:interface-method view-type="remote"
  
  */
  
  public void documentReady(Document incomingDocument) {
  
  
  
  
  
  這個標記經(jīng)常要用到。一般地,我們依次檢查Bean類里面每一個方法,假如某個方法應該讓客戶程序調(diào)用,則在該方法聲明的前面加上這個標記。假如希望客戶程序通過本地接口訪問這個方法,只需把view-type值改成local就可以了。
  
  
  下面是另外幾個常用的EJB方法級的標記:
  
  
  
  @ejb:relation:為EJB 2.0 CMP實體Bean定義一個關(guān)系。
  
  @ejb:home-method:把方法定義為ejbHome*方法。
  
  @ejb:pk-field:標示主鍵域。
  
  @ejb:transaction:為當前的方法定義事務(wù)行為(指定一個合法的事務(wù)屬性:NotSupported,Supports,Required,RequiresNew,Mandatory,或者Never)。 <

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉兴市| 新野县| 合阳县| 拉萨市| 应城市| 成安县| 金平| 水城县| 启东市| 出国| 宝丰县| 衡阳县| 尉氏县| 翼城县| 平山县| 克拉玛依市| 靖江市| 萍乡市| 乌什县| 县级市| 肥东县| 巴塘县| 永清县| 察雅县| 教育| 新余市| 施甸县| 丹棱县| 达日县| 高雄县| 曲阳县| 多伦县| 泽州县| 个旧市| 马边| 桐庐县| 沽源县| 卓资县| 米易县| 米易县| 罗田县|