版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
一、關于本JBchilaor9TheJ2EETutorialSecondEditionProfessionalEJBCoreJ2EEPatterns:BestPracticesandDesignStrategies,SecondEditionJ2EEApplicationsandBEAWebLogicServersUML2Toolkit、SQLServer2000BibleJDBCDatabaseProgrammingwithJ2EEJavaToolsforExtremeProgramming:MasteringOpenSourceToolsIncludingAnt,Junit,andCACTUS試與JUnit實踐》12本系統(tǒng)。這12本系統(tǒng)全面講述了Java語言的各種技術。上述都是關于Java語言的一系列,可以作為本文檔的參考書。用。本文檔程序實例的講述步驟是先講述服務EJB的創(chuàng)建與測試,接著講述客戶端的數(shù)據類的創(chuàng)建,再講述主窗二、本文檔第2章:企業(yè)進、銷、存管理信息系統(tǒng)的建模分析。第4章:企業(yè)進、銷、存管理信息系統(tǒng)的數(shù)據結構分析。的第5章:企業(yè)進、銷、存管理信息系統(tǒng)的項目創(chuàng)建與設置。應用程序的創(chuàng)建、Cactus測試環(huán)境的設置、EAR應用程序創(chuàng)建和部署,使讀者能掌握企業(yè)進、銷、存管理信息系統(tǒng)序、會計科目管理窗口程序、報表管理窗口程序、用戶日志查看窗口程序、退出系統(tǒng)程序和基礎信息模塊6個互聯(lián)一(一)進、銷、存管理信息系統(tǒng)簡 (一)進、銷、存管理信息系統(tǒng)本系統(tǒng)可以在Windows2000、WindowsNT、WindowsXP、Linux和Unix平臺應用STOCKMIS的英文全稱是StockManagementInformationSystem,中文全稱是進、銷、存管理信息系統(tǒng)。(二)進、銷、存管理信息系統(tǒng)整體 登錄用戶可以切換用戶,。一(三)小 本軟件符合IBM的CUA標準和的GUI標準本系統(tǒng)應用JDK1.4.0、J2EE1.3.1技術標準通口。本系統(tǒng)的通口由WebLogic提供(三)(四)問(一)用例圖分節(jié)(二)基礎信息模塊活動圖分 修改活動 (三)進貨模塊活動圖分析為每張進貨單,根據企業(yè)的實際情況批準進貨單,訂購員完成電子簽名后2張進貨單,一聯(lián)送交供應商,一 現(xiàn)金賬。進貨退貨分為3個程序,分別是訂購員填寫退貨單程序、現(xiàn)金管理員收取已經付出金額程序、驗收員將貨物退進貨會計處理分為3個程序實現(xiàn),分別是審核進貨會計分錄程序、編寫進貨會計分錄程序和查詢進貨會計分錄(四)庫存模塊活動圖分析庫存盤4個程序完成,分別是庫存盤點計數(shù)程序、庫存盤點核查程序、盤點損失單管理程序、盤點盈收單庫存會計處理分為3個程序實現(xiàn),分別是審核庫存會計分錄程序、編寫庫存會計分錄程序和查詢庫存會計分錄(五)銷售模塊活動圖分析生成會計分錄的商品銷售單,當用戶退出窗口時,系統(tǒng)自動生成會計分錄和將現(xiàn)金收入記錄在現(xiàn)金賬。銷售會計處理分為3個程序實現(xiàn),分別是審核銷售會計分錄程序、編寫銷售會計分錄程序和查詢銷售會計分錄程序。3個活動圖與進貨會計處理相同,請參考2.3.7節(jié)。(六)系統(tǒng)部署圖二(七)小 (七)(八)問三(一)文件總結構 析析 (一)文件總結 (二)源代碼的文件結構圖(1)maininterface是主窗口程序的 (2)baseinforinterface是基礎信息模塊程序的 (3)stockinterface是進貨模塊程序的 (4)stockmanageinterface是庫存模塊程序的 stockmanagementpro是EJB源代碼 user是用戶類 print是打印程序的 (11)cactustest是EJB測試類的 (12)junittest是客戶端測試類的 (13)servlet是Servlet程序的 (三)互聯(lián)網程序的文件結構 文件是互聯(lián)網程序在(四)三(五)問與 (五)問程序的備份文件如何放人 答:當用戶修改程序時,JBuilder自動將程序的備份文件放入 析析如何在WebLogic服務器創(chuàng)建數(shù)據庫聯(lián)接緩沖池如何創(chuàng)建JNDI數(shù)據源(一)數(shù)據字典為數(shù)據類大唯主外備1**2用戶3基礎信息模塊的用戶權456索排升數(shù)據類大允許空唯主外備1**序23商品類別名4商品類別描索排升數(shù)據類大唯主外備1**2商品分類標345678規(guī)9庫存上限最大庫存下限最小索排升大唯主外備1**2地34簡5678傳9固地銀備索排大唯主外備1**23位4描索排升大唯主自動增外備1**2地34簡567數(shù)據類大唯主外備8傳9固地銀電子郵客戶信用限備索排升大唯主外備1**序23會計科目名索排升數(shù)據類大允許空唯主外備1**序2操作程序名3操作內4用戶名5操作時索排升值加備1**2單據類型,0表示進貨訂單,1表示進貨退貨單,2表示商品調出單,3表示商品調入單,4表示銷售出庫單,5表示銷售退貨單,6表示盤點損失單,7表示盤點盈收單,8上期轉入單,9表示數(shù)量分拆調出單,10表示數(shù)量分拆調入單,11表示數(shù)量組合調出單,12表示數(shù)量組合調入單,133供應商調拔單的關聯(lián)標4請購員名字商品調出用戶5訂購員名字調入倉庫名值加備6驗收員名字商品驗收用戶7現(xiàn)金管理員名8收貨地9倉庫名*訂單日期調出日*到貨日期驗收日完成狀態(tài),0表示進行,1表示撤消,2表示完備索引名排序升序大小默值值唯—主加外鍵備1**23碼45數(shù)6索引名名排序升數(shù)據類值空增備1**2單據類型,0表示前臺銷貨單據,1表示信用銷單據,2表示前臺銷售退貨單據,3表示信用銷售3客45信用銷售用戶名6現(xiàn)金管理員名789*默空增備完成狀態(tài),0表示進行,1表示撤消,2表示完備索引排序升序數(shù)據類大允許空唯主外備1**明細編2單據編34實際售5數(shù)索排升型大小默值允空唯—主鍵自增外鍵備1**2相關聯(lián)的票據標3票據類型,0表示應付票據,124金5供應商名字或者客戶名6開票據的用戶7現(xiàn)金管理員名89*收款或者付款日完成狀態(tài),0表示進行,1表示撤消,2表完備索引排序升序大允許空唯主外備1**序2相關聯(lián)的票據標3借貸標識,0表示借,1表示4數(shù)據類大唯主自動增外備56索排升型大小默值值唯—主鍵加外鍵備1**序2相關聯(lián)的票據標3記帳用4審核用5記帳日6*審核日7完成狀態(tài),0表示進行,1表示撤消,2完8備索引排序升序型大小默值值唯—主鍵加外鍵備1**序2與accountEntryLedger數(shù)據表的聯(lián)系段3借貨標識,0表示借,1表示4會計科5發(fā)生金索引排序升序(二)數(shù)據表的關系分四(三)數(shù)據表的SQL創(chuàng)建語 表的關系是一對一關系,相關聯(lián)的字段是stockLedger數(shù)據表的orderld字段、saleLedger數(shù)據表的saleld字段、currentAccountLedger數(shù)據表的linkld字段?,F(xiàn)金賬套數(shù)據表(cashLedger)與往來賬套數(shù)據表(currentAccountLedger)是一對一關系,相關聯(lián)的字段currentAccountLedSer數(shù)據表的currentAccountld字段和cashLedger數(shù)據表的linkld字段會計分錄賬套數(shù)據表(accountEntryLedger)(accountEntrySubLedger)是一對多關系,相關聯(lián)的字段是accountEntryLedger數(shù)據表的serialld字段和accountEntrySubLedger數(shù)據表的linkSerialld字段。賬套數(shù)據表(currentAccountLedger)是一對一關系,相關聯(lián)的字段是accountEntryLedger數(shù)據表的linkld字段、stockLedger數(shù)據表的orderld字段、saleLedger數(shù)據表的saleld字段、currentAccountLedger數(shù)據表的currentAccountld其他的數(shù)據表對應關系不經常使用,將在模塊編碼中講述,如商品數(shù)據表 與庫存賬套明細數(shù)據(三)數(shù)據表的SQL創(chuàng)建語本節(jié)介紹數(shù)據表的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)用戶可以應用程序創(chuàng)建新的賬套數(shù)據表(請參考6.7節(jié)),賬套數(shù)據表共有8個,分別是stockLedger、stockSubLedgerSaleLedgerSaleSubLedgercurrentAccountLedgercashLedgeraccountEntryLedger、(四)數(shù)據表的創(chuàng)建和數(shù)據導如果不熟悉SQLServer的數(shù)據庫的創(chuàng)建,請參考《SQLServer2000Bible先選擇stockmanagement數(shù)據庫,選擇Tools菜單→SQLQueryyzer選項打開SQL代碼窗口,將CompositiveExample\stockmanagement.sql文件(應用記事本程序打開,該文件在本設計附帶的程序包)的代碼放人SQL代碼窗口,如圖所示。確認的數(shù)據庫是stockmanagement,單擊上的“運行”按鈕,為stockmanagement數(shù)據庫創(chuàng)建個數(shù)據表(其中有兩個賬套,分別是200404賬套和200405賬套)。本節(jié)應用stoekmanagement.mdb文件 是CompositiveExample,共有32個數(shù)據表數(shù)據打開SQLServer管理窗口,選擇Tools菜單→DataTransformationServices→ImportData選項,進人數(shù)據導人本例選擇Accessstockmanagement.mdb文件作為導人數(shù)據庫本例選擇stockmanagement作為目標數(shù)據庫 保留默認的選項便可,表示立即數(shù)據庫。單擊“完成”按鈕,便可以將stockmanagement.mdb的數(shù)據導人SQLServerstockmanagement數(shù)據庫,如(五)數(shù)據庫聯(lián)接緩沖池的創(chuàng)啟動WebLogic服務器,進入WebLogic在左邊的結構樹選擇examples→Services→JDBC→ConnectionPoolsConfigureanewJDBCConnectionPool…(設置一個新的JDBC聯(lián)接緩沖池),如圖所示。四(六)JNDI數(shù)據源的創(chuàng) 上述4個步驟完成了stockmanagement數(shù)據庫的聯(lián)接緩沖(六)JNDI數(shù)據源的在WebLogic管理窗口內的左邊結構樹選擇examples→Services→JDBC→TxDataSources,在右邊的內容框選擇ConfigureanewJDBCTxDataSource…(設置一個新的帶事務處理的數(shù)據源),如圖所示。(七)SQL代碼,剖析了數(shù)據表創(chuàng)建、數(shù)據導入、數(shù)據庫聯(lián)接緩JNDI數(shù)據源的創(chuàng)建。通過本章的考查,指導老(八)問答:數(shù)據表關系不用在數(shù)據庫內創(chuàng)建,通過SQL語句where語句實現(xiàn)便可答:創(chuàng)建數(shù)據庫的聯(lián)接緩沖池的作用是提高數(shù)據庫的速度,要了解J2EE方面的知識,請參考《TheJ2EETutorialSecondEdition》一書。五(一)JBuilder項目創(chuàng) (1如何創(chuàng)建進、銷、存管理信息系統(tǒng)的JBuilder項目?(2)如何創(chuàng)建進、銷、存管理信息系統(tǒng)的EJB模板?如何設置進、銷、存管理信息系統(tǒng)的EJB模板的數(shù)據源?(5)如何設置進、銷、存管理信息系統(tǒng)的Cactus測試環(huán)境(6)如何創(chuàng)建和部署EJB和互聯(lián)網模板的應用程序(一)JBuilder項目 要進一步了解JBuilder的項目設置,請參考《精通JBuilder9上述3個步驟完成了StockManagementPro項目的創(chuàng)建(二)EJB模板的EJB的模板創(chuàng)建的步驟如下(Weblogic服務器,請參考《J2EEApplicationsandBEAWebLogic打開JBuilder窗口,選擇Tools菜單→選擇ConfigureServer選項,進入服務器的設置窗口在左邊的結構樹選擇WebLogicApplicationServer7.x選項,勾選EnableServer復選框,單擊General選項卡,在Homedirectory(主 )內選擇WebLogic服務器的安裝 ,其他的選項由JBuilder自動生成。①Homedirectory定義WebLogic服務器所在的路徑單擊Custom選項卡,進入WebLogic服務器在JBuilder①BEAhomedirectory定義BEA程序的安 ,該參數(shù)由JBuilder自動生成②JDKInstallationdirectory定義JDK1.4的安裝路徑⑦Listenaddress定義WebLogic服務器所在的服務器名字⑧Listenport定義WebLogic服務器所在的動選擇Project菜單→ProjectProperties選項,打開項目屬性框,單擊Server選項卡,為項目選擇WebLogic選擇File菜單→New選項,單擊Enterprise選項卡,雙擊EJBModule圖標④OutputJARfile區(qū)域中的Name定義JAR文件的名字,保留默認值⑤OutputJARfile區(qū)域中的PathJAR文件的保存路徑,保留默認值。單擊“OK”完成EJB模板的創(chuàng)建。選擇StockManagementEJBProperties選項,打開EJB模板設置框。取消AlwayscreateJARwhenbuildingtheproject復選項的選擇,取消該復選項的作用是避免每次編譯項目(Ctrl+F9)時都自動編譯EJB模板,節(jié)省項目編譯時間,但更新EJB后,需要選擇項目面板的StockManagementEJB選項,單擊鼠標右鍵,從彈出的快捷菜單中選擇Rebuild選項重新編譯EJB。(三)EJB模板數(shù)據源的設打開EJB模板,在左邊的結構面板內選擇DataSources節(jié)點,單擊鼠標右鍵,從彈出的快捷菜單中選 的程序包,要進一步了解Java聯(lián)接數(shù)據庫方面的知識,請參考《JDBCDatabaseProgrammingwithJ2EE③URL(數(shù)據庫的聯(lián)接地址)的設置是“jdbc :sqlserver://localhost:1433的,如果不設置sa用戶的,保留空值便可。⑥JNDIname的值是“stockManagement”,該WebLogicstockmanagementJNDI數(shù)據源,請參考4.6節(jié)。局EJB使用,當全局EJB在服務器部署時,該數(shù)據源不起作用,起作用的是stockManagement數(shù)據源。如果不能看到上述數(shù)據表,選擇stockManagement節(jié)點,單擊鼠標右鍵,從彈出的快捷菜單中選擇RefreshfromDatabase選項,檢查數(shù)據庫設置是否正確,再重新載人數(shù)據表。選擇結構面板的stockManagement節(jié)點→userTable數(shù)據表,單擊鼠標右鍵,從彈出的快捷菜單中選擇五(四)互聯(lián)網應用程序的創(chuàng) CMP2.0EntityBean選項該選項的作用是創(chuàng)建userTable數(shù)據表的全局EJB選擇項目面板的StockManagementEJB選項,單擊鼠標右鍵,從彈出的快捷菜單中選擇RebuildEJB模板,生成StockManagementEJB.jar文件上述5個步驟完成了EIB模板數(shù)據源的設置,第(3)步至第(5)步的作用是創(chuàng)userTable數(shù)據表的全局EJB,使EIB模板可以生成StockManagementEJB.jar文件,EJB的具體應用請參考6.1節(jié)。(四)互聯(lián)網應用程序打開項目StockManagementPro,選File菜單→New選項,單擊Web選項卡,雙擊WebApplication ③BuildWAR定義互聯(lián)網應用程序的編譯方式,保留默認選項便可。(五)Cactus測試環(huán)境的設置CactusServlet和EJB,步驟如下(要進一步了解Cactus技術,請參考《JavaToolsforExtremeProgramming:MasteringOpenSourceToolsIncludingAnt,Junit,andCACTUS》):選擇Wizard菜單→CactusSetup選項,進入Cactus測試環(huán)境的設置,Cactus②設置Cactus關聯(lián)的壓縮包,選擇stockmanagement.war選項用是定義Cactus測試程 #定義Cactus工具應 1:#定義Servlet導向器的cactusservletRedirectorName=#定義用是定義Cactus測試程 #定義Cactus工具應 1:#定義Servlet導向器的cactusservletRedirectorName=#定義JSP導向器cactusjspRedirectorName=#定義filter導向器的cactuscactusenableLogging=true1:要成功運行Cacms客戶端的程序,需要正確設置cactus.properties文件的cactus.contextURL參數(shù) (六)EAR應用程序創(chuàng)建和部選擇File菜單→New選項,單擊Enterprise選項卡,雙擊EAREAR7步1步定義EAR(stockmanagementapp)EAR2步選擇EJB模板如果要選擇項目外的EJBJAR文件,可以單擊ExternalJARFiles選項卡選擇項目外的EJBJAR文件4步選擇EJB的客戶端程序,本例不選擇任何EJB的客戶端程序單擊“Finish”按鈕完成EAR的應用程序創(chuàng)建,編譯EAR應用程序,生成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-在右邊的內容框內單擊Configureanew ,進入EAR應用程序的部署步驟,如圖所示五(六)EAR應用程序創(chuàng)建和部 of行最前面的機器名字,顯示盤符,通過單擊相應的盤符和路徑,顯示stockmanagementapp.ear文件,如圖所單擊stockmanagementapp.ear文件旁邊的 examplesServer為EAR應用程序的服務器單擊“ConfigureandDeploy”按鈕部署EAR5—34EAR應用程序可以同時部署JAR文件和WAR網應用程序的創(chuàng)建、Cacms測試環(huán)境的設置、EAR應用程序創(chuàng)建和部署,使讀者能掌握企業(yè)進、銷、存管理信息系(七)問如何安裝Weblogic服務器為什么要取消EJB模板的AlwayscreateJARwhenbuildingtheprject復選項的選擇為什么EJBJDBCWebLogicJDBC驅動程序可答:EJB模板數(shù)據源應用的JDBC驅動程序是JDBC驅動程序包,WebLogic的數(shù)據庫聯(lián)接緩沖池應用的JDBC驅動程序是WebLogicJDBCJBuilder上設置數(shù)據源的作用是在本地創(chuàng)建一個數(shù)據數(shù)據源,使用WebLogic自帶的JDBC驅動程序包建立數(shù)據庫聯(lián)接,所以兩者的JDBC驅動程序可以不相同。(一)用戶登錄窗口程本節(jié)將介紹用戶登錄窗口程序和其涉及的全局EJB、狀態(tài)EJB全局EJB和UserLogUserTable全局EJB的創(chuàng)建與測UserTable全局EJB的創(chuàng)建與測試步驟如下打開項目StockManagementPro,打EJB模板StockManagementEJB schemaname屬性值必須和EJBSQL語句的數(shù)據表②Interfaces屬性定義EJB的接口,local將EJB所有屬性的InejbCreate值設為“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圖標,進入EJB的創(chuàng)建步驟,選擇CactusJUnitTest單選項,表示應用Cactus技術測試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?//根據主鍵找到記錄//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"?//根據主鍵找到記錄//testthisassertEquals("returnvalue",0,colsize())?}}JBuilder重新編譯EJB模板和EAR應用Weblogic服務器的"DeployApplication”按鈕重新部署stockmanagement.war文件和StockManagementEJB.jar。EAR應用程序的部署請參考5.6節(jié)UserLog全局EJB的創(chuàng)建與測UserLog全局EJB的創(chuàng)建與測試步驟如下單中選擇CreateCMP2.0EntityBean選項,創(chuàng)建userLog數(shù)據表的全局EJB。將EJB 將UserLogEJB所有屬性的InejbCreate()值設為“true”,作用是使ejbCreate將鼠標移到EJB,單擊鼠標右鍵,從彈出的快捷菜單中選擇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())?}//測試根據操作程序名字取得日志publicvoidtestUserLogFindByProgramName()Exception{CollectioncoluserLogHomefindByProgramName("%登陸窗口%")?thisassertEquals("",106,colsize())?}//測試根據操作內容取得日志記錄publicvoidtestUserLogFindByOperationContent()throwsException{Collectioncol=userLogHomefindByOperationContent("%刪除%")?thisassertEquals2col}//測試根據用戶名取得日志記錄的方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服務器的"DeployApplication”按鈕,重新部署stockmanagement.war和StockManagementEJB.jar文件。狀態(tài)EJB本節(jié)將介紹用戶登錄窗口程序相關的狀態(tài)EJB的創(chuàng)建與測試,狀態(tài)EJBpackageuser?1:publicclassUserimplementspackageuser?1:publicclassUserimplementsprivateStringuserName?privateStringuserPassword?privateintstockFunction?privateintsaleFunction?//用戶類的構造方publicUser(StringuserName,StringuserPassword,intintstockFunction,intstockManageFunction,int{thisuserName=userName?thisbaseInforFunction=baseInforFunction?thisstockFunction=stockFunction?thisstockManageFunction=stockManageFunction?thissaleFunction=saleFunction?}return11:因為在服務端EJB之間傳送的類需 }//取得用 的方publicString{return}//設置用 的方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//更新用戶權userTablesetStockFunction(usergetStockFunction())?userTablesetSaleFunction(usergetSaleFunction())?result=}catch(Exceptionex}}//刪除用publicintdeleteUser(User{intresult=0?//result=1?ex){ex}}//根據用戶名查詢用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應用程序,單擊Weblogic服務器的“DeployApplieation”按鈕重新部署EAR應用程序。本節(jié)將介紹用戶登錄窗口程序相關的數(shù)據類的創(chuàng)建與測試,數(shù)據類的作用是非狀態(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政府采購合同(2篇)
- 搭建車棚安全協(xié)議書(2篇)
- 2024年度有機蔬菜種植基地委托培育種苗專項合同3篇
- 2024年甲乙雙方關于共建綠色能源發(fā)電項目的合作協(xié)議
- 2025年洛陽大車貨運資格證考試題
- 2025年濟寧資格證模擬考試
- 2025年賀州怎么考貨運從業(yè)資格證
- 2025年涼山州b2貨運資格證模擬考試
- 2024年標準化消防系統(tǒng)工程勞務分包合同一
- 《酒店笑話》課件
- 2024年保安員證考試題庫附參考答案(a卷)
- 《湖南省醫(yī)療保險“雙通道”管理藥品使用申請表》
- 員工主動型行為的結構探索與量表開發(fā)
- 部編版四年級語文上冊詞語練習
- 時間管理主題班會課省公開課一等獎全國示范課微課金獎課件
- 2024年內蒙古恒正集團呼和浩特第二工貿有限公司招聘筆試參考題庫含答案解析
- 探索·鄱陽湖智慧樹知到期末考試答案2024年
- 國開2024年《0-3歲嬰幼兒親子活動設計與指導》形考作業(yè)1-3答案
- 歐美電影文化智慧樹知到期末考試答案2024年
- 光伏電站安全培訓
- 會議運營與管理(雙語)智慧樹知到期末考試答案2024年
評論
0/150
提交評論