




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
0外文原文DefiningmethodologiesfordevelopingJ2EEweb-basedinformationsystems1.IntroductionSoftwaretoolsandpackagesforthenonlinearanalysisofcomplexspatialdynamicsystemsincreasinglyuseWeb-basednetworkingplatformsfortheimplementationoftheiruserinterface,scientificanalysis,distributionofsimulationresults,andinformationexchangeamongscientists.Thereal-timeWeb-basedaccesstononlinearanalysissimulationsoftwarebecomesacriticalpartofmanyappliedsystems.Theintensivetechnologicalchangeinnetworkinghardwareandsoftwareprovidesmorefreedomofchoicesthaninthepast.Therefore,therationalselectionanddevelopmentoftheWebplatformisofincreasingimportanceforthewholeareaofnonlinearanalysisanditsnumerousapplications.ThecurrentstageofWebdevelopmentischaracterizedbytheemergenceofasignificantnumberofopensourceframeworks.FrameworksshiftthefocusofWebdevelopmenttoahigherlevel,allowingthereuseofbasicfunctionalityandthusincreasingtheproductivityofdevelopment.Insomecases,opensourceframeworksdonotprovideasolutiontocommonproblems.Forthisreason,developersbuildtheirowndevelopmentframeworkontopofanopensourceframework.TheaimofthispaperistodescribeadevelopedJava-basedframeworkthatleveragesopensourceframeworksandassistsindevelopingWeb-basedapplications.Byanalyzingsomeexistingopensourceframeworks,thispaperpresentsanewarchitecture,infrastructureandassociatedtechniquesforenhancingandleveragingsomeotherframeworks.Theproposedarchitecturedefinesitsowndevelopmentmethodology,whichisdesignedtoassistincustomdevelopmentprojectsandintegrationprojects.Therearecommonapplicationdesignconcernswhichareoftenusedacrossprojects.Evenacrossuniquefunctionalrequirements,therearecommonlyoccurringpatternsofusecases,whichlendthemselvestodesignanddevelopmentreuse.Thispaperdescribesa“customized”framework,whichhadbeendevelopedinanefforttoidentifysuchcommonapplicationconcernsandidentifydesignpatternsthatcanbeusedbythedevelopers.This1framework,whichwewillrefertoasthedevelopedXYZframework,providesasetofpatternsandtoolsthatwerebuiltonindustrybestpractices,tailoredtocommonapplicationconcerns.Itprovidesanapplicationdevelopmentstack,frompresentationtointegrationlayers.Thispaperarticulatestheseapplicationconcernsandthepatterns,toolsandindustrybestpractices.ThedevelopedXYZframeworkcanbecustomizedtovariousprojectsneeds.ItwasdevelopedandconfiguredbasedonvariousframeworksandtoolssuchasStruts,Spring,HibernateandJUnit.2.Majortechnologiesofthedevelopedframework2.1.LayersandseparationofcodeandconfigurationWebapplicationshavevariousdesignconcernssuchaspresentation,businesslogic,dataaccessandsecurity.Aseparationofdesignconcernsintodistinctcodelayershasseveraladvantagessuchas:easeofmaintenance,theabilitytoimplementgooddesignpatterns,andtheabilitytoselectspecializedtoolsandtechniquesforspecificconcerns.Separatingaprojectintolayerscanresultindependenciesbetweenthoselayers.Forexample,asingle-usecaseinvolvingsimpledataentryandinquiryusuallymustintegratepresentation,businesslogicanddataaccesstogethertodeliverrequiredfunctionality.Therefore,theremustbeawelldefinedstrategytomanagethedependencyrelationships.ThedevelopedXYZframeworkcombinesdesignpatterns,reusablecodeandconfigurationfilestomakethisaseasyaspossible.ThisframeworkusesSpringsInversionofControltomanagedependencies.TheSpringFrameworkprovidesawaytotietogethertheobjectsthatmakeupanapplication.ItaccomplishesthisgoalwiththeSpringApplicationContext,whichisastrategyformanagingdependenciesbetweenobjects.Springusesdependencyinjectionandmethodinterceptiontechniquesdescribedbelow.Thecodethatwewriteisdependentontheobjectsituses.Itisresponsibleforcreatingtheseobjects.Thismayresultintightcoupling,butwewouldpreferthatourcodebelooselycoupled.Dependencyinjectionisatechniquewhichhelpsustoaccomplishthis.DependencyinjectionisaformofInversionofControl(IoC).Whenapplicationsusedependencyinjection,thecodebecomesmuchcleanerandeasiertofollow.Itisalsolooselycoupled,allowingforeasierconfigurationandtesting.TheXYZframeworkusesseveralSpringapplicationcontextfilestodefinedependenciesbetweenthelayers.MethodinterceptionisaconceptofAspectOrientedProgramming(AOP).SpringAOPimplements2methodinterceptionthroughJDKdynamicproxies.TheXYZframeworkusesSpringAOPtomanageconcernssuchastransactionmanagementandperformancemonitoring.ThedevelopedXYZframeworkconsistsoftwodistinctparts:codeandconfiguration.Coderesidesinaparticularapplicationlayerandfocusesonaparticularpieceoftheapplicationsolution.Thiscouldbeinteractingwithadatabase,orpresentingdatatothescreen.Configurationgluesthevariouslayersoftheapplicationtogether.Separatingconfigurationfromcodeallowsustomanageconfigurationindependently,givingustheflexibilityofapplyingdifferentconfigurationstothesamecodebase.Forexample,aDataAccessObjects(DAO)implementationknowsthatitisusingJDBCtoconnecttoadatabasethroughadatasource,butitdoesnotknowanythingabouttheimplementationofthatdatasource.ItmaycomefromaJavaNamingandDirectoryInterface(JNDI)contextorbederivedfromadrivermanager.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,wecanuseanalternateconfigurationsettargetedspecifically3towardsdevelopment.Thisrelievesusfromworryingabouttheavailabilityofexternalsystems,whichareirrelevanttosolvingimmediatedevelopmentneeds.ThedevelopedXYZframeworkdefinestwoconfigurationsets:defaultandstandalone.Wecanalsocustomizeourapplicationbyaddingadditionalconfigurationsetsbasedonourprojectneeds.ThedefaultconfigurationsetconnectstothedevelopmentdatabaseusingtheDataSourcedefinedinJNDI.ItusesfullydevelopedapplicationservicesandDAOs.Thestandaloneconfigurationsetisthemostflexibleenvironmentfordevelopment.Thisconfigurationset:(1)connectstoeitheralocallyinstalleddatabaseorthedevelopmentdatabaseusingaDriverManagerDataSource;(2)usesSpringsDataSourceTransactionMan-agerforlocaltransactionmanagement;(3)usesfullydevelopedapplicationServicesandDAOs;and(4)fullywiredSpringapplicationcontextscanberunandtestedentirelyoutsideoftheapplicationserver.ThedevelopedXYZframeworkisconfiguredbyitsapplicationcontext.TheapplicationcontextmaybedefinedinoneormoreXMLfiles.AconfigurationsetisasetofXMLfilesthatdefineoneapplicationcontext.Theconfigurationsetconsistsoftwoparts:serviceandWeb.Theservicepartdefinesservices,DAOs,andresourcesfortheserviceandintegrationlayers.TheWebpartdefinescomponentsforthepresentationlayer.Aconfigurationsetcannotbecompletewithoutbothoftheseparts.ThedevelopedXYZframeworkconfigurationsetsaregroupedtogetherbywhatSpringcallsabeanreferencecontextdefinedinthefilesbeanRefContext.xmlandapplicationCont-extMperties.ThebeanRefContext.xmlfiledefinestheservicepartofallconfigurationsets.Thisfileislocatedinthesrc/configdirectoryoftheserviceproject.Applicationcontextfilessharedbetweenconfigurationsetsarealsolocatedinthisdirectory.Inaddition,eachconfigurationsethasitsownsubdirectory,whichcontainsfilesspecifictoit.ServicesandDAOs,forinstance,aresharedbetweenconfigurationsets,whilesupportingservices(likedatasources)belonginthesubdirectories.XMLfilesdefinetheSpringbeansinthisapplicationbyusingthetag.ASpringbeanisaJavaobjectcreatedandinitializedbytheapplicationcontext.2.2.ClassesanddependenciesUsingthedevelopedXYZframework,thefollowingcodeandconfigurationartifactswillbetypicallyrequiredtodevelopauserinterfacescreen:(a)Action,ActionFormclassesand4validation.xmlentries;(b)serviceinterfaceandimplementationclass;(c)DAOinterfaceandimplementationclass;(d)dependencymanagementbetweenalloftheabove.Whenstartingdevelopmentforausecase,wemustbeawareoftheneedofalltheseclassesandtheirdependenciesupfront.2.3.TestingtechnologyTestingshouldbeanintegralpartofthedevelopmentprocess.ForapplicationsbuiltusingthedevelopedXYZframework,unittestingmeanstestingmethodsofasingleclassintheserviceorintegrationlayer.Presentationlayerartifacts(Actionclasses)arenottakenupforunittesting.Thepurposeofthistestistoensurethatthebehaviorencapsulatedbytheclassworksasexpectedwhentestingintegrationwithothercomponents.Unittestsinapplications,developedusingthedevelopedXYZframework,arebasedontheJUnitframework.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;andalsobyenablingeasy5configurationofapplicationtoadapttotestingneeds.UnittestscanberunlikeanyJUnittest.Thespeciallydevelopeddefault“buildscript”providesatasktorununittests.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)CreateanewJSPwithadefaulthiddenfieldcalled“actionType”foruseinhandlinguseractionsthatareexpectedtooccuronthepage.(2)CreateanewActionclassthatextendsthistemplateActionclass.WemustspecifydependenciesonActionFormspecificmethodsthathandleuseractionsrepresentedby6valuesinhiddenfield“actionType”.AfterthatwecandeclarepermissionsthatarerequiredinordertoaccessthisActionclass.ThisisdoneintheSpringconfigurationfiles.(3)CreateanewActionFormclassandspecifyvalidationrulesasrequiredusingXDocletannotations.OncetheJSP,ActionandActionFormarecreated,itisnecessarytoruntheAntscripttoregeneratethe“struts-config.xml”file.2.5.DatabaseaccessApplicationsbuiltwiththedevelopedXYZframeworksupporttheuseofdirectJDBCandHibernateframeworktopersistinsendingdatatorelationaldatabases.TheapplicationisconfiguredwiththenecessarySpringcontextfiles.DAOsthatusedirectJDBCmustextendfromSpringframeworksJdbcDaoSupport.javaclass.Similarly,DAOsthatuseHibernatemustextendfromSpringframeworksHibernateDaoSupport.javaclass.2.6.ConfigurationthroughannotationThedevelopedXYZframeworkusestheSpringframeworktomaintaindependenciesbetweencodeartifactsinapplications.Someofthesedependencies(e.g.betweenActionandActionForm)areconfiguredin“struts-config.xml”,whilesomeothers(e.g.betweenServiceandDAO)areconfiguredinSpringapplicationcontextfiles(applicationContext.xml).Inateamenvironmenttheseconfigurationfilesaresharedbydevelopers.Thatiswhyversionconflictsontheseconfigurationfilesmightoccur.ThedevelopedXYZframeworkprovidesanewefficientapproachthatusesspecialannotationstospecifyallofthesedependencies.Byusingtheseannotations,configurationsbecomesimplerandconflictingchangestoconfigurationartifactsareavoided.3.ServicesofthedevelopedframeworkThedevelopedXYZframeworkpromotestheuseofPlain-Old-Java-Objects(POJOs)toimplementbusinesslogic.Businesslogicmustbedeclaredasinterfaces.Allserviceimplementationsmustimplementoneormorebusinessinterfaces.Itisrecommendedthattheservicelayerthrowscustombusinessexceptionswhentherearebusinessrulevalidationerrors.ThedevelopedXYZframeworkadoptsadeclarativetransactionmanagementapproachbasedontheSpringframework.ThisisimplementedusingAspectOrientedProgramming(AOP).ThedevelopedXYZframeworkpromotesagoodpracticeofseparatingthedeploymentinterface(contractwithserviceconsumers)fromtheserviceinterface(contract7representingapplicationbusinesslogic).DeploymentinterfaceisaJavainterfacethatrepresentstheserviceexposedintheWSDL.Theclassthatimplementsthisinterfacealwaysmustdelegaterequeststotheclassthatimplementstheserviceinterface.Thisensuresthatallbusinesslogicismaintainedatoneplaceinthecorrectlayer.ServiceinterfaceisaJavainterfacethatrepresentsbusinesslogic.Inmostcasesthedeploymentinterfacewillcontainasubsetofmethodsfromtheserviceinterface.ApacheAxis1.2.4WebserviceframeworkisthecurrentstandardforWebservices.WhendevelopingWebservices,therearetwodistinctapproaches:contractfirstandcontractlast.ThedifferencebetweencontractfirstandcontractlastapproachesliesinwhethertheWSDLiscreatedfirstorwhetheritisgeneratedfromcode.ContractfirstapproachisagoodpracticefordevelopingWebservices,whentheserviceconsumerandproviderareexternalvendorswhomightimplementtheWebserviceusingdifferenttechnologiesfromeachother(theymayuse.NETinsteadofJava).4.MiddlelayerintegrationThereareseveraltechniquesforintegratingwiththeexternalresourcessuchasdatabasesandWebservice.ThedevelopedXYZframeworkusesthesetechniquesinalogicallayercalledtheintegrationlayer.Thedesigngoalsforthislayerare:(1)AccesstodatabasesusingJDBCorHibernateshouldbeencapsulatedinDataAccessObjects(DAO).(2)ConsumingWebservicesshouldbeassimpleaspossible.(3)Allconversionofexternaldataformatsintoapplicationdomainobjectsshouldberestrictedtothislayer.(4)Unittestingclassesinthislayershouldbesimpleandeasytodo.ThedevelopedXYZframeworksupportstheuseofHibernateanddirectJDBCcallstoaccessrelationaldatabases.ItisrecommendedtouseSpringframeworkstemplateclasses:JdbcTemplateandHibernateTemplate.WhenusingdirectJDBCtoaccessrelationaldatabases,itisrecommendedthattheapplicationsDAOsextendfromSpringframeworksJdbcDaoSupport.TheJdbcTemplateclassmanagesresourcesusedinaccessingdatabases(forexamplePreparedStatement).ThedevelopedXYZframeworkinsertsthedatasourceintoDAOsusingapplicationconfigurationfiles.WhenusingHibernatetoaccessrelationaldatabases,theHibernateSessionFactoryisinjectedintotheapplicationDAOsthroughapplicationconfigurationfiles.5.Developmentlifecycle8ThedevelopedXYZframeworksemphasisonstructureenablescleardefinitionofrolesandtheirinteractionsinadevelopmentteam.Threerolesaredescribedbelow.Aninteractionbetweensuchrolesiscriticaltothesuccessfulcompletionofapplicationdevelopment.(a)FrontenddevelopersarefocusedondevelopingJSPs,Action/ActionFormclassesandexposingWebservices.(b)Servicesdevelopersarefocusedondevelopingapplicationservicesandintegratingthedifferentpartsoftheapplicationusedbytheseservices.(c)IntegrationdevelopersarefocusedondevelopingintegrationartifactssuchasDAOs,orconsumingWebservices.Oneofthebasicproblemsindevelopmentishowtodevelopandintegratecodewhenitsdependentcomponentsarenotreadyoravailable.ThedevelopedXYZframeworkresolvesthisproblembyprovidingastructuretodeclarativelyinject“mockobjects”andalsoreplace“mockobjects”withrealobjectsasthedevelopmentlifecycleprogresses.Thisispossibleduetotheabilitytoconfigureourapplicationusingdifferentconfigurationsets.Theframeworkenablesteamstomaketestinganintegralpartofthedevelopmentprocess.ThisismadepossiblebywritingandrunningJUnittests.Theframeworkisfocusedontestingapplicationservicesandtheirdependencies.ApplicationsaredeployedinasingleEnterpriseArchive(EAR)file.Thedevel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智能设备安装与销售一体化服务合同范本
- 2025年度农业科技成果转化与应用推广合同
- 2025年新型城镇化建设中电缆敷设施工及售后服务合同
- 2025年度航天科技咨询服务合同
- 2025年度新型生态挡土墙施工劳务合同模板
- 2025保密协议培训与知识产权战略规划合同
- 2025二手房暂不过户房屋租赁与转租合同范本
- 2025版商厅出租合同附租金递增条款
- 2025贷款合同范本旅游产业开发贷款合作
- 2025版实习岗位需求实习合同范本
- GB/T 35568-2017中国荷斯坦牛体型鉴定技术规程
- GB/T 34239-2017聚3-羟基丁酸-戊酸酯/聚乳酸(PHBV/PLA)共混物长丝
- GB/T 28707-2012碟簧支吊架
- GB/T 2791-1995胶粘剂T剥离强度试验方法挠性材料对挠性材料
- GB/T 25702-2010复摆颚式破碎机颚板磨耗
- GB/T 13384-2008机电产品包装通用技术条件
- 超分子化学简介课件
- 流体力学-流体力学基本方程课件
- 粮油产品购销合同
- YYT 0681.2-2010 无菌医疗器械包装试验方法 第2部分:软性屏障材料的密封强度
- 《中华人民共和国工会法》工会法律知识竞赛题库120题(含答案解析)
评论
0/150
提交评论