已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
0外文原文DefiningmethodologiesfordevelopingJ2EEweb-basedinformationsystemsAbstractThispaperdescribestheconceptsbehindthedevelopedframeworkforJava-basedprojectsanddescribeshowitcanbeusedforITprojects.Thedevelopedframeworkwascreatedbecausemanycommondesignanddevelopmenttasksarebeingrepeatedindifferentways,andarenotalwaysconsistentwithbestpractices.Wehaveidentifiedcommonapplicationconcernsanddelivereddesignpatternsandtoolsthatrepresenteffectivesolutions.Thedevelopedframeworkdelivers:(1)anapplicationdevelopmentstackstartingfromtheuserinterfacetodataintegration;(2)anarchitecture,infrastructureandassociatedtechniquesforenhancingandleveragingsomeotherframeworks.Theproposedarchitecturedefinesadevelopmentmethodology,whichisdesignedtoassistincustomdevelopmentprojects.1.IntroductionSoftwaretoolsandpackagesforthenonlinearanalysisofcomplexspatialdynamicsystemsincreasinglyuseWeb-basednetworkingplatformsfortheimplementationoftheiruserinterface,scientificanalysis,distributionofsimulationresults,andinformationexchangeamongscientists.Thereal-timeWeb-basedaccesstononlinearanalysissimulationsoftwarebecomesacriticalpartofmanyappliedsystems.Theintensivetechnologicalchangeinnetworkinghardwareandsoftware1providesmorefreedomofchoicesthaninthepast2.Therefore,therationalselectionanddevelopmentoftheWebplatformisofincreasingimportanceforthewholeareaofnonlinearanalysisanditsnumerousapplications.ThecurrentstageofWebdevelopmentischaracterizedbytheemergenceofasignificantnumberofopensourceframeworks.FrameworksshiftthefocusofWebdevelopmenttoahigherlevel,allowingthereuseofbasicfunctionalityandthusincreasingtheproductivityofdevelopment.1Insomecases,opensourceframeworksdonotprovideasolutiontocommonproblems.Forthisreason,developersbuildtheirowndevelopmentframeworkontopofanopensourceframework.TheaimofthispaperistodescribeadevelopedJava-basedframeworkthatleveragesopensourceframeworksandassistsindevelopingWeb-basedapplications.Byanalyzingsomeexistingopensourceframeworks,thispaperpresentsanewarchitecture,infrastructureandassociatedtechniquesforenhancingandleveragingsomeotherframeworks.Theproposedarchitecturedefinesitsowndevelopmentmethodology,whichisdesignedtoassistincustomdevelopmentprojectsandintegrationprojects.Therearecommonapplicationdesignconcernswhichareoftenusedacrossprojects.Evenacrossuniquefunctionalrequirements,therearecommonlyoccurringpatternsofusecases,whichlendthemselvestodesignanddevelopmentreuse.Thispaperdescribesacustomizedframework,whichhadbeendevelopedinanefforttoidentifysuchcommonapplicationconcernsandidentifydesignpatternsthatcanbeusedbythedevelopers.Thisframework,whichwewillrefertoasthedevelopedXYZframework,providesasetofpatternsandtoolsthatwerebuiltonindustrybestpractices,tailoredtocommonapplicationconcerns.Itprovidesanapplicationdevelopmentstack,frompresentationtointegrationlayers.Thispaperarticulatestheseapplicationconcernsandthepatterns,toolsandindustrybestpractices.ThedevelopedXYZframeworkcanbecustomizedtovariousprojectsneeds.ItwasdevelopedandconfiguredbasedonvariousframeworksandtoolssuchasStruts,Spring,HibernateandJUnit.2.Majortechnologiesofthedevelopedframework2.1.LayersandseparationofcodeandconfigurationWebapplicationshavevariousdesignconcernssuchaspresentation,businesslogic,dataaccessandsecurity.Aseparationofdesignconcernsintodistinctcodelayershasseveraladvantagessuchas:easeofmaintenance,theabilitytoimplementgooddesignpatterns,andtheabilitytoselectspecializedtoolsandtechniquesforspecificconcerns.Separatingaprojectintolayerscanresultindependenciesbetweenthoselayers.For2example,asingle-usecaseinvolvingsimpledataentryandinquiryusuallymustintegratepresentation,businesslogicanddataaccesstogethertodeliverrequiredfunctionality3.Therefore,theremustbeawelldefinedstrategytomanagethedependencyrelationships.ThedevelopedXYZframeworkcombinesdesignpatterns,reusablecodeandconfigurationfilestomakethisaseasyaspossible.ThisframeworkusesSpringsInversionofControltomanagedependencies.TheSpringFramework4providesawaytotietogethertheobjectsthatmakeupanapplication.ItaccomplishesthisgoalwiththeSpringApplicationContext,whichisastrategyformanagingdependenciesbetweenobjects.Springusesdependencyinjectionandmethodinterceptiontechniquesdescribedbelow.Thecodethatwewriteisdependentontheobjectsituses.Itisresponsibleforcreatingtheseobjects.Thismayresultintightcoupling,butwewouldpreferthatourcodebelooselycoupled.Dependencyinjectionisatechniquewhichhelpsustoaccomplishthis.DependencyinjectionisaformofInversionofControl(IoC)5.Whenapplicationsusedependencyinjection,thecodebecomesmuchcleanerandeasiertofollow.Itisalsolooselycoupled,allowingforeasierconfigurationandtesting.TheXYZframeworkusesseveralSpringapplicationcontextfilestodefinedependenciesbetweenthelayers.MethodinterceptionisaconceptofAspectOrientedProgramming(AOP)6.SpringAOPimplementsmethodinterceptionthroughJDKdynamicproxies.TheXYZframeworkusesSpringAOPtomanageconcernssuchastransactionmanagementandperformancemonitoring.ThedevelopedXYZframeworkconsistsoftwodistinctparts:codeandconfiguration.Coderesidesinaparticularapplicationlayerandfocusesonaparticularpieceoftheapplicationsolution.Thiscouldbeinteractingwithadatabase,orpresentingdatatothescreen.Configurationgluesthevariouslayersoftheapplicationtogether.Separatingconfigurationfromcodeallowsustomanageconfigurationindependently,givingustheflexibilityofapplyingdifferentconfigurationstothesamecodebase.Forexample,aDataAccessObjects(DAO)implementationknowsthatitisusingJDBCtoconnecttoadatabasethroughadatasource,butitdoesnotknowanythingabouttheimplementationofthatdatasource.ItmaycomefromaJavaNamingandDirectoryInterface(JNDI)contextorbe3derivedfromadrivermanager.Itmaypointtotheremotedatabaseoralocaldatabase.Regardlessofwherethedatasourcecomesfrom,theDAOimplementationwilloperateonthedatasourceinthesamemanner.Likewise,aServiceobjectmaydependonaDAO,butitdoesnotknowwhethertheDAOisimplementedviaHibernate,straightJDBC,oraWebservice.TheserviceobjectinteractswiththeDAOinthesamemanner,regardlessoftheDAOsimplementation.SpringgivesusawaytomanageourapplicationsentireconfigurationthroughaSpringapplicationcontext,definedbyasetofXMLfiles.Wecoulddefinetheapplicationcontextinonefile.However,bydefiningitingroupsofsmallerfiles,wecansimplifyconfigurationmanagement.Alogicalsetofsuchapplicationcontextfileswhichformsacompleteapplicationconfigurationiscalledaconfigurationset.DuringthedevelopmentofJava-basedenterpriseapplicationsthestandardconfigurationiswhereaframeworksconfigurationsetusesexternalresourcessuchasdatasourcesandJNDIresources.Thistypeofconfigurationsometimescancreateproblemswith:(1)Anincompletedatabasethathasnotyetbeenloaded.Developersmaywanttotestthedisplayofcertaintypesofdata,butiftheunderlyingdatabasehasnotyetbeencompleted,theywillnotbeabletodothis.(2)ServicesorDAOsthatmaynothavebeendevelopedyet.IntegratingwithunfinishedservicesorDAOsmayhaltdevelopment.Theseissuesdecreaseproductivity.ThedevelopedXYZframeworkhasseparateditsconfigurationfromitscode,wecanuseanalternateconfigurationsettargetedspecificallytowardsdevelopment.Thisrelievesusfromworryingabouttheavailabilityofexternalsystems,whichareirrelevanttosolvingimmediatedevelopmentneeds.ThedevelopedXYZframeworkdefinestwoconfigurationsets:defaultandstandalone.Wecanalsocustomizeourapplicationbyaddingadditionalconfigurationsetsbasedonourprojectneeds.ThedefaultconfigurationsetconnectstothedevelopmentdatabaseusingtheDataSourcedefinedinJNDI.ItusesfullydevelopedapplicationservicesandDAOs.Thestandaloneconfigurationsetisthemostflexibleenvironmentfordevelopment.This4configurationset:(1)connectstoeitheralocallyinstalleddatabaseorthedevelopmentdatabaseusingaDriverManagerDataSource;(2)usesSpringsDataSourceTransactionManagerforlocaltransactionmanagement;(3)usesfullydevelopedapplicationServicesandDAOs;and(4)fullywiredSpringapplicationcontextscanberunandtestedentirelyoutsideoftheapplicationserver.ThedevelopedXYZframeworkisconfiguredbyitsapplicationcontext.TheapplicationcontextmaybedefinedinoneormoreXMLfiles.AconfigurationsetisasetofXMLfilesthatdefineoneapplicationcontext.Theconfigurationsetconsistsoftwoparts:serviceandWeb.Theservicepartdefinesservices,DAOs,andresourcesfortheserviceandintegrationlayers.TheWebpartdefinescomponentsforthepresentationlayer.AconfigurationsetcannotbecompletewithoutbothoftheseParts.ThedevelopedXYZframeworkconfigurationsetsaregroupedtogetherbywhatSpringcallsabeanreferencecontextdefinedinthefilesbeanRefContext.xmlandapplicationContextMperties.ThebeanRefContext.xmlfiledefinestheservicepartofallconfigurationsets.Thisfileislocatedinthesrc/configdirectoryoftheserviceproject.Applicationcontextfilessharedbetweenconfigurationsetsarealsolocatedinthisdirectory.Inaddition,eachconfigurationsethasitsownsubdirectory,whichcontainsfilesspecifictoit.ServicesandDAOs,forinstance,aresharedbetweenconfigurationsets,whilesupportingservices(likedatasources)belonginthesubdirectories.XMLfilesdefinetheSpringbeansinthisapplicationbyusingthebeantag.ASpringbeanisaJavaobjectcreatedandinitializedbytheapplicationcontext.2.2.ClassesanddependenciesUsingthedevelopedXYZframework,thefollowingcodeandconfigurationartifactswillbetypicallyrequiredtodevelopauserinterfacescreen:(a)Action,ActionFormclassesandvalidation.xmlentries;(b)serviceinterfaceandimplementationclass;(c)DAOinterfaceandimplementationclass;(d)dependencymanagementbetweenalloftheabove.Whenstartingdevelopmentforausecase,wemustbeawareoftheneedofalltheseclassesandtheirdependenciesupfront.52.3.TestingtechnologyTestingshouldbeanintegralpartofthedevelopmentprocess.ForapplicationsbuiltusingthedevelopedXYZframework,unittestingmeanstestingmethodsofasingleclassintheserviceorintegrationlayer.Presentationlayerartifacts(Actionclasses)arenottakenupforunittesting.Thepurposeofthistestistoensurethatthebehaviorencapsulatedbytheclassworksasexpectedwhentestingintegrationwithothercomponents.Unittestsinapplications,developedusingthedevelopedXYZframework,arebasedontheJUnitframework7.Unlikeunittests,integrationtestsdorequirecodedependenciestobeavailable.Thepurposeofthistestistoensurethattheintegrationbetweendifferentclasses(developedbydifferentdevelopers)worksasexpected.DuringtheFunctionalTestingprocess,thefocusisontestingfunctionalityoftheapplicationbyusingdatatodepictdifferentscenarios.FunctionaltestingtypicallyinvolvestestingclassesintheServicelayerwithdifferentdata.Itcanalsobeperformedbytestingtheuserinterfacelayerandbyusingrealdependencies.Inordertoperformdifferenttypesoftesting,theapplicationbeingdevelopedmustbetestable.Letuslistsomeofthebasiccharacteristicsofatestableapplication.(1)Easeofdevelopingunitandintegrationtests.Weshouldbeabletounittestwithoutnecessarilyusingdatasources,orqueues.Also,weshouldbeabletomockdependenciesofcodeundertest.(2)Easeofsimulatingvarioustestscenariosforfunctionaltesting.(3)Easeofre-runningalltestsrepeatedlyoverthelifecycleoftheapplication.(4)Cleanseparationoftestingcodefromapplicationcode.Awellstructuredapplicationthatseparatesdesignconcernssuchaspresentation,servicesanddataaccessisimportantfordesigningtestableapplications.Applicationcodingstartswithgetters,setters,variablesetc.,whicharethenintegratedtoprovidetherequiredsolution.Unittestsareafundamentalbuildingblockforanytestingapproach.ThedevelopedXYZframeworksdesignfacilitatesdevelopmentoftestableapplicationsby:providingtestingtemplateclassesthathelptocreateunittests;andalsobyenablingeasyconfigurationofapplicationtoadapttotestingneeds.Unittestscanberunlikeany6JUnittest.Thespeciallydevelopeddefaultbuildscriptprovidesatasktorununittests.ThistaskcanbecalledwhengeneratinganEARfilefordeploymentorcanberunseparately.2.4.WebpresentationdesignThedevelopedXYZframeworkusestheStrutsframeworkconceptsandJavaScripttoimplementpresentationconcernsandprovidesadditionalfeaturesthatcanbeextendedforuseinprojects.WhenusingtheStrutsframeworkfordevelopment,atfirstwesetuptheActionServletinweb.xml;thenwesetupconfiguration,actionmappings,formbeansandlocalforwardsinthestruts-config.xml;andfinallywesetupvalidationrulesinvalidation.xml.ThisapproachhasbeenchangedinapplicationsthatwerebuiltusingthedevelopedXYZframework,suchthatdevelopersmustnotdirectlyeditthestruts-config.xmlorvalidation.xml.InsteadwespecifythisinformationasXDocletannotationsintheActionandActionFormclassesdirectly.Thisinformationisthentransferredintothestruts-config.xmlandvalidation.xmlbyrunningtheAntscript.Therearetwotypesofvalidationsthatarerequired:dataformatvalidationandbusinesslogicvalidation.Dataformatvalidationsarebestdoneinthepresentationlayer,whilebusinesslogicvalidationsarebestdoneintheserviceslayer.Businesslogicvalidationerrors,whichoccurintheservicelayer,shouldbehandledbythrowingcustomexceptions.Thefollowingaredesigngoalsforthepresentationlayer:(1)ThereisonlyoneActionclassascendingoneActionFormperJSP.AsingleWebpagemustallbehandledinasingleActionclass.(2)DependenciesandvalidationrulesarespecifiedusingXDocletannotations.(3)Developersshouldavoidorminimizetheuseofsessionobjects,becauseithindersscalability.TheXYZframeworkprovidesadefaulttemplateActionclassthatcontainsasolutiontotheabovementioneddesigngoalsforthislayer.ThefollowingaretypicalcodeartifactsrequiredfordevelopingaWebpage:(1)CreateanewJSPwithadefaulthiddenfieldcalledactionTypeforuseinhandlinguseractionsthatareexpectedtooccuronthepage.7(2)CreateanewActionclassthatextendsthistemplateActionclass.WemustspecifydependenciesonActionFormspecificmethodsthathandleuseractionsrepresentedbyvaluesinhiddenfieldactionType.AfterthatwecandeclarepermissionsthatarerequiredinordertoaccessthisActionclass.ThisisdoneintheSpringconfigurationfiles.(3)CreateanewActionFormclassandspecifyvalidationrulesasrequiredusingXDocletannotations.OncetheJSP,ActionandActionFormarecreated,itisnecessarytoruntheAntscripttoregeneratethestruts-config.xmlfile.2.5.DatabaseaccessApplicationsbuiltwiththedevelopedXYZframeworksupporttheuseofdirectJDBCandHibernateframeworktopersistinsendingdatatorelationaldatabases.TheapplicationisconfiguredwiththenecessarySpringcontextfiles.DAOsthatusedirectJDBCmustextendfromSpringframeworksJdbcDaoSupport.javaclass.Similarly,DAOsthatuseHibernatemustextendfromSpringframeworksHibernateDaoSupport.javaclass.2.6.ConfigurationthroughannotationThedevelopedXYZframeworkusestheSpringframeworktomaintaindependenciesbetweencodeartifactsinapplications.Someofthesedependencies(e.g.betweenActionandActionForm)areconfiguredinstruts-config.xml,whilesomeothers(e.g.betweenServiceandDAO)areconfiguredinSpringapplicationcontextfiles(applicationContext.xml).Inateamenvironmenttheseconfigurationfilesaresharedbydevelopers.Thatiswhyversionconflictsontheseconfigurationfilesmightoccur.ThedevelopedXYZframeworkprovidesanewefficientapproachthatusesspecialannotationstospecifyallofthesedependencies.Byusingtheseannotations,configurationsbecomesimplerandconflictingchangestoconfigurationartifactsareavoided.3.ServicesofthedevelopedframeworkThedevelopedXYZframeworkpromotestheuseofPlain-Old-Java-Objects(POJOs)toimplementbusinesslogic.Businesslogicmustbedeclaredasinterfaces.Allservice8implementationsmustimplementoneormorebusinessinterfaces.Itisrecommendedthattheservicelayerthrowscustombusinessexceptionswhentherearebusinessrulevalidationerrors.ThedevelopedXYZframeworkadoptsadeclarativetransactionmanagementapproachbasedontheSpringframework8.ThisisimplementedusingAspectOrientedProgramming(AOP).ThedevelopedXYZframeworkpromotesagoodpracticeofseparatingthedeploymentinterface(contractwithserviceconsumers)fromtheserviceinterface(contractrepresentingapplicationbusinesslogic).DeploymentinterfaceisaJavainterfacethatrepresentstheserviceexposedintheWSDL.Theclassthatimplementsthisinterfacealwaysmustdelegaterequeststotheclassthatimplementstheserviceinterface.Thisensuresthatallbusinesslogicismaintainedatoneplaceinthecorrectlayer.ServiceinterfaceisaJavainterfacethatrepresentsbusinesslogic.Inmostcasesthedeploymentinterfacewillcontainasubsetofmethodsfromtheserviceinterface.ApacheAxis1.2.4WebserviceframeworkisthecurrentstandardforWebservices.WhendevelopingWebservices,therearetwodistinctapproaches9:contractfirstandcontractlast.ThedifferencebetweencontractfirstandcontractlastapproachesliesinwhethertheWSDLiscreatedfirstorwhetheritisgeneratedfromcode.ContractfirstapproachisagoodpracticefordevelopingWebservices,whentheserviceconsumerandproviderareexternalvendorswhomightimplementtheWebserviceusingdifferenttechnologiesfromeachother(theymayuse.NETinsteadofJava)10.4.MiddlelayerintegrationThereareseveraltechniquesforintegratingwiththeexternalresourcessuchasdatabasesandWebservice.ThedevelopedXYZframeworkusesthesetechniquesinalogicallayercalledtheintegrationlayer.Thedesigngoalsforthislayerare:(1)AccesstodatabasesusingJDBCorHibernateshouldbeencapsulatedinDataAccessObjects(DAO).(2)ConsumingWebservicesshouldbeassimpleaspossible.(3)Allconversionofexternaldataformatsintoapplicationdomainobjectsshouldberestrictedtothislayer.(4)Unittestingclassesinthislayershouldbesimpleandeasytodo.9ThedevelopedXYZframeworksupportstheuseofHibernateanddirectJDBCcallstoaccessrelationaldatabases.ItisrecommendedtouseSpringframeworkstemplateclasses:JdbcTemplateandHibernateTemplate.WhenusingdirectJDBCtoaccessrelationaldatabases,itisrecommendedthattheapplicationsDAOsextendfromSpringframeworksJdbcDaoSupport.TheJdbcTemplateclassmanagesresourcesusedinaccessingdatabases(forexamplePreparedStatement).ThedevelopedXYZframeworkinsertsthedatasourceintoDAOsusingapplicationconfigurationfiles.WhenusingHibernatetoaccessrelationaldatabases,theHibernateSessionFactoryisinjectedintotheapplicationDAOsthroughapplicationconfigurationfiles.5.DevelopmentlifecycleThedevelopedXYZframeworksemphasisonstructureenablescleardefinitionofrolesandtheirinteractionsinadevelopmentteam.Threerolesaredescribedbelow.Aninteractionbetweensuchrolesiscriticaltothesuccessfulcompletionofapplicationdevelopment.(a)FrontenddevelopersarefocusedondevelopingJSPs,Action/ActionFormclassesandexposingWebservices.(b)Servicesdevelopersarefocusedondevelopingapplicationservicesandintegratingthedifferentpartsoftheapplicationusedbytheseserv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年西安电力机械制造公司机电学院单招(计算机)考试备考题库及答案1套
- 2026年平顶山文化艺术职业学院单招职业适应性测试题库附答案详解
- 2026年黄河交通学院单招综合素质考试题库附答案
- 2026年辽宁省朝阳市单招职业倾向性考试题库附答案
- 2025河北雄安容西青禾幼儿园、临泉幼儿园教师见习岗招聘(公共基础知识)综合能力测试题附答案解析
- 2026年江汉艺术职业学院单招职业适应性测试题库及参考答案详解1套
- 2026年西昌民族幼儿师范高等专科学校单招职业适应性考试模拟测试卷附答案
- 2026年黑龙江护理高等专科学校单招职业技能考试题库及参考答案详解一套
- 2026年江苏护理职业学院单招职业倾向性测试题库附答案详解
- 2026年苏州高博软件技术职业学院单招职业技能测试题库含答案详解
- 2025年低压电工证题库(详细版)
- 2025年计算机应用基础期末考试试题
- 破产管理人培训课件大纲
- 冷菜承包协议书范本
- 2025至2030中国正畸矫治器行业项目调研及市场前景预测评估报告
- 气血不足的课件
- 乌兰木伦村“煤海探秘”工业旅游开发方案探索
- 2025地球小博士知识竞赛试题附答案
- 2025广东省南粤交通投资建设有限公司招聘笔试历年备考题库附带答案详解试卷2套
- 2025年公营养师(四级)试题及答案
- 2025年国考《行测》全真模拟试卷一及答案
评论
0/150
提交评论