<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>


    posts - 15,  comments - 34,  trackbacks - 27
    二、開(kāi)發(fā)一個(gè) Hello 實(shí)例
     
    關(guān)于Lomboz的圖解,請(qǐng)參考我以前的文章,這里不多說(shuō)了。
     
    1. 新建一個(gè)項(xiàng)目
     
    ●  右擊“包資源管理器”的空白處, 在彈出菜單中選擇“新建” ->“Lomboz J2EE Project”  
    ·項(xiàng)目名:HelloEJB 
    ·EJB Modules:helloEJB
    ·Targeted Server:  JBoss 4.0.0
     
    效果如下:(利用下圖中的小倒三角按鈕將引入的 JBoss 庫(kù)文件過(guò)濾了 )
     
     
    2. xdoclet.xml 的修改: 
     
      打開(kāi) build.xml 和 xdoclet.xml ,仔細(xì)看看里面的內(nèi)容。
     
      如果你看過(guò)關(guān)于 XDoclet 方面的文章,那么應(yīng)該比較明白 Lomboz 開(kāi)發(fā) EJB 的運(yùn)行方式。其實(shí)就是 Ant + XDoclet  ,這里著重談?wù)?xdoclet.xml 文件。

    xdoclet.xml

      1: <?xml version="1.0"?>
      2:
      3: <!-- Copyright (c) 2002,2003,2004 by eteration a.s.
      4:       www.eteration.com
      5:       All rights reserved. -->
      6:
      7:
      8: <project name="xdocletBuild" default="ejbdoclet" basedir=".">
      9:
    10:    <!-- Init -->
    11:    <target name="init">
    12:       <property file="build.properties"/>
    13:
    14:       <property name="ejb.dd.dir" value="../META-INF"/>
    15:       <property name="web.dd.dir" value="../WEB-INF"/>
    16:       <property name="xdoclet.force" value="true"/>
    17:       <property name="container.type" value="ejb-jar"/>
    18:      
    19:      <!-- Set up java.class.path -->
    20:       <path id="project.class.path">
    21:         <pathelement location="${project.dir}/${bin.dir}" />
    22:
    23:
    24:       <fileset dir="${eclipse.home}/plugins">
    25:         <include name="**/ant.jar"/>
    26:         <include name="**/sf.net.xdoclet*/*.jar"/>
    27:         <include name="**/org.apache.log4j*/**/*.jar"/>
    28:         <include name="**/org.apache.commons*/**/*.jar"/>
    29:       </fileset>
    30:
    31:         <!-- append the external classpath lastly -->
    32:         <pathelement path="${java.class.path}" />
    33:        
    34:         <!-- append the path sent through eclipse to classpath -->
    35:         <pathelement path="${project.path}" />
    36:        
    37:      </path>
    38:
    39:
    40:    </target>
    41:
    42:    <!-- Run EJBDoclet -->
    43:    <target name="ejbdoclet" depends="init">
    44:
    45:     <taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask">
    46: <classpath refid="project.class.path"/>
    47: </taskdef>
    48:
    49:
    50:       <ejbdoclet
    51:             destdir="${project.dir}/${ejbsrc.dir}"
    52:             mergedir="${ejb.dd.dir}"
    53:             excludedtags="@version,@author,@todo"
    54:             addedtags="@lomboz generated"
    55:             ejbspec="2.0"
    56:             force="${xdoclet.force}"
    57:             verbose="true" >
    58:
    59: <!-- PLEASE KEEP THE BEAN MARKER COMMENTS IF YOU MODIFY THE FILE.
    60:      CONTENTS BETWEEN THE MARKERS ARE AUTO INSERTED WITH EACH
    61:      BUILD. -->
    62: <!-- BEANS START -->
    63:    <fileset dir="../../src" defaultexcludes="yes">
    64:      <patternset includesfile="ejbs.xml" />
    65:    </fileset>
    66: <!-- BEANS END -->
    67:
    68:          <dataobject/>
    69:          <dao pattern="{0}" destdir="${project.dir}/${ejbsrc.dir}"/>
    70:         
    71:          <valueobject/>
    72:          <utilobject cacheHomes="true" includeGUID="true" kind="physical"/>
    73:         
    74:          <remoteinterface/>
    75:          <localinterface/>
    76:          <homeinterface />
    77:          <localhomeinterface/>
    78:         
    79:          <entitypk/>
    80:          <entitycmp/>
    81:          <entitybmp/>
    82:          <session/>
    83:
    84:          <deploymentdescriptor
    85:             destdir="${ejb.dd.dir}"
    86:             validatexml="false"
    87:             mergedir="${ejb.dd.dir}"
    88:             />
    89:
    90:          <!--
    91:          Have struts form objects generated based on entity beans'
    92:          data objects.  Will require struts.jar to compile. -->
    93:          <strutsform />
    94:
    95:
    96:          <!--
    97:          Have a mapping.xml file generated for castor classes.
    98:          -->
    99:          <castormapping destdir="${ejb.dd.dir}" validatexml="false" />
    100:          <!-- -->
    101:
    102:       <weblogic
    103:          version="6.1"
    104:          xmlencoding="UTF-8"
    105:          destdir="${ejb.dd.dir}"
    106:          validatexml="false"
    107:          datasource="PLEASE_MODIFY_THIS"
    108:          mergedir="${ejb.dd.dir}"
    109:          persistence="weblogic"
    110:       />
    111:   <jboss
    112:             version="3.0"
    113:             unauthenticatedPrincipal="nobody"
    114:             xmlencoding="UTF-8"
    115:             destdir="${ejb.dd.dir}"
    116:             validatexml="false"
    117:         datasource="PLEASE_MODIFY_THIS"
    118:             datasourcemapping="PLEASE_MODIFY_THIS"
    119:             preferredrelationmapping="PLEASE_MODIFY_THIS"
    120:           />
    121:          
    122:           <jrun
    123:                 version="4.0"
    124:                 xmlencoding="UTF-8"
    125:                 destdir="${ejb.dd.dir}"
    126:                 validatexml="false"
    127:                 />
    128:
    129:            <webSphere destdir="${ejb.dd.dir}"/>
    130:             <jonas
    131:                 version="3.2"
    132:                 xmlencoding="UTF-8"
    133:                 destdir="${ejb.dd.dir}"
    134:                 validatexml="false"
    135:             mergedir="${ejb.dd.dir}"
    136:                 />
    137:
    138:             <orion
    139:             destdir="${ejb.dd.dir}"
    140:             />
    141:
    142:             <apachesoap
    143:             destdir="${ejb.dd.dir}"
    144:             />
    145:         
    146:       </ejbdoclet>
    147:    </target>
    148:
    149: </project>
     
    · 采用 links 方式安裝 Lomboz 插件不能運(yùn)行 XDoclet 的原因及補(bǔ)救方法:
    24:       <fileset dir="${eclipse.home}/plugins">
    25:         <include name="**/ant.jar"/>
    26:         <include name="**/sf.net.xdoclet*/*.jar"/>
    27:         <include name="**/org.apache.log4j*/**/*.jar"/>
    28:         <include name="**/org.apache.commons*/**/*.jar"/>
    29:       </fileset>
     
     · 從第24行和26行可以看到,Lomboz 是從“Eclipse安裝目錄\plugins\”的目錄下尋找 “sf.net.xdoclet_1.2.1” 子目錄中的 *.jar 文件來(lái)運(yùn)行 XDoclet的。 由于采用了 links 方式安裝插件,所以會(huì)找不到 “sf.net.xdoclet_1.2.1” 這個(gè)目錄,無(wú)法加載 XDoclet的庫(kù)文件。
     
    ●  修改方法
     
     · 不采用 links 方式安裝 Lomboz 插件;
     · 若采用 links 方式安裝插件,將其 Lomboz 插件目錄下的那三個(gè)目錄(即上面的三個(gè)目錄)復(fù)制到 “Eclipse安裝目錄\plugins\”的目錄下;   
     · 直接修改xdoclet.xml 文件,將“${eclipse.home}/plugins”替換成 links 方式下的插件目錄;如這里,我將它替換成了<fileset dir="D:/eclipse/myplugins/lomboz-3.0.1/eclipse/plugins">     
     · 將1.2.2版本的庫(kù)文件路徑加入到類路徑中。
       注意到?jīng)]有,這個(gè)版本是1.2.1,而當(dāng)前版本是1.2.2;所以最好將自己下載的1.2.2版本的 Xdoclet中的庫(kù)文件替換掉1.2.1版本的庫(kù)文件,不然某些功能可能無(wú)法在 JBoss 4.0.0 配合使用。
     
    ● 其它修改的地方
     
    · 看55行,生成的是2.0版本規(guī)范的EJB,當(dāng)然要改成“2.1”了,人要往高處走啊。
    55:             ejbspec="2.0"
     
    · 從102行到140行,可以看出 Lomboz 可以使用 weblogic 、jboss、webSphere 等服務(wù)器,由于這里我只使用 jboss開(kāi)發(fā)EJB,所以只需要保留 jboss 項(xiàng)就夠了,避免生成太多的服務(wù)器配置文件。
       既然使用 jboss 了,也不是拿來(lái)就用的,修改一下,使它更適合自己。
    (有關(guān)數(shù)據(jù)庫(kù)的配置,下篇文章詳細(xì)說(shuō)明,是為了開(kāi)發(fā)實(shí)體Bean設(shè)置的)
     
     
    修改后的 XDoclet 文件

    xdoclet.xml

    <?xml version="1.0" encoding="GBK"?>
    <!-- 
      Copyright (c) 2002, 2003,2004 Eteration Bilisim A.S.
      Naci Dai and others.
      
      Parts developed under contract ref:FT/R&D/MAPS/AMS/2004-09-09/AL are 
      Copyright France Telecom, 2004.
      
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
      http://www.eclipse.org/legal/epl-v10.html
      
      Contributors:
          Eteration Bilisim A.S. - initial API and implementation
          Naci Dai
      For more information on eteration, please see
      <http://www.eteration.com/>.
     -->
    
    <project name="xdocletBuild" default="ejbdoclet" basedir=".">
       <!-- Init -->
       <target name="init">
          <property file="build.properties"/>
          <property name="ejb.dd.dir" value="../META-INF"/>
          <property name="web.dd.dir" value="../WEB-INF"/>
          <property name="xdoclet.force" value="true"/>
          <property name="container.type" value="ejb-jar"/>
          
          <!-- Set up java.class.path -->
          <path id="project.class.path">
            <pathelement location="${project.dir}/${bin.dir}" />
            <!-- 由于使用links方式安裝Lomboz插件,所以需要修改這個(gè)目錄,使其
                  正確指向Lomboz目錄,還建議使用1.2.2版本的XDoclet 目錄下的庫(kù)
                  文件來(lái)代替 sf.net.xdoclet* 目錄下的庫(kù)文件
             -->
           <fileset dir="D:/eclipse/myplugins/lomboz-3.0.1/eclipse/plugins">
             <include name="**/ant.jar"/>
             <include name="**/sf.net.xdoclet*/*.jar"/>
             <include name="**/org.apache.log4j*/**/*.jar"/>
             <include name="**/org.apache.commons*/**/*.jar"/>
           </fileset>
           
            <!-- append the external classpath lastly -->
            <pathelement path="${java.class.path}" />
            
            <!-- append the path sent through eclipse to classpath -->
            <pathelement path="${project.path}" />
            
         </path>
    
       </target>
       <!-- Run EJBDoclet -->
       <target name="ejbdoclet" depends="init">
        <taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask">
      <classpath refid="project.class.path"/>
     </taskdef>
    
          <ejbdoclet
                destdir="${project.dir}/${ejbsrc.dir}"
                mergedir="${ejb.dd.dir}"
                excludedtags="@version,@author,@todo"
                addedtags="@lomboz generated"
                ejbspec="2.1"
                force="${xdoclet.force}"
                verbose="true" >
    <!-- PLEASE KEEP THE BEAN MARKER COMMENTS IF YOU MODIFY THE FILE. 
         CONTENTS BETWEEN THE MARKERS ARE AUTO INSERTED WITH EACH 
         BUILD. -->
    <!-- BEANS START -->
        <fileset dir="../../src" defaultexcludes="yes">
          <patternset includesfile="ejbs.xml" />
        </fileset>
    <!-- BEANS END -->
             <dataobject/>
             <dao pattern="{0}" destdir="${project.dir}/${ejbsrc.dir}"/>
             
             <valueobject/>
             <utilobject cacheHomes="true" includeGUID="true" kind="physical"/>
             
             <remoteinterface/>
             <localinterface/>
             <homeinterface />
             <localhomeinterface/>
             
             <entitypk/>
             <entitycmp/>
             <entitybmp/>
             <session/>
             <deploymentdescriptor 
                destdir="${ejb.dd.dir}" 
                validatexml="false"
                mergedir="${ejb.dd.dir}" 
                />
             <!--
             Have struts form objects generated based on entity beans'
             data objects.  Will require struts.jar to compile. -->
             <strutsform />
    
             <!--
             Have a mapping.xml file generated for castor classes.
             -->
             <castormapping destdir="${ejb.dd.dir}" validatexml="false" />
             <!-- -->
             
             <jboss
                version="4.0"
                unauthenticatedPrincipal="nobody"
                xmlencoding="GBK"
                destdir="${ejb.dd.dir}"
                validatexml="false"
                datasource="java:/MySqlDS"
                datasourcemapping="mySQL"
                preferredrelationmapping="foreign-key"
              />
              
             
              <apachesoap 
                destdir="${ejb.dd.dir}"
              />
                                  
          </ejbdoclet>
       </target>
    </project>
    

    小技巧:   
     
       以后我都會(huì)用這個(gè)文件來(lái)執(zhí)行 XDoclet, 如果每次新建一個(gè)項(xiàng)目都修改它的話,有些麻煩。這里有一個(gè)方法,找到 Lomboz 插件目錄下的“ com.objectlearn.jdt.j2ee_3.0.1”子目錄,發(fā)現(xiàn)有個(gè)“l(fā)omboz.jar”文件,解壓這個(gè)文件,在解壓后的文件中的“com\objectlearn\jdt\j2ee\templates\ejb” 目錄有個(gè)“xdoclet.xml”,打開(kāi)它看看,是不是和項(xiàng)目中的 xdoclet.xml 一樣。你可以將修改后的 xdoclet.xml 替換掉這里的 xdoclet.xml,那么就不用每次都修改xdoclet.xml 了。
     
       花了這么大的力氣談 xdoclet.xml,因?yàn)樗荓omboz開(kāi)發(fā)EJB的核心,希望不會(huì)太羅嗦。
     
     
    3. 編寫(xiě)程序
     
    ●  繼續(xù)在 HelloEJB 項(xiàng)目中,右擊“src” ->新建 ->Lomboz EJB Creation Wizard :
    · 包(K) :javamxj.ejb.stateless
    · 名稱(M): Hello
    · EJB Type: 選擇 Stateless 
       最后點(diǎn)擊完成。
     
     
     
    ● 在“包資源管理器”窗口中,右擊 HelloBean.java ->Lomboz J2EE... ->Add EJB to Module... :勾選 helloEJB Module。
    提醒
    這時(shí),會(huì)在 xdoclet.xml 中添加以下語(yǔ)句:
    <fileset dir="${project.dir}/src/" defaultexcludes="yes">
      <include name="javamxj/ejb/stateless/HelloBean.java" />
    </fileset>
    同時(shí),在 beans.xml 中會(huì)加入
      <bean>
        <beanClass>javamxj.ejb.stateless.HelloBean</beanClass>
        <type>Session</type>
      </bean>
    這樣,就把 HelloBean.java 加入了 EJBDoclet 的任務(wù)中了。
     
    ● 右擊 HelloBean.java ->Lomboz J2EE... ->Add EJB to Method:
     ·  Method Signature: public String sayHello(String message)
     ·  Method Type:     Business Method
     ·  Interface Type:   Remote Interface
     
    ● 修改 HelloBean.java ,如圖在45-47行添加如下語(yǔ)句,然后保存。
     
    ● 右擊 helloEJB 模塊 ->Lomboz J2EE... ->Generate EJB Classes。
       看到?jīng)]有?在 ejbsrc 文件夾下生成了6個(gè)文件。
     
     
     
    4. jboss-ide 的一些技巧
     
      其實(shí)這里沒(méi)有必要生成 HelloLocal.java HelloLocalHome 這兩個(gè)文件,可以通過(guò)修改ejb.bean標(biāo)記來(lái)除去這兩個(gè)文件。
     
      JBoss-IDE 現(xiàn)在已經(jīng)改名 JBoss Eclipse IDE 了,為了方便,我在下文中還是稱為 JBoss-IDE。
     
      關(guān)于 JBoss-IDE 的詳細(xì)用法,請(qǐng)參考其主頁(yè)上的教程。這里簡(jiǎn)單說(shuō)一些技巧。
     
    · 切換倒主窗口
     
    · 向下拉動(dòng)滾動(dòng)條,選擇“view-type”這個(gè)屬性,然后點(diǎn)擊,如下圖:
       這里選擇點(diǎn)擊“remote”。
       這樣 view-type = "remote" 這個(gè)語(yǔ)句就輸入了,方便吧!主要免去記憶和查找之苦。 
     
     
    · 保存,然后刪除 ejbsrc 這個(gè)文件夾,再次 Generate EJB Classes,這么樣,這時(shí)會(huì)發(fā)現(xiàn)生成的 ejbsrc文件夾下只有4個(gè)文件了吧。
     
    · 本來(lái)沒(méi)有必要?jiǎng)h除那兩個(gè)文件的,插上這么一段主要是為了介紹使用 JBoss-IDE 的方便之處。其實(shí),JBoss-IDE 的好處還很多,自己慢慢體會(huì)吧。

    提醒
       打開(kāi)JBoss-IDE目錄下的子目錄 D:\eclipse\myplugins\jboss-ide-1.40\eclipse\plugins\org.jboss.ide.eclipse.xdoclet.core_1.4.0 (我采用的 links 方式安裝),發(fā)現(xiàn)其中的XDoclet庫(kù)文件是1.2.1版本,最好用1.2.2版本下對(duì)應(yīng)的庫(kù)文件將其替換掉,其它文件不要亂動(dòng)。
       另外,還可以添加其它如 IBM、BEA 的庫(kù)文件到這個(gè)目錄,使 JBoss-IDE 不僅僅支持 JBoss,還可以支持其它服務(wù)器,甚至自己編寫(xiě)庫(kù)文件也可以加入。
       還有,至于“Alt+/”是干什么的,可以查看: Eclipse的主窗口 ->幫助 ->提示與技巧 ->Eclipse Java 開(kāi)發(fā)工具,很不錯(cuò)的。

     

    5. 運(yùn)行服務(wù)器
     
       廢話也說(shuō)的差不多了,再次進(jìn)入正題。
     
    · 先啟動(dòng)服務(wù)器
     如圖,有多種方法可以啟動(dòng)JBoss服務(wù)器。其它操作也是一樣,最好自己多練習(xí),多用右鍵。
     
     
    · 然后右擊 helloEJB,在彈出菜單中選擇部署模塊。如果一切正常,控制臺(tái)會(huì)輸出類似語(yǔ)句:
    21:51:46,203 INFO  [EjbModule] Deploying Hello
    21:51:47,656 INFO  [EJBDeployer] Deployed: file:/F:/java/jboss/server/default/deploy/helloEJB.jar
     
      好了,服務(wù)端已經(jīng)就緒了。
     
     
    6.開(kāi)發(fā)客戶端:
     
    · 右擊 src 文件夾 ->新建 ->Lomboz EJB Test Client  Wizard:
       其中“包”和“名稱”要自己手工輸入,“EJB Home” 和 “EJB Interface” 可以通過(guò)選擇輸入。

     
      
    · 這時(shí)會(huì)生成一個(gè)“HelloClient.java”的文件,打開(kāi)它,如圖添加兩條語(yǔ)句。
     
    · 保存,然后運(yùn)行 HelloClient.java,可以在控制臺(tái)看到輸出結(jié)果:
     
    ·此時(shí),服務(wù)端輸出:
    22:25:45,156 INFO  [STDOUT] 我在EJB的服務(wù)器端,客戶端正在調(diào)用'sayHello'方法。
    22:25:45,156 INFO  [STDOUT] Hello  javamxj(CSDN)
     
     
     
       好了,總算寫(xiě)完了,夠累的。
     
       這只是一個(gè)開(kāi)頭,后面文章主要會(huì)談?wù)勅绾伍_(kāi)發(fā)實(shí)體EJB,到時(shí)候關(guān)于界面及配置的就不多談了,會(huì)把重點(diǎn)放在開(kāi)發(fā)上。
     
       工欲善其事,必先利其器。
       你的工具配備好了嗎?
    posted on 2005-02-16 15:06 jacky 閱讀(442) 評(píng)論(0)  編輯  收藏 所屬分類: Open source
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(10)

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    收藏夾

    java

    搜索

    •  

    最新評(píng)論


    主站蜘蛛池模板: 久久精品国产精品亚洲艾草网美妙| 亚洲色大成网站www尤物| 亚洲欧洲精品在线| 国产精成人品日日拍夜夜免费| 羞羞视频在线免费观看| 成年大片免费视频| 在线综合亚洲中文精品| 无码乱肉视频免费大全合集| 久久精品九九亚洲精品| 久久精品人成免费| 亚洲黄色片在线观看| 91热久久免费精品99| 亚洲综合图片小说区热久久| 一级毛片免费毛片一级毛片免费 | 美美女高清毛片视频黄的一免费| 国产一级淫片a免费播放口之| 亚洲AV无码之国产精品| 免费少妇a级毛片人成网| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲色成人WWW永久在线观看| 成年男女免费视频网站| 亚洲成a∧人片在线观看无码| 国产又大又黑又粗免费视频| 久久亚洲精品无码VA大香大香| 最近中文字幕mv免费高清视频8| 亚洲免费在线视频播放| 永久免费AV无码网站国产 | 久久精品国产亚洲AV天海翼| 午夜国产大片免费观看| j8又粗又长又硬又爽免费视频| 国产亚洲精品成人AA片新蒲金 | 久久久久免费视频| 国产AV无码专区亚洲AV男同| 污视频网站在线观看免费| 久久亚洲国产成人影院网站| 国产一级淫片a免费播放口| 久久精品国产亚洲AV香蕉| 在线观看AV片永久免费| 亚洲婷婷综合色高清在线| 亚洲成人免费在线| 亚洲AV无码成人专区|