版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
一、關(guān)于本JBchilaor9TheJ2EETutorialSecondEditionProfessionalEJBCoreJ2EEPatterns:BestPracticesandDesignStrategies,SecondEditionJ2EEApplicationsandBEAWebLogicServersUML2Toolkit、SQLServer2000BibleJDBCDatabaseProgrammingwithJ2EEJavaToolsforExtremeProgramming:MasteringOpenSourceToolsIncludingAnt,Junit,andCACTUS試與JUnit實踐》12本系統(tǒng)。這12本系統(tǒng)全面講述了Java語言的各種技術(shù)。上述都是關(guān)于Java語言的一系列,可以作為本文檔的參考書。用。本文檔程序?qū)嵗闹v述步驟是先講述服務(wù)EJB的創(chuàng)建與測試,接著講述客戶端的數(shù)據(jù)類的創(chuàng)建,再講述主窗二、本文檔第2章:企業(yè)進、銷、存管理信息系統(tǒng)的建模分析。第4章:企業(yè)進、銷、存管理信息系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)分析。的第5章:企業(yè)進、銷、存管理信息系統(tǒng)的項目創(chuàng)建與設(shè)置。應(yīng)用程序的創(chuàng)建、Cactus測試環(huán)境的設(shè)置、EAR應(yīng)用程序創(chuàng)建和部署,使讀者能掌握企業(yè)進、銷、存管理信息系統(tǒng)序、會計科目管理窗口程序、報表管理窗口程序、用戶日志查看窗口程序、退出系統(tǒng)程序和基礎(chǔ)信息模塊6個互聯(lián)一(一)進、銷、存管理信息系統(tǒng)簡 (一)進、銷、存管理信息系統(tǒng)本系統(tǒng)可以在Windows2000、WindowsNT、WindowsXP、Linux和Unix平臺應(yīng)用STOCKMIS的英文全稱是StockManagementInformationSystem,中文全稱是進、銷、存管理信息系統(tǒng)。(二)進、銷、存管理信息系統(tǒng)整體 登錄用戶可以切換用戶,。一(三)小 本軟件符合IBM的CUA標(biāo)準(zhǔn)和的GUI標(biāo)準(zhǔn)本系統(tǒng)應(yīng)用JDK1.4.0、J2EE1.3.1技術(shù)標(biāo)準(zhǔn)通口。本系統(tǒng)的通口由WebLogic提供(三)(四)問(一)用例圖分節(jié)(二)基礎(chǔ)信息模塊活動圖分 修改活動 (三)進貨模塊活動圖分析為每張進貨單,根據(jù)企業(yè)的實際情況批準(zhǔn)進貨單,訂購員完成電子簽名后2張進貨單,一聯(lián)送交供應(yīng)商,一 現(xiàn)金賬。進貨退貨分為3個程序,分別是訂購員填寫退貨單程序、現(xiàn)金管理員收取已經(jīng)付出金額程序、驗收員將貨物退進貨會計處理分為3個程序?qū)崿F(xiàn),分別是審核進貨會計分錄程序、編寫進貨會計分錄程序和查詢進貨會計分錄(四)庫存模塊活動圖分析庫存盤4個程序完成,分別是庫存盤點計數(shù)程序、庫存盤點核查程序、盤點損失單管理程序、盤點盈收單庫存會計處理分為3個程序?qū)崿F(xiàn),分別是審核庫存會計分錄程序、編寫庫存會計分錄程序和查詢庫存會計分錄(五)銷售模塊活動圖分析生成會計分錄的商品銷售單,當(dāng)用戶退出窗口時,系統(tǒng)自動生成會計分錄和將現(xiàn)金收入記錄在現(xiàn)金賬。銷售會計處理分為3個程序?qū)崿F(xiàn),分別是審核銷售會計分錄程序、編寫銷售會計分錄程序和查詢銷售會計分錄程序。3個活動圖與進貨會計處理相同,請參考2.3.7節(jié)。(六)系統(tǒng)部署圖二(七)小 (七)(八)問三(一)文件總結(jié)構(gòu) 析析 (一)文件總結(jié) (二)源代碼的文件結(jié)構(gòu)圖(1)maininterface是主窗口程序的 (2)baseinforinterface是基礎(chǔ)信息模塊程序的 (3)stockinterface是進貨模塊程序的 (4)stockmanageinterface是庫存模塊程序的 stockmanagementpro是EJB源代碼 user是用戶類 print是打印程序的 (11)cactustest是EJB測試類的 (12)junittest是客戶端測試類的 (13)servlet是Servlet程序的 (三)互聯(lián)網(wǎng)程序的文件結(jié)構(gòu) 文件是互聯(lián)網(wǎng)程序在(四)三(五)問與 (五)問程序的備份文件如何放人 答:當(dāng)用戶修改程序時,JBuilder自動將程序的備份文件放入 析析如何在WebLogic服務(wù)器創(chuàng)建數(shù)據(jù)庫聯(lián)接緩沖池如何創(chuàng)建JNDI數(shù)據(jù)源(一)數(shù)據(jù)字典為數(shù)據(jù)類大唯主外備1**2用戶3基礎(chǔ)信息模塊的用戶權(quán)456索排升數(shù)據(jù)類大允許空唯主外備1**序23商品類別名4商品類別描索排升數(shù)據(jù)類大唯主外備1**2商品分類標(biāo)345678規(guī)9庫存上限最大庫存下限最小索排升大唯主外備1**2地34簡5678傳9固地銀備索排大唯主外備1**23位4描索排升大唯主自動增外備1**2地34簡567數(shù)據(jù)類大唯主外備8傳9固地銀電子郵客戶信用限備索排升大唯主外備1**序23會計科目名索排升數(shù)據(jù)類大允許空唯主外備1**序2操作程序名3操作內(nèi)4用戶名5操作時索排升值加備1**2單據(jù)類型,0表示進貨訂單,1表示進貨退貨單,2表示商品調(diào)出單,3表示商品調(diào)入單,4表示銷售出庫單,5表示銷售退貨單,6表示盤點損失單,7表示盤點盈收單,8上期轉(zhuǎn)入單,9表示數(shù)量分拆調(diào)出單,10表示數(shù)量分拆調(diào)入單,11表示數(shù)量組合調(diào)出單,12表示數(shù)量組合調(diào)入單,133供應(yīng)商調(diào)拔單的關(guān)聯(lián)標(biāo)4請購員名字商品調(diào)出用戶5訂購員名字調(diào)入倉庫名值加備6驗收員名字商品驗收用戶7現(xiàn)金管理員名8收貨地9倉庫名*訂單日期調(diào)出日*到貨日期驗收日完成狀態(tài),0表示進行,1表示撤消,2表示完備索引名排序升序大小默值值唯—主加外鍵備1**23碼45數(shù)6索引名名排序升數(shù)據(jù)類值空增備1**2單據(jù)類型,0表示前臺銷貨單據(jù),1表示信用銷單據(jù),2表示前臺銷售退貨單據(jù),3表示信用銷售3客45信用銷售用戶名6現(xiàn)金管理員名789*默空增備完成狀態(tài),0表示進行,1表示撤消,2表示完備索引排序升序數(shù)據(jù)類大允許空唯主外備1**明細編2單據(jù)編34實際售5數(shù)索排升型大小默值允空唯—主鍵自增外鍵備1**2相關(guān)聯(lián)的票據(jù)標(biāo)3票據(jù)類型,0表示應(yīng)付票據(jù),124金5供應(yīng)商名字或者客戶名6開票據(jù)的用戶7現(xiàn)金管理員名89*收款或者付款日完成狀態(tài),0表示進行,1表示撤消,2表完備索引排序升序大允許空唯主外備1**序2相關(guān)聯(lián)的票據(jù)標(biāo)3借貸標(biāo)識,0表示借,1表示4數(shù)據(jù)類大唯主自動增外備56索排升型大小默值值唯—主鍵加外鍵備1**序2相關(guān)聯(lián)的票據(jù)標(biāo)3記帳用4審核用5記帳日6*審核日7完成狀態(tài),0表示進行,1表示撤消,2完8備索引排序升序型大小默值值唯—主鍵加外鍵備1**序2與accountEntryLedger數(shù)據(jù)表的聯(lián)系段3借貨標(biāo)識,0表示借,1表示4會計科5發(fā)生金索引排序升序(二)數(shù)據(jù)表的關(guān)系分四(三)數(shù)據(jù)表的SQL創(chuàng)建語 表的關(guān)系是一對一關(guān)系,相關(guān)聯(lián)的字段是stockLedger數(shù)據(jù)表的orderld字段、saleLedger數(shù)據(jù)表的saleld字段、currentAccountLedger數(shù)據(jù)表的linkld字段?,F(xiàn)金賬套數(shù)據(jù)表(cashLedger)與往來賬套數(shù)據(jù)表(currentAccountLedger)是一對一關(guān)系,相關(guān)聯(lián)的字段currentAccountLedSer數(shù)據(jù)表的currentAccountld字段和cashLedger數(shù)據(jù)表的linkld字段會計分錄賬套數(shù)據(jù)表(accountEntryLedger)(accountEntrySubLedger)是一對多關(guān)系,相關(guān)聯(lián)的字段是accountEntryLedger數(shù)據(jù)表的serialld字段和accountEntrySubLedger數(shù)據(jù)表的linkSerialld字段。賬套數(shù)據(jù)表(currentAccountLedger)是一對一關(guān)系,相關(guān)聯(lián)的字段是accountEntryLedger數(shù)據(jù)表的linkld字段、stockLedger數(shù)據(jù)表的orderld字段、saleLedger數(shù)據(jù)表的saleld字段、currentAccountLedger數(shù)據(jù)表的currentAccountld其他的數(shù)據(jù)表對應(yīng)關(guān)系不經(jīng)常使用,將在模塊編碼中講述,如商品數(shù)據(jù)表 與庫存賬套明細數(shù)據(jù)(三)數(shù)據(jù)表的SQL創(chuàng)建語本節(jié)介紹數(shù)據(jù)表的SQL創(chuàng)建語句CREATETABLECREATETABLEuserTableuserPasswordnvarchar(50)NOTNULL,baseInforFunctionintNOTNULL,stockFunctionintNOTNULL,stockManageFunctionintNOTNULL,saleFunctionintNOTNULL)CREATECREATETABLE(categoryIdintNOTNULLPRIMARYKEY,parentIdintNOTNULL,categoryNamenvarchar(100)NOTNULL,categoryDescriptionntextNOTNULL)CREATETABLEgoodsCREATETABLEgoodscategoryIdintNOTNULL,goodsNamenvarchar(100)NOTNULL,goodsNickNamenvarchar(50)NOTNULL,goodsAssistantNamenvarchar(10)NOTNULL,goodsPYNamenvarchar(10)NOTNULL,unitnvarchar(10)NOTNULL,specificationnvarchar(50)NOTNULL,producernvarchar(50)NOTNULL,upperLimitintNOTNULL,lowerLimitintNOTNULL,discountnumeric(18,2)NOTNULL))CREATE rrZonenvarchar(20)NOTNULL,pyCodenvarchar(10)NOTNULL,abbreviationnvarchar(20)NOTNULL,companyPhonenvarchar(15)NOTNULL,linkmannvarchar(20)NOTNULL,mobilePhonenvarchar(15)NOTNULL,faxnvarchar(15)NOTNULL,fixedPhonenvarchar(15)NOTNULL,addressnvarchar(100)NOTNULL,zipCodenvarchar(10)NOTNULL,bankNamenvarchar(50)NOTNULL,bankAccountnvarchar(50)NOTNULL,nvarchar(20)NOTNULL,homesitenvarchar(20)NOTNULL,remarkntextNOTNULL)pyCodenvarchar(10)NOTNULL,locationnvarchar(100)NOTNULL,descriptionntextNOTNULL)CREATETABLEcustomercustomerZonenvarchar(20)NOTNULL,pyCodenvarchar(10)NOTNULL,abbreviationnvarchar(20)NOTNULL,companyPhonenvarchar(15)NOTNULL,linkmannvarchar(20)NOTNULL,mobilePhonenvarchar(15)NOTNULL,faxnvarchar(15)NOTNULL,fixedPhonenvarchar(15)NOTNULL,addressnvarchar(100)NOTNULL,zipCodenvarchar(10)NOTNULL,bankNamenvarchar(50)NOTNULL,bankAccountnvarchar(50)NOTNULL,nvarchar(20)NOTNULL,homesitenvarchar(20)NOTNULL,creditlimitnumeric(18,2)NOTNULL,remarkntextNOTNULL)CREATETABLECREATETABLE(accountIdintNOTNULLPRIMARYKEY,parentIdintNOTNULL,)CREATECREATETABLEuserLogidintNOTNULLPRIMARYprogramNamenvarchar(50)NOTNULL,userNamenvarchar(50)NOTNULL,operationDatedatetimeNOT))CREATETABLECREATETABLEstockLedgerorderTypeintNOTNULL,rNamenvarchar(50)NOTNULL,submitUsernvarchar(50)NOTNULL,commitUsernvarchar(50)NOTNULL,checkUsernvarchar(50)NOTNULL,cashUsernvarchar(50)NOTNULL,addressnvarchar(100)NOTNULL,warehousenvarchar(20)NOTNULL,orderDatedatetimeNULL,stockDatedatetimeNULL,onProcessintNOTNULL,remarkntextNOT)CREATECREATETABLE(serialIdintNOTNULLPRIMARYKEY,orderIdnvarchar(20)NOTNULL,costPricenumeric(18,2)NOTNULL,tyintNOTNULL,)CREATETABLECREATETABLEsaleLedgersaleIdnvarchar(20)NOTNULLPRIMARYKEY,saleTypeintNOTNULL,customerNamenvarchar(50)NOTNULL,counterUsernvarchar(50)NOTNULL,creditUsernvarchar(50)NOTNULL,cashUsernvarchar(50)NOTNULL,addressnvarchar(100)NOTNULL,fillerDatedatetimeNOTNULL,deliveryDatedatetimeNULL,remarkntextNOT)用戶可以應(yīng)用程序創(chuàng)建新的賬套數(shù)據(jù)表(請參考6.7節(jié)),賬套數(shù)據(jù)表共有8個,分別是stockLedger、stockSubLedgerSaleLedgerSaleSubLedgercurrentAccountLedgercashLedgeraccountEntryLedger、(四)數(shù)據(jù)表的創(chuàng)建和數(shù)據(jù)導(dǎo)如果不熟悉SQLServer的數(shù)據(jù)庫的創(chuàng)建,請參考《SQLServer2000Bible先選擇stockmanagement數(shù)據(jù)庫,選擇Tools菜單→SQLQueryyzer選項打開SQL代碼窗口,將CompositiveExample\stockmanagement.sql文件(應(yīng)用記事本程序打開,該文件在本設(shè)計附帶的程序包)的代碼放人SQL代碼窗口,如圖所示。確認的數(shù)據(jù)庫是stockmanagement,單擊上的“運行”按鈕,為stockmanagement數(shù)據(jù)庫創(chuàng)建個數(shù)據(jù)表(其中有兩個賬套,分別是200404賬套和200405賬套)。本節(jié)應(yīng)用stoekmanagement.mdb文件 是CompositiveExample,共有32個數(shù)據(jù)表數(shù)據(jù)打開SQLServer管理窗口,選擇Tools菜單→DataTransformationServices→ImportData選項,進人數(shù)據(jù)導(dǎo)人本例選擇Accessstockmanagement.mdb文件作為導(dǎo)人數(shù)據(jù)庫本例選擇stockmanagement作為目標(biāo)數(shù)據(jù)庫 保留默認的選項便可,表示立即數(shù)據(jù)庫。單擊“完成”按鈕,便可以將stockmanagement.mdb的數(shù)據(jù)導(dǎo)人SQLServerstockmanagement數(shù)據(jù)庫,如(五)數(shù)據(jù)庫聯(lián)接緩沖池的創(chuàng)啟動WebLogic服務(wù)器,進入WebLogic在左邊的結(jié)構(gòu)樹選擇examples→Services→JDBC→ConnectionPoolsConfigureanewJDBCConnectionPool…(設(shè)置一個新的JDBC聯(lián)接緩沖池),如圖所示。四(六)JNDI數(shù)據(jù)源的創(chuàng) 上述4個步驟完成了stockmanagement數(shù)據(jù)庫的聯(lián)接緩沖(六)JNDI數(shù)據(jù)源的在WebLogic管理窗口內(nèi)的左邊結(jié)構(gòu)樹選擇examples→Services→JDBC→TxDataSources,在右邊的內(nèi)容框選擇ConfigureanewJDBCTxDataSource…(設(shè)置一個新的帶事務(wù)處理的數(shù)據(jù)源),如圖所示。(七)SQL代碼,剖析了數(shù)據(jù)表創(chuàng)建、數(shù)據(jù)導(dǎo)入、數(shù)據(jù)庫聯(lián)接緩JNDI數(shù)據(jù)源的創(chuàng)建。通過本章的考查,指導(dǎo)老(八)問答:數(shù)據(jù)表關(guān)系不用在數(shù)據(jù)庫內(nèi)創(chuàng)建,通過SQL語句where語句實現(xiàn)便可答:創(chuàng)建數(shù)據(jù)庫的聯(lián)接緩沖池的作用是提高數(shù)據(jù)庫的速度,要了解J2EE方面的知識,請參考《TheJ2EETutorialSecondEdition》一書。五(一)JBuilder項目創(chuàng) (1如何創(chuàng)建進、銷、存管理信息系統(tǒng)的JBuilder項目?(2)如何創(chuàng)建進、銷、存管理信息系統(tǒng)的EJB模板?如何設(shè)置進、銷、存管理信息系統(tǒng)的EJB模板的數(shù)據(jù)源?(5)如何設(shè)置進、銷、存管理信息系統(tǒng)的Cactus測試環(huán)境(6)如何創(chuàng)建和部署EJB和互聯(lián)網(wǎng)模板的應(yīng)用程序(一)JBuilder項目 要進一步了解JBuilder的項目設(shè)置,請參考《精通JBuilder9上述3個步驟完成了StockManagementPro項目的創(chuàng)建(二)EJB模板的EJB的模板創(chuàng)建的步驟如下(Weblogic服務(wù)器,請參考《J2EEApplicationsandBEAWebLogic打開JBuilder窗口,選擇Tools菜單→選擇ConfigureServer選項,進入服務(wù)器的設(shè)置窗口在左邊的結(jié)構(gòu)樹選擇WebLogicApplicationServer7.x選項,勾選EnableServer復(fù)選框,單擊General選項卡,在Homedirectory(主 )內(nèi)選擇WebLogic服務(wù)器的安裝 ,其他的選項由JBuilder自動生成。①Homedirectory定義WebLogic服務(wù)器所在的路徑單擊Custom選項卡,進入WebLogic服務(wù)器在JBuilder①BEAhomedirectory定義BEA程序的安 ,該參數(shù)由JBuilder自動生成②JDKInstallationdirectory定義JDK1.4的安裝路徑⑦Listenaddress定義WebLogic服務(wù)器所在的服務(wù)器名字⑧Listenport定義WebLogic服務(wù)器所在的動選擇Project菜單→ProjectProperties選項,打開項目屬性框,單擊Server選項卡,為項目選擇WebLogic選擇File菜單→New選項,單擊Enterprise選項卡,雙擊EJBModule圖標(biāo)④OutputJARfile區(qū)域中的Name定義JAR文件的名字,保留默認值⑤OutputJARfile區(qū)域中的PathJAR文件的保存路徑,保留默認值。單擊“OK”完成EJB模板的創(chuàng)建。選擇StockManagementEJBProperties選項,打開EJB模板設(shè)置框。取消AlwayscreateJARwhenbuildingtheproject復(fù)選項的選擇,取消該復(fù)選項的作用是避免每次編譯項目(Ctrl+F9)時都自動編譯EJB模板,節(jié)省項目編譯時間,但更新EJB后,需要選擇項目面板的StockManagementEJB選項,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇Rebuild選項重新編譯EJB。(三)EJB模板數(shù)據(jù)源的設(shè)打開EJB模板,在左邊的結(jié)構(gòu)面板內(nèi)選擇DataSources節(jié)點,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選 的程序包,要進一步了解Java聯(lián)接數(shù)據(jù)庫方面的知識,請參考《JDBCDatabaseProgrammingwithJ2EE③URL(數(shù)據(jù)庫的聯(lián)接地址)的設(shè)置是“jdbc :sqlserver://localhost:1433的,如果不設(shè)置sa用戶的,保留空值便可。⑥JNDIname的值是“stockManagement”,該WebLogicstockmanagementJNDI數(shù)據(jù)源,請參考4.6節(jié)。局EJB使用,當(dāng)全局EJB在服務(wù)器部署時,該數(shù)據(jù)源不起作用,起作用的是stockManagement數(shù)據(jù)源。如果不能看到上述數(shù)據(jù)表,選擇stockManagement節(jié)點,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇RefreshfromDatabase選項,檢查數(shù)據(jù)庫設(shè)置是否正確,再重新載人數(shù)據(jù)表。選擇結(jié)構(gòu)面板的stockManagement節(jié)點→userTable數(shù)據(jù)表,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇五(四)互聯(lián)網(wǎng)應(yīng)用程序的創(chuàng) CMP2.0EntityBean選項該選項的作用是創(chuàng)建userTable數(shù)據(jù)表的全局EJB選擇項目面板的StockManagementEJB選項,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇RebuildEJB模板,生成StockManagementEJB.jar文件上述5個步驟完成了EIB模板數(shù)據(jù)源的設(shè)置,第(3)步至第(5)步的作用是創(chuàng)userTable數(shù)據(jù)表的全局EJB,使EIB模板可以生成StockManagementEJB.jar文件,EJB的具體應(yīng)用請參考6.1節(jié)。(四)互聯(lián)網(wǎng)應(yīng)用程序打開項目StockManagementPro,選File菜單→New選項,單擊Web選項卡,雙擊WebApplication ③BuildWAR定義互聯(lián)網(wǎng)應(yīng)用程序的編譯方式,保留默認選項便可。(五)Cactus測試環(huán)境的設(shè)置CactusServlet和EJB,步驟如下(要進一步了解Cactus技術(shù),請參考《JavaToolsforExtremeProgramming:MasteringOpenSourceToolsIncludingAnt,Junit,andCACTUS》):選擇Wizard菜單→CactusSetup選項,進入Cactus測試環(huán)境的設(shè)置,Cactus②設(shè)置Cactus關(guān)聯(lián)的壓縮包,選擇stockmanagement.war選項用是定義Cactus測試程 #定義Cactus工具應(yīng) 1:#定義Servlet導(dǎo)向器的cactusservletRedirectorName=#定義用是定義Cactus測試程 #定義Cactus工具應(yīng) 1:#定義Servlet導(dǎo)向器的cactusservletRedirectorName=#定義JSP導(dǎo)向器cactusjspRedirectorName=#定義filter導(dǎo)向器的cactuscactusenableLogging=true1:要成功運行Cacms客戶端的程序,需要正確設(shè)置cactus.properties文件的cactus.contextURL參數(shù) (六)EAR應(yīng)用程序創(chuàng)建和部選擇File菜單→New選項,單擊Enterprise選項卡,雙擊EAREAR7步1步定義EAR(stockmanagementapp)EAR2步選擇EJB模板如果要選擇項目外的EJBJAR文件,可以單擊ExternalJARFiles選項卡選擇項目外的EJBJAR文件4步選擇EJB的客戶端程序,本例不選擇任何EJB的客戶端程序單擊“Finish”按鈕完成EAR的應(yīng)用程序創(chuàng)建,編譯EAR應(yīng)用程序,生成stoekmanagementapp.ear展開EAR文件,查看其中的文件 <?xmlversion="10"encoding="UTF-<?xmlversion="10"encoding="UTF- Inc 1 suncom/dtd/application_1_3<display-name>stockmanagementapp</display-<ejb>StockManagementEJB<web-uri>stockmanagementwar</web-<context-root>stockmanagement</context-在右邊的內(nèi)容框內(nèi)單擊Configureanew ,進入EAR應(yīng)用程序的部署步驟,如圖所示五(六)EAR應(yīng)用程序創(chuàng)建和部 of行最前面的機器名字,顯示盤符,通過單擊相應(yīng)的盤符和路徑,顯示stockmanagementapp.ear文件,如圖所單擊stockmanagementapp.ear文件旁邊的 examplesServer為EAR應(yīng)用程序的服務(wù)器單擊“ConfigureandDeploy”按鈕部署EAR5—34EAR應(yīng)用程序可以同時部署JAR文件和WAR網(wǎng)應(yīng)用程序的創(chuàng)建、Cacms測試環(huán)境的設(shè)置、EAR應(yīng)用程序創(chuàng)建和部署,使讀者能掌握企業(yè)進、銷、存管理信息系(七)問如何安裝Weblogic服務(wù)器為什么要取消EJB模板的AlwayscreateJARwhenbuildingtheprject復(fù)選項的選擇為什么EJBJDBCWebLogicJDBC驅(qū)動程序可答:EJB模板數(shù)據(jù)源應(yīng)用的JDBC驅(qū)動程序是JDBC驅(qū)動程序包,WebLogic的數(shù)據(jù)庫聯(lián)接緩沖池應(yīng)用的JDBC驅(qū)動程序是WebLogicJDBCJBuilder上設(shè)置數(shù)據(jù)源的作用是在本地創(chuàng)建一個數(shù)據(jù)數(shù)據(jù)源,使用WebLogic自帶的JDBC驅(qū)動程序包建立數(shù)據(jù)庫聯(lián)接,所以兩者的JDBC驅(qū)動程序可以不相同。(一)用戶登錄窗口程本節(jié)將介紹用戶登錄窗口程序和其涉及的全局EJB、狀態(tài)EJB全局EJB和UserLogUserTable全局EJB的創(chuàng)建與測UserTable全局EJB的創(chuàng)建與測試步驟如下打開項目StockManagementPro,打EJB模板StockManagementEJB schemaname屬性值必須和EJBSQL語句的數(shù)據(jù)表②Interfaces屬性定義EJB的接口,local將EJB所有屬性的InejbCreate值設(shè)為“true”,作用是使卻ejbCreate方法包括這些屬性值。是第(2)步定義 完成創(chuàng)建后的UserTable全局EJB6-4所示packagepackageimportjavautilpublicinterfaceUserTableHomeextendsjavaxejbEJBLocalHomepublicUserTablecreate(StringuserName,StringuserPassword,intbaseInforFunction,intstockFunction,intstockManageFunction,intsaleFunction)throwsCreateException?publicCollectionfindByUserName(StringuserName)throws packagepackageimportjavautilpublicinterfaceUserTableextendsjavaxejb{publicStringpublicStringgetUserPassword()?publicvoidsetBaseInforFunction(intbaseInforFunction)?publicintgetBaseInforFunction()?publicintgetStockFunction()?publicintgetStockManageFunction()?publicintgetSaleFunction()?}importjavaxejb*?publicclassUserTableBeanimplements{EntityContextpublicjavalangStringejbCreate(javalangStringjavalangStringintbaseInforFunction,intintstockManageFunction,intsaleFunction){setUserName(userName)?return}publicvoidejbPostCreate(javalangStringjavalangStringintbaseInforFunction,intintstockManageFunction,intsaleFunction)CreateException}publicvoidejbRemove()throwsRemoveException} voidsetBaseInforFunction(intbaseInforFunction)? voidsetStockFunction(intstockFunction)? voidsetSaleFunction(intsaleFunction)? javalangString intgetBaseInforFunction()?intintgetSaleFunction()?publicvoidejbLoad()}publicvoidejbStore()}publicvoidejbActivate()}publicvoidejbPassivate()}publicvoid{thisentityContext=}publicvoidsetEntityContext(EntityContext{thisentityContext=}}選擇File菜單→New選項,打開程序創(chuàng)建窗口,單擊Enterprise選項卡,雙EJBTestClient圖標(biāo),進入EJB的創(chuàng)建步驟,選擇CactusJUnitTest單選項,表示應(yīng)用Cactus技術(shù)測試EJB。 packageimportorgapachecactus*?importjavaxnaming*?importjavautilimportpackageimportorgapachecactus*?importjavaxnaming*?importjavautilimportjavarmiprivatestaticfinalStringERRORNULLREMOTE對象未定義"?privatestaticfinalintMAXOUTPUTLINELENGTH=100?privatebooleanlogging=false?privateUserTableHomeuserTableHome=null?privateUserTableuserTable=null?publicTestUserTableCactus1(String{}//初始化EJBpublicvoidinitializeLocalHome()throws{Contextcontext=new}publicvoidsetUp()throws{supersetUp()?}publicvoidtearDown()throws{userTableHome=null?userTable=null?super}//測試記錄創(chuàng)建方publicvoidtestCreateUser()throwsException{StringuserName="test"?StringuserPassword="test"?intbaseInforFunction=0?intstockFunction=0?intstockManageFunction=0?intsaleFunction=0?//創(chuàng)建一條新記}//測試記錄更新方publicvoidtestUpdateUser()throwsException{StringuserName="test"?StringuserPassword="test1"?intbaseInforFunction=1?intstockFunction=1?intstockManageFunction=1?intsaleFunction=1?//根據(jù)主鍵找到記錄//userTablesetUserPassword(userPassword)?userTablesetStockFunction(stockFunction)?userTablesetSaleFunction(saleFunction)?//檢查更新thisassertEquals("returnvalue",userPassword,userTablegetUserPassword())?thisassertEquals("returnvalue",baseInforFunction,userTablethisassertEquals("returnvalue",stockFunction,userTablegetStockFunction())?thisassertEquals("returnvalue",stockManageFunction,userTable}//publicvoidtestFindByUserName()throws//查找用戶名為jackif(colsize()>0){javautilIteratoriterator=coliterator()?while(iteratorhasNext()){//取 接userTable=(UserTable)javaxrmiPortableRemoteObjectnarrow(iteratornext(),UserTableclass)?}}}//測試記錄刪除方publicvoidtestDeleteUser()throwsException{StringuserName="test"?//根據(jù)主鍵找到記錄//testthisassertEquals("returnvalue",0,colsize())?}}JBuilder重新編譯EJB模板和EAR應(yīng)用Weblogic服務(wù)器的"DeployApplication”按鈕重新部署stockmanagement.war文件和StockManagementEJB.jar。EAR應(yīng)用程序的部署請參考5.6節(jié)UserLog全局EJB的創(chuàng)建與測UserLog全局EJB的創(chuàng)建與測試步驟如下單中選擇CreateCMP2.0EntityBean選項,創(chuàng)建userLog數(shù)據(jù)表的全局EJB。將EJB 將UserLogEJB所有屬性的InejbCreate()值設(shè)為“true”,作用是使ejbCreate將鼠標(biāo)移到EJB,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇Add選項-*Finder選項,創(chuàng)建EJB尋找方法,名③Inputparamerters屬性的值為空完成UserLog全局EJB的創(chuàng)建packagepackageimportjavautil*?importjavasql*?publicinterfaceUserLogHomeextendsjavaxejbEJBLocalHomepublicUserLogcreate(Integerid,StringprogramName,StringoperationContent,StringuserName,TimestampoperationDate)throwspublicCollectionfindAll()throwspublicCollectionfindByProgramName(StringprogramName)throwsFinderException?publicCollectionfindByUserName(StringuserName)throwsFinderException?publicUserLogfindByPrimaryKey(Integerid)throwsFinderException?}packagepackageimportjavautil*?importjavasql*?publicinterfaceUserLogextendsjavaxejb{publicIntegerpublicStringgetProgramName()?publicStringgetOperationContent()?publicStringgetUserName()?publicTimestampgetOperationDate()?}importjavaxejb*?publicimportjavaxejb*?publicclassUserLogBeanimplements{EntityContextpublicjavalangIntegerejbCreate(javalangIntegerid,javalangStringprogramName,javalangStringoperationContent,javalangStringuserName,javasqlTimestampoperationDate)throwsCreateException{returnnull?}publicvoidejbPostCreate(javalangIntegerid,javalangStringprogramName,javalangStringoperationContent,javalangStringuserName,javasqlTimestampoperationDate)throwsCreateException{}publicvoidejbRemove()throwsRemoveException} voidsetId(javalangInteger voidsetProgramName(javalangStringprogramName)? voidsetOperationContent(javalangStringoperationContent)? voidsetUserName(javalangStringuserName)? javalangIntegergetId()? javalangStringgetProgramName()? javalangStringgetUserName()? javasqlTimestampgetOperationDate()?publicvoidejbLoad(){}publicvoidejbStore()}publicvoidejbActivate()}publicvoidejbPassivate()}publicvoid{thisentityContext=}publicvoidsetEntityContext(EntityContext{thisentityContext=}}創(chuàng)建UserLog全局EJB的測試類TestUserLogCactus1,代碼如下 package importorgapachecactus*?importjavaxnaming*?importjavasqlTimestamp?importjavautil*?privatestaticfinalStringERROR_NULL_REMOTE對象未定義"?privatestaticfinalintMAX_OUTPUT_LINE_LENGTH=100?privatebooleanlogging=false?privateUserLogHomeuserLogHome=null?privateUserLoguserLog=null?publicTestUserLogCactus1(String{}//EJB初始化方publicvoidinitializeLocalHome()throws{Contextcontext=newuserLogHome=(UserLogHome)context}publicvoidsetUp()throws{supersetUp()?}publicvoidtearDown()throws{userLogHome=null?userLog=null?}publicvoidtestCreateUserLog()throwsException{IntegeridnewInteger(1)?StringprogramName="登陸窗口"?StringoperationContent="登陸"?StringuserName="jack"?javautilCalendarnow=javautilCalendarjavasqlTimestampoperationDate=newjavasqlTimestamp(nowgetTime()getTime())?userLogHomecreate(id,programName,operationContent,userName,operationDate)?}//publicvoidtestUserLogFindAll()Exception{Collectioncol=userLogHomefindAll()?thisassertEquals("",187,colsize())?}//測試根據(jù)操作程序名字取得日志publicvoidtestUserLogFindByProgramName()Exception{CollectioncoluserLogHomefindByProgramName("%登陸窗口%")?thisassertEquals("",106,colsize())?}//測試根據(jù)操作內(nèi)容取得日志記錄publicvoidtestUserLogFindByOperationContent()throwsException{Collectioncol=userLogHomefindByOperationContent("%刪除%")?thisassertEquals2col}//測試根據(jù)用戶名取得日志記錄的方publicvoidtestUserLogFindByUserName()throwspublicvoidtestUserLogFindByUserName()throwsException{Collectioncol=userLogHomefindByUserName("%ame%")?thisassertEquals("",23,col}//publicvoidtestUserLogFindByOperationDate()throws//javautilCalendardate=javautilCalendargetInstance()?dateset(2004,4,4,0,0,0)?javasqlTimestampstartDate=newjavasqlTimestamp(dategetTime()getTime())?dateset(2004,4,8,23,59,59)?javasqlTimestampendDate=newjavasqlTimestamp(dategetTime()getTime())?Collectioncol=userLogHomefindByOperationDate(startDate,endDate)?thisassertEquals("",69,col}Exception{Integerid=newInteger(1)?userLogremove()?}JBuilder重新編EJBEARWeblogic服務(wù)器的"DeployApplication”按鈕,重新部署stockmanagement.war和StockManagementEJB.jar文件。狀態(tài)EJB本節(jié)將介紹用戶登錄窗口程序相關(guān)的狀態(tài)EJB的創(chuàng)建與測試,狀態(tài)EJBpackageuser?1:publicclassUserimplementspackageuser?1:publicclassUserimplementsprivateStringuserName?privateStringuserPassword?privateintstockFunction?privateintsaleFunction?//用戶類的構(gòu)造方publicUser(StringuserName,StringuserPassword,intintstockFunction,intstockManageFunction,int{thisuserName=userName?thisbaseInforFunction=baseInforFunction?thisstockFunction=stockFunction?thisstockManageFunction=stockManageFunction?thissaleFunction=saleFunction?}return11:因為在服務(wù)端EJB之間傳送的類需 }//取得用 的方publicString{return}//設(shè)置用 的方publicvoidsetUserPassword(String{thisuserPassword=}publicintgetBaseInforFunction(){return}//publicvoidsetBaseInforFunction(int{thisbaseInforFunction=}publicintgetStockFunction(){return}//publicvoidsetStockFunction(int{thisstockFunction=}return}//publicvoidsetStockManageFunction(int{thisstockManageFunction=}publicintgetSaleFunction(){return}//publicvoidsetSaleFunction(int{thissaleFunction=}}StoekManagementData狀態(tài)EJB的創(chuàng)建與測試步驟如下 是非會話狀態(tài)EJB。StockManagementDataBean是EJB的主文件,StockManagementDataHome是EJB的創(chuàng)建接口文件,StockManagementData是EJB的接口文件。為StockManagementData添加7個接口方法,分別是eheckUser、createUser、updateUser、deleteUser、getUserByUserName、~reateUserLog和deleteUserLog。packagepackageimportjavautil*?importjavarmi*?publicinterfaceStockManagementDataHomeextendsjavaxejbEJBHomepublicStockManagementDatacreate()throwsCreateException,}packagepackageimportjavautil*?importjavarmi*?importuser*?publicinterfaceStockManagementDataextendsjavaxejbEJBObjectpublicint[]checkUser(StringuserName,StringuserPassword)throwsRemoteException?publicintcreateUser(Useruser)throwsRemoteException?publicintupdateUser(Useruser)throwsRemoteException?publicintdeleteUser(Useruser)throwsRemoteException?publicString[][]getUserByUserName(StringuserName)throwspublicintcreateUserLog(StringprogramName,StringoperationContent,StringuserName)throwsRemoteException?publicintdeleteUserLog(Integerid)throwsRemoteException?}packagepackageimportjavaxejb*?importuser*?importjavautil*?importjavaxrmipublicclassStockManagementDataBeanimplements{SessionContextprivateUserTableHomeuserTableHome=null?privateUserTableuserTable=null?privateUserLoguserLog=null?//創(chuàng)建EJBpublicvoidejbCreate()throws{Contextcontext=newuserLogHome=(UserLogHome)contextlookup("UserLog")?}catch(Exception}}publicvoidejbRemove()}publicvoidejbActivate()}publicvoidejbPassivate()}publicvoidsetSessionContext(SessionContext{thissessionContext=}//publicint[]checkUser(StringuserName,StringuserPassword){int[]functions=newint[4]?//EJB的接//Stringname=userTable//if(nameequals(userName)&&passwordequals(userPassword)){functions[0]=userTablefunctions[1]=userTablegetStockFunction()?functions[3]=userTablegetSaleFunction()?}ex){functions[0]}}//創(chuàng)建用publicintcreateUser(User{intresult=0?usergetStockFunction(),usergetStockManageFunction(),usergetSaleFunction())?result=ex){ex}}//更新用publicintupdateUser(User{intresult=0?////userTablesetUserPassword(user//更新用戶權(quán)userTablesetStockFunction(usergetStockFunction())?userTablesetSaleFunction(usergetSaleFunction())?result=}catch(Exceptionex}}//刪除用publicintdeleteUser(User{intresult=0?//result=1?ex){ex}}//根據(jù)用戶名查詢用publicString[][]getUserByUserName(StringString[][]detail=null?//取得用戶的所有記Collectioncol=userTableHomefindByUserName("%"+userName+"%")?if(colsize()>0){Iteratoriterator=col//inti=0?////取 接userTable=(UserTable)PortableRemoteObjectnarrow(iteratornext(),UserTableclass)?detail[i][0]=userTablegetUserName()?detail[i][2]=StringvalueOf(userTablegetBaseInforFunction())?detail[i][3]=StringvalueOf(userTablegetStockFunction())?detail[i][5]=StringvalueOf(userTablegetSaleFunction())?}detail=new}ex){detail=newString[0][6]?ex}return}//publicintcreateUserLog(StringprogramName,StringoperationContent,String{intresult=0?//創(chuàng)建日期 javautilCalendarnow=javautilCalendargetInstance()?javasqlTimestampoperationDate=newjavasqlTimestamp(nowgetTime()getTime())?//Vector集合類Integerid=null?if(colsize()>0)//narrow(vectorlasement(),UserLogclass)?//intnewInt=userLoggetId()intValue()+1?id=newInteger(newInt)?}elseid=newInteger(1)?}//userLogHomecreate(id,programName,operationContent,userName,operationDate)?result=1?ex){ex}}publicintdeleteUserLog(Integer{intresult=0?userLogremove()?result=ex){ex}packagepackageimportorgapachecactus*?importjavaxnaming*?importjavarmiRemoteException?importuserUser?publicclass actus1extends{privatestaticfinalStringERROR_NULL_REMOTE對象未定義"?privatestaticfinalintMAX_OUTPUT_LINE_LENGTH=100?privatebooleanlogging=false?privateStockManagementDataHomestockManagementDataHome=null?privateStockManagementDatastockManagementData=null?public actus1(String{}publicvoidinitialize()throws{Contextcontext=newObjectref=contextstockManagementDataHome=(StockManagementDataHome)PortableRemoteObjectnarrow(ref,StockManagementDataHomeclass)?}publicvoidsetUp()throws{supersetUp()?}publicvoidtearDown()throws{stockManagementDataHome=null?stockManagementData=null?super}//創(chuàng)建EJB 接publicStockManagementDatacreate()throws{stockManagementData=stockManagementDataHomecreate()?returnstockManagementData?}//測試檢查用戶的方publicvoidtestCheckUser()throwsRemoteExceptionStringuserPassword=//檢查用戶的方int[]functions=stockManagementDatacheckUser(userName,userPassword)?thisassertEquals("returnvalue",0,functions[0])?userName="jack1"?//檢查用戶的方functions=stockManagementDatacheckUser(userName,userPassword)?thisassertEquals("returnvalue",-1,functions[0])?}//測試創(chuàng)建用戶的方publicvoidtestCreateUser()throws{StringuserName="test"?intbaseInforFunction=0?intstockFunction=0?intstockManageFunction=0?intsaleFunction=0?Useruser=newUser(userName,userPassword,intresult=stockManagementDatacreateUser(user)?thisassertEquals("returnvalue",1,}//測試更新用戶的方publicvoidtestUpdateUser()throws{StringuserName="test"?intintbaseInforFunction=1?intstockFunction=1?intstockManageFunction=1?intsaleFunction=1?Useruser=newUser(userName,userPassword,intresult=stockManagementDataupdateUser(user)?thisassertEquals("returnvalue",1,}publicvoidtestDeleteUser()throws{StringuserName="test"?intbaseInforFunction=0?intstockFunction=0?intstockManageFunction=0?intsaleFunction=0?Useruser=newUser(userName,userPassword,intresult=stockManagementDatadeleteUser(user)?thisassertEquals("returnvalue",1,}//publicvoidtestGetUserByUserName()throws{StringuserName=thisassertEquals("returnvalue","jack",result[0][1])?}Exception{StringprogramName登陸窗口"?StringoperationContent="登陸"?StringuserName=//stockManagementDatacreateUserLog(programName,operationContent,}Exception{Integerid=new//stockManagementData}}JBuilder重新編譯EJB模板和EAR應(yīng)用程序,單擊Weblogic服務(wù)器的“DeployApplieation”按鈕重新部署EAR應(yīng)用程序。本節(jié)將介紹用戶登錄窗口程序相關(guān)的數(shù)據(jù)類的創(chuàng)建與測試,數(shù)據(jù)類的作用是非狀態(tài)EJB的方法和為窗口程packageimportjavaxnamingpackageimportjavaxnamingimportuser*?importjavautil*?publicclassStockManagementDataprivatestockmanagementproStockManagementDatastockManagementData=public{try{ex){ex}}//EJBpublicvoidinitialize()throwsException//Contextcontext=//EJBObjectref=context//取得StockManagementDataEJB的創(chuàng)建接stockManagementDataHome=(StockManagementDataHome)PortableRemoteOb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光遺傳學(xué)領(lǐng)域的研究行業(yè)市場調(diào)研分析報告
- 平臥式嬰兒車產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 商業(yè)經(jīng)紀行業(yè)市場調(diào)研分析報告
- 分隔層飾盤產(chǎn)品供應(yīng)鏈分析
- 藥用磷酸鹽項目運營指導(dǎo)方案
- 為公司提供外包行政管理行業(yè)相關(guān)項目經(jīng)營管理報告
- 醫(yī)用砷解毒劑產(chǎn)品供應(yīng)鏈分析
- 健康技術(shù)虛擬護理行業(yè)相關(guān)項目經(jīng)營管理報告
- 奶酪熟化奶酪加工服務(wù)行業(yè)相關(guān)項目經(jīng)營管理報告
- 云監(jiān)控和管理行業(yè)經(jīng)營分析報告
- 小學(xué)英語人教PEP版6年級(上)期中考試復(fù)習(xí)
- 2024年官方獸醫(yī)考試題庫(判斷題)
- 職業(yè)健康安全培訓(xùn)課件(共32張課件)
- 2024年全國統(tǒng)考“營養(yǎng)師或營養(yǎng)指導(dǎo)員”相關(guān)知識考前試題庫與參考答案
- 2024年07月首都博物館2024年招考17名合同制用工人員筆試近年2018-2023典型考題及考點剖析附答案帶詳解
- 大學(xué)生畢業(yè)論文寫作教程(高校畢業(yè)生論文寫作指課程導(dǎo))全套教學(xué)課件
- 24春國家開放大學(xué)《鄉(xiāng)鎮(zhèn)行政管理》作業(yè)1-5參考答案
- 2023年學(xué)習(xí)興稅(網(wǎng)絡(luò)信息)知識考試復(fù)習(xí)題庫(含答案)
- 北京大興國際機場工程策劃
- 社工志愿者考評表
- 圖形創(chuàng)意(第二版)教材課件匯總完整版ppt全套課件最全教學(xué)教程整本書電子教案全書教案合集最新課件匯編
評論
0/150
提交評論