第1页共24页XXXXX系统技术可行性分析报告项目名称:项目编号:编写:审核:批准:日期:第2页共24页目录1项目简介..........................................................................................................................................................22系统构成..........................................................................................................................................................33产品技术平台分析..........................................................................................................................................33.1系统运行环境......................................................................................................................................33.2开发环境..............................................................................................................................................44主要关键技术..................................................................................................................................................45关键技术的解决方案......................................................................................................................................55.1Struts2框架..........................................................................................................................................55.2持久层框架..........................................................................................................................................85.3Ajax技术.........................................................................................................................................115.4XML解析器....................................................................................................................................155.5SNMP...............................................................................................................................................186系统架构解决方案......................................................................................................................................226.1架构1...............................................................................................................................................226.2架构2...............................................................................................................................................227本项目确定的方案......................................................................................................................................237.1系统架构..........................................................................................................................................237.2技术方案..........................................................................................................................................231项目简介第3页共24页2系统构成模块名称模块描述3产品技术平台分析3.1系统运行环境网络环境:硬件平台:第4页共24页操作系统平台:数据库平台:Web服务:3.2开发环境网络环境:硬件平台:操作系统平台:数据库平台:Web服务:4主要关键技术主要关键技术技术解释J2EEJ2EE(Java2EnterpriseEdition)即Java2企业版,是提供给开发者的采用组件技术构建分布式系统的编程框架。Struts2框架Struts2是一个兼容Struts1和WebWork的MVC框架,它是以Webwork的设计思想为核心,吸收了Struts1的优点。Spring框架Spring是轻量级的容器,是一个开源框架。iBatis框架iBatis是目前流行的轻量级持久层架构,学习上手快,使用灵活、性能高效等特点。Log4jLog4j是Apache的一个日志记录的开放源代码项目。XML解析器目前流行的XML解析器主要有DOM、SAX、JDOM、DOM4J等。WebServiceWebService也叫XMLWebServiceWebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。RMI-IIOP采用IIOP协议(互联网内部对象请求代理协议)进行javaRMI远程方法访问。AjaxAJAX全称为“AsynchronousJavaScriptandXML”(异步JavaScript和第5页共24页XML),是指一种创建交互式网页应用的网页开发技术。C语言C语言是一种高效的结构化语言。SNMP简单网络管理协议(SimpleNetworkManagementProtocol)RRD/JRobinRRD是RoundRobinDatabase(环状数据库)的缩写。JRobin是一个使用Java实现的开源的RRD处理程序和绘图引擎。FlashFlash是交互式矢量图和Web动画的标准。JNDIJava命令与目录服务JUnitJava单元测试的工具DOMDocumentObjectModel文档对象模型。CSSCascadingStyleSheets层叠样式表单。Maven2ApacheJakarta项目的高级项目管理工具,比Ant更简单、更先进5关键技术的解决方案5.1Struts2框架ApacheStruts2即是之前大家所熟知的WebWork2。在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts2。Struts2是一个兼容Struts1和WebWork的MVC框架,它是以Webwork的设计思想为核心,吸收了Struts1的优点。第6页共24页Struts2体系结构Struts2框架的大致处理流程如下:浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等;核心控制器FilterDispatcher根据请求调用合适的Action;WebWork的拦截器链自动对请求应用通用功能,例如workflow、validation或文件上传等功能;回调Action的execute方法,该execute方法先获得用户请求参数,然后执行某种数据操作,既可以是将数据保存到数据库,也可以从数据库中检索数据。实际上Action只是一个控制器,他会调用业务逻辑组件来处理用户的请求。Struts1.x与Struts2比较特性Struts1.xStruts2Action类Struts1.x要求Action类要扩展自一个抽象基类。Struts1.x的一个共有的问题是面向抽象类编程而不是面向接口编程。Struts2的Action类实现了一个Action接口,连同其他接口一起来实现可选择和自定义的服务。Struts2提供一个名叫ActionSupport的基类来实现一般使用的接第7页共24页口。当然,Action接口不是必须的。任何使用execute方法的POJO对象可以被当作Struts2的Action对象来使用。线程模型Struts1.xAction类是单例类,因为只有一个实例来控制所有的请求。单例类策略造成了一定的限制,并且给开发带来了额外的烦恼。Action资源必须是线程安全或者同步的。Struts2Action对象为每一个请求都实例化对象,所以没有线程安全的问题。(实践中,servlet容器给每一个请求产生许多丟弃的对象,并且不会导致性能和垃圾回收问题)。Servlet依赖Struts1.x的Action类依赖于servletAPI,当Action被调用时,以HttpServletRequest和HttpServletResponse作为参数传给execute方法。Struts2的Action和容器无关。Servlet上下文被表现为简单的Maps,允许Action被独立的测试。Struts2的Action可以访问最初的请求(如果需要的话)。但是,尽可能避免或排除其他元素直接访问HttpServletRequest或HttpServletResponse。易测性测试Struts1.x的主要问题是execute方法暴露了ServletAPI这使得测试要依赖于容器)。第三方的扩展,如StrutsTestCase,提供了一套Struts1