外文翻译-定义了开发J2EE Web信息系统的方法_第1页
外文翻译-定义了开发J2EE Web信息系统的方法_第2页
外文翻译-定义了开发J2EE Web信息系统的方法_第3页
外文翻译-定义了开发J2EE Web信息系统的方法_第4页
外文翻译-定义了开发J2EE Web信息系统的方法_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论