亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

XDoclet:EJB開發好幫手

2019-11-18 12:35:29
字體:
來源:轉載
供稿:網友

  使用XDoclet,你能夠在J2EE環境下更加高效地工作,你所看到的Bean以及Bean之間的關系將更加簡單,許多繁雜的事情將遠離你的EJB開發過程。本文討論的是如何使用和擴展XDoclet。在這篇文章中,我們將創建一個使用javadoc標記的會話Bean,然后利用XDoclet處理這個Bean。
  
  
  一、什么是XDoclet
  
  
  XDoclet從Rickard Oberg創建的EJBDoclet工具發展而來,它的設想很簡單:避免為每個EJB提供多個文件,而是從單一Bean類文件中提供組件需要的所有信息。那么,這是如何實現的呢?Java沒有.NET吹噓的“屬性”,但Java有Javadoc標記。我們可以把一個非凡的@標記放入Javadoc注釋,然后讓一個Doclet工具處理這些標記。由工具為指定的Bean生成合適的xml描述器文件和接口文件。XDoclet建立在EJBDoclet思想的基礎上,但適用范圍不再局限于EJB。現在,我們已經可以用XDoclet生成Web服務、Web應用描述器,甚至還可以對它進行擴展,滿足自己的非凡需要。
  
  
  @標記有一個標準的格式,包含一個“名稱空間”以及一個屬于該名稱空間的“標記名稱”。標記的屬性以“名字=值”的形式在標記中指定。下面是一個例子:
  
  
  
  /**
  
  * @namespace:tag name="value" name2="value2" ...
  
  */
  
  
  
  
  
  當前可用的名稱空間包括:
  
  
  
  ejb
  
  標準的EJB信息(非廠商私有的信息)
  
  jboss
  
  面向JBoss應用服務器的信息。
  
  weblogic
  
  面向BEA Weblogic應用服務器的信息。
  
  webSphere
  
  面向IBM WebSphere應用服務器的信息。
  
  orion
  
  面向Orion應用服務器(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有什么樣的功能其實無關緊要。我們關心的是如何在Bean類的基礎上,用Javadoc標記進行適當的標注,然后用XDoclet生成我們需要的各種文件。
  
  
  ReceiverBean.java文件包含了一個documentReady(Document doc)方法,這個方法接收一個DOM文檔并把它傳遞給鏈上面的下一個XBean。
  
  
  2.1 在類這一級上的定義
  
  
  在類這一層次上,我們必須定義:
  
  
  
  聲明Bean的類型,本例是無狀態會話Bean。
  
  JNDI名稱。
  
  環境變量。
  
  面向廠商的信息(例如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的“視圖”??梢允莚emote或local,或者both。
  
  要查看所有標記的完整說明,請訪問XDoclet的文檔。
  
  
  2.1.2 @ejb:env-entry標記
  
  
  這個標記定義了將在JNDI中通過java:comp/env上下文配置的環境變量。下面我們將定義一個環境變量,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)中配置緩沖池參數。
  
  
  還有其他許多類這一級的標記,這些標記使得我們能夠調整任何可以在部署描述器中指定的選項。下面概要地介紹了可能在部署過程中要用到的一些“標準”標記:
  
  
  
  @ejb:bean:唯一必需的標記,配置有關Bean的基本信息。
  
  @ejb:home:提供有關Home接口的信息??梢砸骕Doclet擴展一個定制的接口,或者把接口放入指定的包,等等。
  
  @ejb:interface:類似于home標記,但用來配置與組件接口(遠程的和/或本地的)有關的信息。
  
  @ejb:finder:在實體Bean Home接口上定義查找器方法。
  
  @ejb:select:在實體Bean Home接口上定義select方法。
  
  @ejb:pk:為實體Bean定義主鍵。XDoclet能夠生成主鍵類。
  
  @ejb:data-object:數據對象(也就是值對象)可以通過這個標記自動生成。
  
  @ejb:ejb-ref:配置EJB引用。
  
  @ejb:ejb-external-ref:配置對其他應用中的EJB的引用,這里必需指定Bean的類型等信息。
  
  @ejb:resource-ref:配置資源引用。
  
  @ejb:security-role-ref:配置安全角色引用。
  
  @ejb:transaction:為當前Bean的Home接口和Remote接口中的所有方法定義事務屬性??梢酝ㄟ^為單個方法提供的事務標記覆蓋。
  
  @ejb:permission:答應role-name中指定的角色調用該Bean的Home接口和Remote接口中的所有方法。
  
  @ejb:security-identity:指定是否用調用者的安全標識符執行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) {
  
  
  
  
  
  這個標記經常要用到。一般地,我們依次檢查Bean類里面每一個方法,假如某個方法應該讓客戶程序調用,則在該方法聲明的前面加上這個標記。假如希望客戶程序通過本地接口訪問這個方法,只需把view-type值改成local就可以了。
  
  
  下面是另外幾個常用的EJB方法級的標記:
  
  
  
  @ejb:relation:為EJB 2.0 CMP實體Bean定義一個關系。
  
  @ejb:home-method:把方法定義為ejbHome*方法。
  
  @ejb:pk-field:標示主鍵域。
  
  @ejb:transaction:為當前的方法定義事務行為(指定一個合法的事務屬性:NotSupported,Supports,Required,RequiresNew,Mandatory,或者Never)。 <

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人永久免费| 九九精品在线播放| 992tv在线成人免费观看| 欧美黄色免费网站| 欧美性xxxxxxxxx| 国产精品网站入口| 久久99亚洲热视| 伊人久久久久久久久久| 久久久久久久久久久免费精品| 色婷婷av一区二区三区久久| 欧美在线中文字幕| 欧美性猛交xxxx乱大交| 久久久精品日本| 国产精品久在线观看| 91精品国产综合久久久久久久久| 久久的精品视频| 亚洲中国色老太| 97在线日本国产| 日本在线观看天堂男亚洲| 亚洲一区二区三区xxx视频| 欧美在线观看一区二区三区| 国产精品xxx视频| 丝袜美腿精品国产二区| 久热爱精品视频线路一| 欧美日韩国产影院| 亚洲视频axxx| 色综合久久88色综合天天看泰| 国产亚洲视频在线观看| 欧美激情视频网址| 久久久久久高潮国产精品视| 亚洲一区第一页| 亚洲免费视频网站| 欧美成人在线免费| 久久久精品视频在线观看| 久久久久久久电影一区| 欧美亚洲国产视频小说| 成人性生交大片免费看小说| 日韩av中文在线| 精品自在线视频| 欧美成年人在线观看| 欧美最近摘花xxxx摘花| 亚洲毛片一区二区| 国产69久久精品成人| 国产日韩欧美日韩大片| 久99久在线视频| 日韩精品欧美激情| 欧美大片va欧美在线播放| 成人美女免费网站视频| 久久久精品视频成人| 国产一区二区三区视频在线观看| 欧美在线不卡区| 91深夜福利视频| 亚洲影院色在线观看免费| 日韩中文字幕视频| 欧美二区在线播放| 久久久久久999| 秋霞成人午夜鲁丝一区二区三区| 中文字幕日韩精品在线| 3344国产精品免费看| 色综合天天综合网国产成人网| 欧美一级成年大片在线观看| 亚洲天堂免费视频| 日韩av在线免费播放| 精品精品国产国产自在线| 1769国内精品视频在线播放| 欧美激情一区二区久久久| 精品国偷自产在线视频| 亚洲有声小说3d| 亚洲欧美精品伊人久久| 8x海外华人永久免费日韩内陆视频| 久99九色视频在线观看| 欧美亚洲国产精品| 91精品久久久久久久久久久久久久| 国产精品成人观看视频国产奇米| 亚洲免费视频网站| 狠狠色狠色综合曰曰| 国产在线观看精品一区二区三区| 欧洲精品久久久| 亚洲精品aⅴ中文字幕乱码| 亚洲欧美国产日韩中文字幕| 国产日韩欧美在线看| 亚洲成人精品视频| 精品国产成人在线| 亚洲精品短视频| 国产精品入口福利| 亚洲自拍中文字幕| 精品国产乱码久久久久酒店| 国产精品精品久久久久久| 日韩精品高清在线观看| 亚洲无线码在线一区观看| 青草青草久热精品视频在线观看| 5278欧美一区二区三区| 亚洲精品一区在线观看香蕉| 日韩精品高清在线观看| 亚洲国产日韩欧美综合久久| 亚洲人精选亚洲人成在线| 欧美性猛交99久久久久99按摩| 久久亚洲国产精品成人av秋霞| 久久久亚洲成人| 久久99久久99精品免观看粉嫩| 欧美亚洲激情在线| 最新中文字幕亚洲| 国产精品成人久久久久| 国产不卡精品视男人的天堂| 亚洲欧洲一区二区三区在线观看| 欧美老女人性生活| 中文字幕亚洲一区二区三区五十路| 中文字幕亚洲一区在线观看| 精品久久香蕉国产线看观看亚洲| 97视频在线观看视频免费视频| 亚洲黄页视频免费观看| 成人黄在线观看| 欧美肥老妇视频| 久久亚洲精品中文字幕冲田杏梨| 热re91久久精品国99热蜜臀| 亚洲精品之草原avav久久| 裸体女人亚洲精品一区| 国产aⅴ夜夜欢一区二区三区| 福利一区福利二区微拍刺激| 91av视频在线免费观看| 亚洲日本成人网| 色悠悠久久88| 久久久国产精品亚洲一区| 国产精品在线看| 国产精品狠色婷| 免费不卡欧美自拍视频| 国产精品一区二区久久国产| 欧美国产日韩一区| 色777狠狠综合秋免鲁丝| 欧美有码在线视频| 亚洲精品成人久久久| 色偷偷噜噜噜亚洲男人| 亚洲久久久久久久久久久| 欧美电影免费观看电视剧大全| 精品国偷自产在线视频99| 日韩中文字幕网| 92看片淫黄大片欧美看国产片| 中文.日本.精品| 亚洲激情在线观看视频免费| 全球成人中文在线| 国产精品高潮呻吟久久av黑人| 精品久久久av| 欧美日韩中文字幕在线视频| 国产精品一区二区三区成人| 国产精品999999| 成人精品久久久| 在线观看国产成人av片| 九九热99久久久国产盗摄| 欧美国产日韩一区| 国模精品一区二区三区色天香| 欧美在线视频观看免费网站| 国产精品日韩欧美大师| 97视频网站入口| 色婷婷av一区二区三区久久| 亚洲加勒比久久88色综合| 国产精品欧美激情| 大量国产精品视频| 欧美肥老太性生活视频| 亚洲香蕉成视频在线观看| 久久99精品久久久久久青青91| 国产精品视频男人的天堂| 亚洲午夜国产成人av电影男同| 亚洲自拍小视频| 国产美女高潮久久白浆|