使用MyEclipse開發(fā)Java EE應(yīng)用:用XDoclet創(chuàng)建EJB 2 Session Bean項(xiàng)目(四)
MyEclipse限時(shí)秒殺!活動(dòng)火熱開啟中>>
四、運(yùn)行XDoclet代碼生成
通常每次更改XDoclet EJB配置、應(yīng)用程序服務(wù)器設(shè)置或修改任何EJB bean實(shí)現(xiàn)類的XDoclet注釋后,都應(yīng)執(zhí)行XDoclet。
現(xiàn)在是在firstejb項(xiàng)目上執(zhí)行XDoclet并測(cè)試新的XDoclet設(shè)置的好機(jī)會(huì),因?yàn)門rader EJB尚未使用新的XDoclet注釋業(yè)務(wù)方法進(jìn)行擴(kuò)展。
1. 右鍵單擊firstejb,然后選擇MyEclipse>Run XDoclet。
2. 監(jiān)視來(lái)自xdoclet-build腳本的異常輸出消息的控制臺(tái)視圖。
在運(yùn)行XDoclet之后,firstejb項(xiàng)目包括Trader和TraderHome接口的新版本以及ejb-jar.xml和jboss.xmldeployment描述符。
注意:當(dāng)您在第2節(jié)中創(chuàng)建TraderBean.java類時(shí),將Java包名稱指定為com.genuitec.trader.ejb,并強(qiáng)調(diào)包名應(yīng)以.ejb結(jié)尾。這是因?yàn)闃?biāo)準(zhǔn)EJB XDoclet包替換子任務(wù)可以創(chuàng)建以.interfaces結(jié)尾的相應(yīng)Java包名稱,并將生成的EJB和Home接口添加到其中。在這個(gè)例子中,創(chuàng)建了com.genuitec.trader.interfaces包,它包含了Trader EJB和TraderHome接口。
五、創(chuàng)建Session EJB – Part 2
在Part 1中,您看到了創(chuàng)建TraderBean類的過(guò)程。 在本節(jié)中,您將業(yè)務(wù)方法以及XDoclet注釋添加到TraderBean類中,然后使用XDoclet來(lái)更新先前創(chuàng)建的Trader和TraderHome接口。
創(chuàng)建初始的TraderBean.java類時(shí),EJB創(chuàng)建的向?qū)砑恿艘粋€(gè)示例業(yè)務(wù)方法,您可以將其用作添加自己業(yè)務(wù)方法的模式。注意這個(gè)方法包括javadoc tag @ejb.interface-method, 此自定義ejbdoclet標(biāo)記將該方法標(biāo)識(shí)為EJB接口方法實(shí)現(xiàn)的。當(dāng)XDoclet在此類上運(yùn)行時(shí),Trader.java EJB接口類被修改為包含所有@ejb.interface-method注釋的方法。
TraderBean示例方法
/** * An example business method * * @ejb.interface-method view-type = "remote" * * @throws EJBException Thrown if method fails due to system-level error. */ public void replaceWithRealBusinessMethod() throws EJBException { // rename and start putting your business logic here< BR > } *
1. 雙擊TraderBean.java在編輯器中打開。
2. 在最后一個(gè)括號(hào)前添加以下兩種業(yè)務(wù)方法,然后按CTRL + S進(jìn)行保存。
/** * Buys shares of a stock for a named customer. * * @param customerName String Customer name * @param stockSymbol String Stock symbol * @param shares int Number of shares to buy * @return Number of shares purchased * * @ejb.interface-method */ public int buy(String stockSymbol, int shares) { System.out.println("Buying "+shares+" shares of "+stockSymbol + ". Good move."); return shares; } /** * Sells shares of a stock for a named customer. * * @param customerName String Customer name * @param stockSymbol String Stock symbol * @param shares int Number of shares to buy * @return The number for shares sold * * @ejb.interface-method */ public int sell(String stockSymbol, int shares) { System.out.println("Selling "+shares+" shares of "+stockSymbol); return shares; }
3. 在firstejb項(xiàng)目上運(yùn)行XDoclet來(lái)同步Trader和TraderHome類和部署描述符。
4. 在com.genuitec.trader.interfaces包中雙擊Trader.java。 注意添加buy()和sell()業(yè)務(wù)方法。
/* * Generated by XDoclet - Do not edit! */ package com.genuitec.trader.interfaces; /** * Remote interface for Trader. * @author XDoclet */ public interface Trader extends javax.ejb.EJBObject { /** * Buys shares of a stock for a named customer. * @param customerName String Customer name * @param stockSymbol String Stock symbol * @param shares int Number of shares to buy * @return Number of shares purchased */ public int buy( java.lang.String stockSymbol,int shares ) throws java.rmi.RemoteException; /** * Sells shares of a stock for a named customer. * @param customerName String Customer name * @param stockSymbol String Stock symbol * @param shares int Number of shares to buy * @return The number for shares sold */ public int sell( java.lang.String stockSymbol,int shares ) throws java.rmi.RemoteException; }