J2EE实例开发文档_第1页
J2EE实例开发文档_第2页
J2EE实例开发文档_第3页
J2EE实例开发文档_第4页
J2EE实例开发文档_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档版本DateVersionAuthorChanges2004-OCT-180.1 DRAFTShemy Yu简介该文档用于描述构成工作日志系统TSS的J2EE组件;该系统的大致功能: 任务类型维护(用缓存的形式保存记录集,不常改动) 职务类型维护(用缓存的形式保存记录集,不常改动) 项目信息维护(需要经常变动,以页面的形式进行维护) 员工信息维护(需要经常变动,以页面的形式进行维护) 工作日志维护(包括工作日志的填写、修改、删除、审批、查询、报表)一、系统结构该系统我们采用J2EE技术和STRUTS(MVC)架构,STRUTS用来处理WEB层发来的请求,然后将请求发送到相应的EJB进行处理

2、,并将处理结果返回到WEB层。该系统大致分为以下5种组件:组件1:JspJava Server Pages (JSP)组件2:StrutsStruts Framework (running on WebSphere,包括Actions和Forms)组件3:Session BeanStateless Session EJBs (running on WebSphere)组件4:Entity BeanContainer Managed Persistence (CMP) EJBs (running on WebSphere)组件5:DatabaseOracle 9i(组件分布图)(开发机模式)(生

3、产机模式)二、Database Schema用到的表Table NameDescriptionTASK_TYPE任务类型,如PROG,TEST,MEET等;TITLE_TYPE职务类型,如PROGRAMMER,TL,SP等;PROJECT_RECORD项目、系统信息表,如OA系统、FSS系统、ETMS系统等;STAFF_RECORD员工信息表;TIME_SHEET_RECORD工作日志信息表;1、TASK_TYPE(任务类型)Table Name TASK_TYPEDescription任务类型,如PROG,TEST,MEET等;Field No.Field Name Field Descri

4、ptionTypeRemarks1TASK_ID任务IDVarchar2(8)PK2DESCRIPTION任务描述Varchar2(80)3UPDATE_USER修改用户Varchar2(20)4UPDATE_TIME修改时间Date2、TITLE_TYPE(职务类型)Table Name TITLE_TYPEDescription职务类型,如PROGRAMMER,TL,SP等;Field No.Field Name Field DescriptionTypeRemarks1TITLE_ID职务IDVarchar2(20)PK2DESCRIPTION职务描述Varchar2(80)3UPDAT

5、E_USER修改用户Varchar2(20)4UPDATE_TIME修改时间Date3、STAFF_RECORD(员工信息表)Table Name STAFF_RECORDDescription员工信息表;Field No.Field Name Field DescriptionTypeRemarks1STAFF_ID员工IDVarchar2(20)PK2TITLE_ID职务IDVarchar2(4)3DESCRIPTION状态描述Varchar2(80)4UPDATE_USER修改用户Varchar2(20)5UPDATE_TIME修改时间Date4、PROJECT_RECORD(项目、系统

6、信息表)Table Name PROJECT_RECORDDescription项目、系统信息表,如OA系统、FSS系统、ETMS系统等;Field No.Field Name Field DescriptionTypeRemarks1PROJ_ID项目IDVarchar2(8)PK2PROJ_NAME项目名称Varchar2(40)3PROJ_RESP_ID项目负责人Varchar2(20)4DESCRIPTION项目描述Varchar2(80)5UPDATE_USER修改用户Varchar2(20)6UPDATE_TIME修改时间Date5、TIME_SHEET_RECORD(工作日志信息

7、表)Table Name TIME_SHEET_RECORDDescription工作日志信息表Field No.Field Name Field DescriptionTypeRemarks1ID自动增1Number(8)PK2SHEET_DATE工作日期Date3STAFF_ID员工IDVarchar2(20)FK(STAFF_RECORD)4PROJ_ID项目IDVarchar2(8)FK(PROJECT_RECORD)5TASK_ID任务类型Varchar2(4)FK(TASK_TYPE)6SPEND_HOURS花费小时数Number()7WORK_SITE工作地点Varchar2(2

8、0)8DESCRIPTION工作描述Varchar2(80)9UPDATE_USER修改用户Varchar2(20)10UPDATE_TIME修改时间Date6、创建User/Schema(TSS)7、建表SQL:DROP TABLE TASK_TYPECREATE TABLE TASK_TYPE(TASK_IDVARCHAR2(8) NOT NULL,DESCRIPTIONVARCHAR2(80) NULL,UPDATE_USERVARCHAR2(20) NULL,UPDATE_TIMEDATE NULL);ALTER TABLE TASK_TYPE ADD ( PRIMARY KEY (T

9、ASK_ID) ) ;DROP TABLE TITLE_TYPECREATE TABLE TITLE_TYPE(TITLE_IDVARCHAR2(20) NOT NULL,DESCRIPTIONVARCHAR2(80) NULL,UPDATE_USERVARCHAR2(20) NULL,UPDATE_TIMEDATE NULL); ALTER TABLE TITLE_TYPE ADD ( PRIMARY KEY (TITLE_ID) ) ;DROP TABLE STAFF_RECORDCREATE TABLE STAFF_RECORD(STAFF_IDVARCHAR2(20) NOT NULL

10、,TITLE_IDVARCHAR2(20) NULL,DESCRIPTIONVARCHAR2(80) NULL,UPDATE_USERVARCHAR2(20) NULL,UPDATE_TIMEDATE NULL); ALTER TABLE STAFF_RECORD ADD ( PRIMARY KEY (STAFF_ID) ) ;DROP TABLE PROJECT_RECORDCREATE TABLE PROJECT_RECORD(PROJ_ID VARCHAR2(8) NOT NULL,PROJ_NAMEVARCHAR2(40) NULL,PROJ_RESP_IDVARCHAR2(20) N

11、ULL,DESCRIPTIONVARCHAR2(80) NULL,UPDATE_USERVARCHAR2(20) NULL,UPDATE_TIMEDATE NULL); ALTER TABLE PROJECT_RECORD ADD ( PRIMARY KEY (PROJ_ID) ) ;DROP TABLE TIME_SHEET_RECORDCREATE TABLE TIME_SHEET_RECORD(IDNUMBER NOT NULL,SHEET_DATEDATE NULL,STAFF_IDVARCHAR2(20) NULL,PROJ_IDVARCHAR2(8) NULL,TASK_IDVAR

12、CHAR2(8) NULL,SPEND_HOURSNUMBER NULL,WORK_SITEVARCHAR2(20) NULL,DESCRIPTIONVARCHAR2(80) NULL,UPDATE_USERVARCHAR2(20) NULL,UPDATE_TIMEDATE NULL); ALTER TABLE TIME_SHEET_RECORD ADD ( PRIMARY KEY (ID) ) ;ALTER TABLE TIME_SHEET_RECORD ADD ( FOREIGN KEY (STAFF_ID) REFERENCES STAFF_RECORD ) ; ADD ( FOREIG

13、N KEY (PROJ_ID) REFERENCES PROJECT_RECORD ) ; ADD ( FOREIGN KEY (TASK_ID) REFERENCES TASK_TYPE ) ;三、数据库连接配置组件ValueJNDI Namejdbc/TSSDB1、定义JDBC驱动名字:oracle jdbc描述:oracle jdbc driver实现的类名:oracle.jdbc.pool.OracleConnectionPoolDataSource类路径:D:oracleora92jdbclibclasses12.zip2定义数据源名字:TSSDBJNDI名字:jdbc/TSSDB描

14、述:TimeSheet Systems datasource数据源帮助类名字:com.ibm.websphere.rsadapter.OracleDataStoreHelper连接超时时间:1800s3、定义数据源的资源属性URL:jdbc:oracle:thin:192.168.0.204:1521:pcisdb四、Entity Enterprise Java Beans (实体Bean)这部分将描述TSS系统所需的实体Bean;1、TaskType概述这个EJB是用来管理TSS系统中的任务类型,它和数据库中的表TASK_TYPE直接对应CMP FieldsTaskType EJB将包含以下

15、CMP域(字段):Property NameTypetaskIDjava.lang.Stringdescriptionjava.lang.StringupdateUserjava.lang.StringupdateTimejava.sql.Timestamp关联Tasktype EJB和以下实体Bean有关联名称:TaskTimesheetRole NameMultiplicityRole SourceCMR FieldTaskTypeManyTaskTypetaskIDTimeSheetOneTimeSheet类和接口文件TaskType EJB包含以下类和接口文件类/接口类型TaskTyp

16、eBeanEJB Bean Implementation Classjava.lang.StringPrimary KeyTaskTypeLocalEJB Local InterfaceTaskTypeLocalHomeEJB Local Home Interface查询TaskType EJB包含以下查询NameParametersReturn TypeQueryfindAllTaskTypesN/ACollectionselect object(o) from Task o其它配置TaskType EJB包含以下配置配置组件值默认访问方式ws-PessimisticUpdate-Weake

17、stLockAtLoadJNDI名称tss/entity/TaskTypeLocalHomeCMP连接工厂jdbc/TSSDB2、TitleType概述这个EJB是用来管理TSS系统中的任务类型,它和数据库中的表TITLE_TYPE直接对应CMP FieldsTitleType EJB将包含以下CMP域(字段):Property NameTypetitleIDjava.lang.Stringdescriptionjava.lang.StringupdateUserjava.lang.StringupdateTimejava.sql.Timestamp关联TitleType EJB和以下实体Be

18、an有关联名称:TitleTimesheetRole NameMultiplicityRole SourceCMR FieldTitleTypeManyTitleTypetitleIDTimeSheetOneTimeSheet类和接口文件TitleType EJB包含以下类和接口文件类/接口类型TitleTypeBeanEJB Bean Implementation Classjava.lang.StringPrimary KeyTitleTypeLocalEJB Local InterfaceTitleTypeLocalHomeEJB Local Home Interface查询TitleT

19、ype EJB包含以下查询NameParametersReturn TypeQueryfindAllTitleTypesN/ACollectionselect object(o) from Title o其它配置TitleType EJB包含以下配置配置组件值默认访问方式ws-PessimisticUpdate-WeakestLockAtLoadJNDI名称tss/entity/TitleTypeLocalHomeCMP连接工厂jdbc/TSSDB3、Project概述这个EJB是用来管理TSS系统中的任务类型,它和数据库中的表PROJECT_RECORD直接对应CMP FieldsProje

20、ct EJB将包含以下CMP域(字段):Property NameTypeprojIDjava.lang.StringprojNamejava.lang.StringprojRespIDjava.lang.Stringdescriptionjava.lang.StringupdateUserjava.lang.StringupdateTimejava.sql.Timestamp关联Project EJB和以下实体Bean有关联名称:TitleTimesheetRole NameMultiplicityRole SourceCMR FieldProjectManyProjectprojIDTim

21、eSheetOneTimeSheet类和接口文件Project EJB包含以下类和接口文件类/接口类型ProjectBeanEJB Bean Implementation Classjava.lang.StringPrimary KeyProjectLocalEJB Local InterfaceProjectLocalHomeEJB Local Home Interface查询Project EJB包含以下查询NameParametersReturn TypeQueryfindAllProjectsN/ACollectionselect object(o) from Project o其它配

22、置Project EJB包含以下配置配置组件值默认访问方式ws-PessimisticUpdate-WeakestLockAtLoadJNDI名称tss/entity/ProjectLocalHomeCMP连接工厂jdbc/TSSDB4、Staff概述这个EJB是用来管理TSS系统中的任务类型,它和数据库中的表STAFF_RECORD直接对应CMP FieldsStaff EJB将包含以下CMP域(字段):Property NameTypestaffIDjava.lang.StringtitleIDjava.lang.Stringdescriptionjava.lang.Stringupdat

23、eUserjava.lang.StringupdateTimejava.sql.Timestamp关联Staff EJB和以下实体Bean有关联名称:StaffTimesheetRole NameMultiplicityRole SourceCMR FieldStaffManyStaffstaffIDTimeSheetOneTimeSheet类和接口文件Staff EJB包含以下类和接口文件类/接口类型StaffBeanEJB Bean Implementation Classjava.lang.StringPrimary KeyStaffLocalEJB Local InterfaceSta

24、ffLocalHomeEJB Local Home Interface查询Staff EJB包含以下查询NameParametersReturn TypeQueryfindAllStaffsN/ACollectionselect object(o) from Staff o其它配置Staff EJB包含以下配置配置组件值默认访问方式ws-PessimisticUpdate-WeakestLockAtLoadJNDI名称tss/entity/StaffLocalHomeCMP连接工厂jdbc/TSSDB5、TimeSheet概述这个EJB是用来管理TSS系统中的任务类型,它和数据库中的表TIME

25、_SHEET_RECORD直接对应CMP FieldsTimeSheet EJB将包含以下CMP域(字段):Property NameTypesheetIDjava.lang.LongsheetDatejava.sql.TimestampstaffIDjava.lang.StringprojIDjava.lang.StringtaskIDjava.lang.StringspendHoursjava.lang.FloatworkSitejava.lang.Stringdescriptionjava.lang.StringupdateUserjava.lang.StringupdateTimeja

26、va.sql.Timestamp关联Title EJB和以下实体Bean有关联名称:TitleTimesheetRole NameMultiplicityRole SourceCMR FieldTitleTypeManyTitleTypetitleIDTimeSheetOneTimeSheet类和接口文件Title EJB包含以下类和接口文件类/接口类型TimeSheetBeanEJB Bean Implementation Classjava.lang.StringPrimary Key(TimeSheetKey)Primary Key Class(假设由StaffID, SheetDate

27、, tasked 构成关键字)TimeSheetLocalEJB Local InterfaceTimeSheetLocalHomeEJB Local Home Interface查询Title EJB包含以下查询NameParametersReturn TypeQueryfindAllTimeSheetsN/ACollectionselect object(o) from TimeSheet ofindTimeSheetsByStaffIDString staffIDCollectionselect object(o) from TimeSheet o where o.staffID=?1f

28、indTimeSheetsByTaskIDString taskIDCollectionselect object(o) from TimeSheet o where o.taskID=?1其它配置Title EJB包含以下配置配置组件值默认访问方式ws-PessimisticUpdate-WeakestLockAtLoadJNDI名称tss/entity/TimeSheetLocalHomeCMP连接工厂jdbc/TSSDB五、Stateless Session Enterprise Java Bean(无状态会话Bean)1、StaffFacade该会话Bean是用来操作数据表STAFF_

29、RECORD的,它将引用到以下实体Bean:名称链接JNDI绑定描述ejb/StaffStaff(实体Bean)tss/entity/StaffLocalHome引用实体Bean的本地接口(Staff)类和接口文件StaffFacade EJB包含以下类和接口文件类/接口类型StaffFacadeBeanEJB Bean Implementation ClassStaffFacadeLocalEJB Local InterfaceStaffFacadeLocalHomeEJB Local Home Interface包含的方法:方法名称参数返回类型描述createStaffStaffRecor

30、dStaffRecord增加员工modifyStaffStaffRecordStaffRecord修改员工deleteStaffStringboolean删除员工retrieveAllStaffsN/ACollection查询所有员工populateStaffLocalStaffRecordStaffLocalStaffLocal根据记录值得到记录的本地接口其它配置StaffFacade EJB包含以下配置信息配置组件值类型StatelessJNDI名字tss/session/StaffFacadeLocalHome处理类型Container2、ProjectFacade该会话Bean是用来操

31、作数据表PROJECT_RECORD的,它将引用到以下实体Bean:名称链接JNDI绑定描述ejb/ProjectProject(实体Bean)tss/entity/ProjectLocalHome引用实体Bean的本地接口(Project)类和接口文件ProjectFacade EJB包含以下类和接口文件类/接口类型ProjectFacadeBeanEJB Bean Implementation ClassProjectFacadeLocalEJB Local InterfaceProjectFacadeLocalHomeEJB Local Home Interface包含的方法:方法名称参

32、数返回类型描述createProjectProjectRecordProjectRecord增加项目modifyProjectProjectRecordProjectRecord修改项目deleteProjectStringboolean删除项目retrieveAllProjectsN/ACollection查询所有项目populateProjectLocalProjectRecordProjectLocalProjectLocal根据记录值得到记录的本地接口其它配置ProjectFacade EJB包含以下配置信息配置组件值类型StatelessJNDI名字tss/session/Proje

33、ctFacadeLocalHome处理类型Container3、TimeSheetFacade该会话Bean是用来操作数据表TIME_SHEET_RECORD的,它将引用到以下实体Bean:名称链接JNDI绑定描述ejb/TimeSheetTimeSheet(实体Bean)tss/entity/ TimeSheet LocalHome应用本地实体Bean的本地接口(TimeSheet)类和接口文件TimeSheetFacade EJB包含以下类和接口文件类/接口类型TimeSheetFacadeBeanEJB Bean Implementation ClassTimeSheetFacadeLo

34、calEJB Local InterfaceTimeSheetFacadeLocalHomeEJB Local Home Interface包含的方法:方法名称参数返回类型描述createTimeSheetTimeSheetRecordTimeSheetRecord增加工作日志modifyTimeSheetTimeSheetRecordTimeSheetRecord修改工作日志deleteTimeSheetStringboolean删除工作日志retrieveAllTimeSheetsN/ACollection查询所有工作日志approveTimeSheetLong sheetIDString

35、 flagboolean审批工作日志searchTimeSheetString staffIDString projIDString taskIDDate startDateDate endDateCollection查询工作日志populateTimeSheetLocalTimeSheetRecordTimeSheetLocalTimeSheetLocal根据记录值得到记录的本地接口其它配置TimeSheetFacade EJB包含以下配置信息配置组件值类型StatelessJNDI名字tss/session/TimeSheetFacadeLocalHome处理类型Container六、ST

36、RUTS组件TSS系统将使用Struts框架,以下描述TSS系统将使用到的Struts组件。1、Actions父类类名扩展于属性方法描述TSSBaseActionActionN/AN/A该类不包含任何属性及方法,但其它模块用到的Action类都是从这里扩展出来的。2、Action Forms 父类类名扩展于属性方法描述TSSBaseFormValidatorFormString actionValueString targetIDactionValue及targetID的getter和setter方法用来表示显示/输入在JSP页面上的字段3、Action映射4、本地跳转(Local Forwa

37、rds)5、有效性验证七、实用公共类1、公共类Class NameExtendsPropertiesMethodsDescriptionTSSBaseRecordN/Aimplements SerializableN/AN/A这个类不包含任何属性和方法,它是用来供其它record类扩展的。由它扩展而出的record类包含数据库中的数据,可以用于页面展现也可以传送到EJB里。 EJBLocalHomeCacheN/Astatic HashMaphomesMapstatic getHome(String jndiRef)这个类包含了一个静态属性变量HashMap,用它来缓存所有ejb的local

38、home接口。getHome()方法根据ejb的JNDI名字来获取该ejb的local home接口。经过第一次的调用之后,该ejb的local home实例被放到HashMap里缓存起来。后面的调用就直接从缓存中取相应的实例。TSSCacheN/Astatic HashMaptaskTypesMapstatic HashMaptitleTypesMap以及static HashMapworkSiteMap等等static getXXXstatic invalidateXXX(for each Map in TSSCache)这个类是用来缓存系统中不常改变的对象,如:任务类型、职务类型、工作地

39、点等所以用到这些对象的模块都直接从缓存中取值。任何一个模块如修改(包括修改和删除)过这些变量,必须调用invalidateXXX方法清空缓存的值,这样,当一个引用getXXX时,发现对象为空时,系统会执行从数据库重新取值并缓冲的操作。TSSConstantsN/ASee table belowN/A这个类用于存储一些常量,这些常量在整个应用系统中都会被用到。经常放在TSSConstants中存储的常量参见下表2、TSSConstants类TSSConstants存放整个应用系统中使用到的常量PropertyValueDescriptionACTION_VALUE_NEW_SAVENewItem

40、SaveACTION_VALUE_NEW_CREATENewItemCreateACTION_VALUE_MODIFYModifyItemACTION_VALUE_MODIFY_SAVEModifyItemSaveACTION_VALUE_DELETEDeleteItemACTION_VALUE_CANCELCancelActionACTION_VALUE_MENUMenuACTION_VALUE_HOME_PAGEHomePageACTION_VALUE_SEARCHSearchACTION_VALUE_REPORTReportACTION_VALUE_CONFIRMConfirm3、Rec

41、ord Classes类Record Classes对于每个EJB,系统会有一个record class(记录类)与之对应,用于保存每个cmp ejb的内容。Cmp ejb对应的session bean把record class当成参数来处理,同时用把record class当成结果返回给调用它的struts actions.类名称属性描述TaskTypeRecordtaskIDdescriptionupdateUserupdateTimejava.lang.Stringjava.lang.Stringjava.lang.Stringjava.sql.TimestampTitleTypeRec

42、ordtitleIDdescriptionupdateUserupdateTimejava.lang.Stringjava.lang.Stringjava.lang.Stringjava.sql.TimestampProjectRecordprojIDprojNameprojRespIDdescriptionupdateUserupdateTimejava.lang.Stringjava.lang.Stringjava.lang.Stringjava.lang.Stringjava.lang.Stringjava.sql.TimestampStaffRecordstaffIDtitleIDde

43、scriptionupdateUserupdateTimejava.lang.Stringjava.lang.Stringjava.lang.Stringjava.lang.Stringjava.sql.TimestampTimeSheetRecordsheetIDsheetDatestaffIDprojIDtaskIDspendHoursworkSitedescriptionupdateUserupdateTimejava.lang.Longjava.sql.Timestampjava.lang.Stringjava.lang.Stringjava.lang.Stringjava.lang.

44、Floatjava.lang.Stringjava.lang.Stringjava.lang.Stringjava.sql.Timestampetc八、模块设计1、员工信息管理Action:StaffAction类名称:StaffAction.java (Extends TSSBaseAction)方法描述execute()这是Struts的一个标准方法,所有对StaffAction的请求都是从这个方法开始,这个方法会根据actionValue的值确定下一步的操作;类似main()函数StaffAction的execute()方法将请处理以下请求:actionValue=” 或actionVa

45、lue=null;actionValue=PCIConstants.ACTION_VALUE_NEW_CREATEactionValue=PCIConstants.ACTION_VALUE_NEW_SAVEactionValue=PCIConstants.ACTION_VALUE_MODIFYactionValue=PCIConstants.ACTION_VALUE_MODIFY_SAVEactionValue=PCIConstants.ACTION_VALUE_DELETEprocessCreateStaff()当创建新员工时,由execute()方法调用,将新员工信息写入数据库proces

46、sModifyStaff()当修改员工信息时,由execute()方法调用,将修改过的员工信息写入数据库processDeleteStaff()当删除员工信息时,由execute()方法调用,删除该员工信息。Action form: StaffForm类名称:StaffForm.java属性描述String staffID当创建新员工,修改现存员工信息的时候,用于输入员工IDString titleID当创建新员工,修改现存员工信息的时候,用于输入员工职务String description当创建新员工,修改现存员工信息的时候,用于输入员工描述ArrayList staffRecords用于保存所有现存员工的信息(每个员工信息对应的记录类型是StaffRecord),Form的这个属性在StaffAction的每个请求中都会获取一次。其它配置信息Action 映射在这个模块中只要配置一个Action的信息,即StaffAction.配置元素值NameStaffFormPath/StaffScoperequestTypeStaffAction (full package name)input/pages/Staff.jspvalidatefalserolesnull本地跳

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论