1. Spring boot-创建Tomcat
Spring boot实例化的context是一个对象,该类的类图如下:
从类图中可以知道,该类直接继承自类,在Spring boot进入fresh阶段时,会执行到onRefresh方法,创建Tomcat实例就是在此业务逻辑中,onFresh方法有两个处理,1)初始化主题功能。2)创建Tomcat。
表示一个完全配置世返的web服务器(如:Tomcat,Jetty, Netty)的简单接口,允许服务器启动和停止,接口签名如下
该接口的实现类有JettyWebServer、NettyWebServer、TomcatWebServer、UndertowServletWebServer、UndertowWebServer。这里使用的是抽象工厂设计模式。
可用于创建WebServer的工厂接口,该接口搜毁饥的签名如下:
其实现类有、JettyServletWebServerFactory、TomcatServletWebServerFactory、、。
servlet web服务器的配置类,它们应该是常规自动配余尺置类中的@Import,以保证它们的执行顺序。
2. 使用PowerDesigner 9.5创建Web服务
Web服务允许您以标准格式提供现有的或新增的功能 并且允许用户和应用程序从任何位置访问它们
PowerDesigner 同时针对Microsoft NET和Java引入了完善的Web服务设计和生成机制 使用PowerDesigner 您可以专注于Web服务的设计 而将所有必需的生成 实现构造的任务交给PowerDesigner完成
一 Web服务概述 Web服务是一种接口 它描述了在网络上可通过SOAP消息进行访问的操作集合
Web 服务的接口和部署位置(可选)由WSDL说明 WSDL是一种声明数据类型 消息 端口类型和端口(可选)的XML文档 通过WSDL 用户可以知道应该发送哪种格式的SOAP消息来调用Web服务以及返回消息的格式为何
为了能使用户查找到所需的Web服务 服务提供者可能会在UDDI注册服务中发布WSDL文档 这样 用户就可以使用UDDI注册服务来搜索Web服务
若要调用Web服务 用户可以向部署Web服务时所在的访问点URL发送SOAP消息 或者使用可简化此调用过程的代理类 SOAP消息也是XML文档
二 PowerDesigner的Web服务功能 PowerDesigner 允许您新建Web服务组件 通过对WSDL进行反向工程来创建Web服务组件 浏览UDDI 搜索WSDL 从Web服务组件的定义生成WSDL 生成 NET(C#和VB NET)的服务器端代码 生成 NET的客户端代理 生成Java(JAX RPC和JAXM)的服务器端代码以及生成Java的客户端代理
为了设计Web服务组件 PowerDesigner使用了UML类图 组件图和部署图 Web服务由组件图的组件表示 而已部署的Web服务则由部署图的组件实例来表示
三 创建Web服务组件 创建Web服务组件有五个步骤 首先是要创建面向对象模型(OOM) 您可以选用以下语言中的任一种 C# Visual Basic NET或Java 在此模型上会自动附加用于WSDL的扩展模型定义(XEM) XEM定义了WSDL的生成模板和扩展属性
第二步是创建类 最好是先创建一个程序组(Package) 然后再在此程序组下创建类
第三步是使用Web服务向导将创建的类转换成Web服务组件 为此您可以右键单击该类 然后选择 创建Web服务组件 命令 或在选中该类后选择 工具>创建Web服务组件 命令 图 显示了一个Web服务向导的示例 Web服务类型可以是接口或实现 如果选择 接口 则表明您只希望定义此Web组件并生成相应的WSDL 对于 NET 此组件类型为 标准 其Web服务将通过 a *** x文件来实现 对于Java 此组件类型可能是 标准 服务程序 或 无状态会话 Bean 这几种Java组件类型的实现方法分别是 标准 类型使用JAX RPC 服务程序 类型使用JAXM 而 无状态会话 Bean 类型将使用J EE(JSR )Web服务规范 当向导结束时会创建一个组件和类 图 显示了组件图中的组件符号示例
图 Web 服务向导
图 组件符号
第四步是添加Web方法 您需要新建一个操作(Operation) 打开该操作的属性页 单击 Web 方法 复选框 定义参数和返回类型以及编写该操作的实现代码 图 显示了Web方法GetStockQuote的实现示例
图 Web方法GetStockQuote的实现示例
最后一步是对WSDL生成进行自定义 可以自定义参数和返回值的WSDL数据类型 操作的扩展属性以及组件的属性和扩展属性 若要检验生成的WSDL 您可以打开组件属性页的WSDL选项卡 生成WSDL的任务可以交给PowerDesigner完成 也可以由您自行定义(用户定义) 如果Web服务组件来源于对WSDL的反向工程 原始的WSDL将得到保留 图 显示了一个生成的WSDL的示例
图 生成的WSDL的示例
您可以在类属性页的 预览 选项卡中预览生成的实现代码 您可以使用部署图 节点和组件实例来仿建已经部署的Web服务组件 此外 还可以在 节点 中定义服务器的URL以及在 组件实例 中定义服务的URL
四 对WSDL进行反向工程 WSDL可以仅定义Web服务接口 也可以同时定义接口和访问点的URL Web服务接口可能被多个服务提供者用来提供相同的服务 当然 这些服务会具有不同的实现和访问点 如果拥有WSDL文档的文件路径或URL 您就可以通过对它进行反向工程来创建Web服务组件 之后可以定义自己的实现方法或将创建的Web服务组件保存在库中供以后再次使用 您在查找感兴趣的WSDL时 可以使用UDDI浏览器在UDDI注册服务中进行搜索
为了对WSDL进行反向工程 需要用C# VB NET或Java中的任意一种语言创建OOM 然后选择 语言>导入 WSDL 命令并输入WSDL文件的路径或URL 进行反向工程之后 会在组件图中创建一个组件 同时在类图中创建一个类 所创建的类将仅包含该Web服务的操作信号 若想实现该Web服务 还需要定义这些操作的实现代码
在UDDI注册服务中搜索WSDL 如果希望搜索在UDDI注册服务中注册的WSDL 请打开 导入WSDL 窗口 然后单击 浏览UDDI 按钮 通过 浏览 UDDI 窗口(见图 ) 您可以选择UDDI运营商 搜索条件和搜索类型 并可以按实体名称 服务名称或WSDL名称进行搜索 此外 您还可以预览找到的WSDL
图 浏览UDDI 窗口
五 生成 NET类型的Web服务 对于 NET服务器端代码 PowerDesigner会生成一个 a *** x文件 这种Web服务的实现类可以在上述的 a *** x文件中生成 也可以在外部生成 此实现类所使用的语言可以是C#或者VB NET 在类属性页的 预览 选项卡中 可以预览 a *** x文件和相应的实现类代码 图 显示了C#语言的 a *** x文件示例
图 C#语言的 a *** x文件示例
PowerDesigner还可以生成客户端代理类来简化Web服务的调用 为生成客户端代理类 PowerDesigner使用了Visual Studio NET附带的wsdl exe程序
若要生成WSDL 服务器端代码和/或客户端代理 请选择 语言>生成C#代码 或 语言>生成VB NET代码 命令 如果要生成客户端代理 可以在 任务 选项卡中选择 生成Web服务客户端代理 选项 图 显示了可用的生成任务 如果这个类不是在 a *** x文件内部生成的 您将可以对这些C#代码或VB NET代码进行编译 不过 在编译C#或VB NET文件时 您必须定义CSC或VBC变量来指示csc exe或vbc exe命令的位置
在部署Web服务时 只需要将IIS目录下的 a *** x文件和相应的类文件进行复制 C:Inetpub oot<程序组名> 其中 <程序组名> 是程序组的名称 要测试此Web服务 可以在浏览器中输入以下URL //<主机名>/<程序组名>/<服务名> a *** x
图 Web服务的生成任务
六 生成Java类型的Web服务 如果Web服务的实现类型为 标准 PowerDesigner将使用JAX RP 来实现 如果实现类型为 服务程序 PowerDesigner将使用JAXM来实现 如果实现类型为 无状态会话Bean 则PowerDesigner将使用J EE(JSR )Web服务规范来实现 JSR 尚未正式颁布
JAX RPC定义了RPC类型的Web服务调用 虽然它易于开发和使用 但为了避免复杂的对象/XML映射 它只能局限于简单的消息格式 而基于JAXM的Web服务组件显然更具优越性 它允许您灵活地处理复杂的消息结构
若要使用JAX RPC或JAXM 您需要安装Java Web Services Developer Pack(JWSDP) 此程序包可从Sun公司的网站下载 在部署JAX RPC或JAXM类型的Web服务组件时 需要有支持JAX RPC或JAXM的服务器 支持JAX RPC或JAXM的Apache Tomcat附带提供了JWSDP
至于基于JAX RPC的Web服务组件 您只需实现其Web方法的代码 若要生成WSDL 服务器端代码和/或客户端代理 可选择 语言>生成Java代码 然后选择 使用XRPCC工具生成WSDL(服务器端) 和/或 使用XRPCC工具生成Web服务的代理代码 命令(见图 ) XRPCC命令是JWSDP的一个工具 它可以生成JAX RPC类型的服务器端代码或客户端代理 在部署生成的Web服务时 需要创建一个包含所有生成文件的 WAR文件 并将此 WAR文件部署在支持JAX RPC的服务器上 比如说Apache Tomcat
图 JAX RPC生成任务
对基于JAXM的Web服务组件而言 您需要实现其onMessage操作 onMessage操作将按照在WSDL中的指示 接收并处理输入的SOAP消息并构建返回消息 以及将此消息返回 要生成WSDL和JAXM类型的Web服务 请选择 语言>生成Java代码 命令 然后选择 构建Web组件 创建Web应用程序WAR 命令(见图 ) 该命令会对JAXM服务程序代码进行编译并创建WAR文件 要部署此JAXM服务程序 您可以将上述WAR文件部署在支持JAXM的服务器上 比如说Apache Tomcat
图 JAXM生成任务
至于基于无状态会话Bean的Web服务组件 由于JSR 规范尚未正式颁布 因此目前还不能使用
七 下一步要增强的功能 J EE(JSR )Web服务规范不久将面世 供人们使用 通过它 您可以将无状态会话Bean用作Web服务实现的利器 它可以让现有功能以Web服务的新面目出现 同时也可以新建Web服务 PowerDesigner 附带提供了基于早期JSR 规范的版本 该版本尚待进一步的认证 等该规范正式颁布后 我们将提供维护版本以实现对它的完全支持
PowerDesigner的新版本还将支持Web服务的综合标准
lishixin/Article/program/SQL/201311/16374
3. Web开发需不需要UML,软件工程
Web技术的发展,使得管理系统的开发更方便、功能更强大,在此系统的开发过程中,Web技术起了一个骨架式的支持作用;与此同时组件技术的发展为系统的开放性、集成性提供了便利,有效合理地引入组件技术是当前Web系统开发与发展的一个方向;通过对系统的开发进行建模,形象直观的图形化表示,可以显示系统的流程与功能。选择有效的建模方法,充分利用Web技术与组件技术,提高软件的开发效率,提高的软件的可靠性和可维护性,是每个软件开发人员所关心的问题。
UML(Unified Modeling Language)是基于对象技术的标准建模语言,定义良好、易于表达、功能强大的特点使它在面向对象的分析与设计中更具优势。在基于Web技术和组件技术的系统建模中,它完善的组件建模思想和可视化建模的优势更利于系统开发人员理解程序流程和功能,进一步提高Web系统的开发效率以及Web组件的可重用性和可修复性。
本文将结合我们自主开发的活塞PDM系统中的项目审批流程的建模,介绍UML在基于WEB技术和组件技术的系统建模中的应用。
2、基于Web的应用系统结构
对于基于Web技术的应用系统,用户直接面对的是客户端浏览器,用户在使用系统时,请求之后的事务逻辑处理和数据的逻辑运算由服务器与数据库系统共同完成,对用户而言是完全透明的。运算后得到的结果再通过浏览器的方式返回给用户。这个过程可分成一些子步骤,每一个子步骤的完成可理解为通过一个单独的应用服务器来处理,这些应用服务器在最终得到用户所需的结论之前,相互之间还会进行一定的数据交流和传递。图1就是Web的应用结构简图。
随着Web应用技术的发展,对Web数据流程的解释上还会有相应的改进或补充。
3、Web应用系统的UML建模方法
页面、脚本、表单和框架是Web应用系统的关键部分,数据流程的模型化表示关键就是用UML对上述Web元素应用及其关系建模,下面对这几种元素的模型化表示作一个简要介绍。
(1)页面建模。用户在使用Web应用系统时,是通过页面进行系统的操作。在页面建模中可用两个类别模板《Client Page》和《Sever Page》分别表示客户端页面和服务器端页面。客户端页面的属性是页的作用域中定义的变量,方法是页面脚本中的函数;服务器页面的属性是页面脚本中的变量,方法是脚本中定义的函数。在使用页面信息传递时,还可能出现服务器页面的重定向,在UML建模中,用类别模板《redirect》来表示;对于客户端页面和服务器页面的构造关联用类别模板《bulid》表示,这种关联是一种单向关联,由服务器页面指向客户端页面,具体表示如图2所示。
在Web应用系统中,还会经常用到的就是超级链接,在UML建模中,用类别模板《link》表示超级链接,它的参数模拟为链接属性。
(2)表单建模。用户的要求一般通过表单与数据库交互。在UML建模中,表单用类别模板《form》表示,属性是表单中的域,表单没有方法。表单在处理请求时,要与Web页面交流数据,这个交流过程是用提交按钮submit来完成,为了在建模中表示这种关系,用类别模板《submit》表示。
(3)组件建模。在使用组件技术的Web应用系统建模中,对组件的建模是个重要环节,在UML基本的图形化建模元素中,设立了专门的组件图。组件在使用过程中,同样的分成了客户端组件(如Java Applet,ActiveX控件)和服务器端组件。在系统的UML模型化表示中,用类别模板《Client Component》表示客户端组件,用《Sever Component》表示服务器端组件。
(4)框架建模。框架通过定义类别模板元素《frameset》来实现,frameset指定并命名各个框架,每个框架容纳一个页面;框架的使用还涉及到目标target,建模时用《target》来表示。
4、UML在活塞PDM系统建模中的运用
活塞PDM系统是在传统PDM系统的基础上,引入了组件技术和Web技术,对数据流程的处理更趋于简易性和方便性。在对该系统的建模过程中,要体现整个系统前台与后台间数据交互的流程。在设计时,主要是考虑设计它的class diagram(类图)和component diagram(组件图),用这两类模型图来体现UML的用例驱动和系统组件结构的特性。由于在系统的开发中采用了模块化的设计方法,因此在构划模型图时,采用了先整体后局部的思路,首先考虑整个系统的案例图,再对子模块进行分析和设计,在每个子模块数据流的入口和出口设置模型图间数据交互的接口。下面以活塞PDM系统中项目审批流程子模块的建模为例说明UML在此系统建模中的应用。
4.1 项目审批流程
项目审批是项目管理流程的一部分,功能就是实现审批过程和数据传递的自动进行,取消了传统审批流程中大量纸质文件的使用。下面以活塞新产品开发的项目审批为例来说明UML对项目审批流程的建模方法。
活塞新产品开发的项目审批过程有7个环节组成,分别是项目申请、组织评审、制定实施方案、技术委员会及专家委员会评审、技术副总审核、总经理审核和董事会审核。通过这七个环节来决定一个项目实施的可行性或者合理性。
审批过程自动化的实现方法,是在Web技术和组件技术的基础上,对每一个环节设置了评审状态tag。当tag=1时,表明项目已通过该环节评审,可进入下步评审;当tag=0时,表明项目还未经过评审,或者未通过评审,需要返回去修改项目运行的可行性研究,等待再一次的评审。同时在每个环节进行评审时,还要考虑该项目是否已进入了下一级评审,如若项目已进行了下一级的评审,这时该环节的操作人员都无权再对该环节所填写的评审意见进行编辑。也就是在对每个环节进行维护时,还要考虑下一级的评审状态。
在建模之前,首先看一下项目审批流程图,如图3所示。
除了这七个审批环节,为了让用户及时了解交叉投入生产的项目审批或进展情况,提供了项目浏览功能,用户按照管理员所授予的权限,在权限范围内并且利用项目浏览子模块中提供的关键字段、项目评审状态或者进展状态进行分类检索。
在项目评审流程的每个环节,一般设置了两部分功能需求,即填写该环节评审的内容、编辑该环节评审的内容。
比如总经理评审环节,它的功能设置如图4所示。
为了实现网上审批的自动化,在整个流程的环节功能设置时,遵照了如下的规则要求:在每个环节的查看已填评审内容时,列出的项目都是正在等待进入该环节评审的项目,而不属于这种情形的项目在此环节中是显示不出来的;同样,对于在编辑此环节评审内容上,已经进行了下一级评审的项目也是不可能列出的,每个环节的负责人只可以对此环节以前的评审内容具有浏览功能,而不具备编辑功能。如果要查看整个项目的评审状况,在管理员授予项目浏览功能的权限下,通过项目浏览一项完成。
整个流程所包括的各个环节,在功能设置上是类似的,差异是评审环节在整个评审流程中所处的位置。在进行UML建模时采用了把这些环节分开的方法,先对每个环节建模,最后再把单个的环节模型图整合成一个完整流程的模型图。由于篇幅所限,下面以总经理评审的环节为例说明UML的建模方法。
4.2 总经理评审的类图(Class Diagram)
在项目审批流程中,设计了总经理审核环节的Class Diagram,如图(5)、图(6)、图(7)所示。图(6)和图(7)是图(5)的延续。该类图显示了总经理审核环节中各个页面之间的关系。为简化,在此类图中没有列出各个类的属性和方法。整个类图实现了查看已填写评审内容、填写总经理评审内容和编辑评审内容。
4.3 总经理评审的组件图(Component Diagram)
组件图是分析该环节所涉及的功能是如何实现的,这部分与具体的编码工作相关。总经理评审环节的模块组件图如图(8)所示。
4.4 由模型图到代码的转换
类图和组件图说明了在基于Web技术的信息交互流程,页面的超级链接和页间的重新导向在JSP代码设计中,由模型图就可以掌握它们之间交互的逻辑,这样使程序编写更富条理性和方便性。在实际工作中,可以设置为CRC卡,方便编程人员的使用。如若再比较详细地设计出对象图和顺序图,对于整个系统的类定义和方法设置,会提供更大的方便。
5、结束语
建模对系统的开发过程中起着很重要的作用,在系统的开发和维护中有必要建立系统的模型。UML是一种图示化的面向对象建模语言,它形象直观、应用广泛,并对Web技术和组件技术在系统开发中的建模方法有了比较合理有效的定义。在UML提供的各种模型图的基础上,还可以依照所有开发技术的特点对它的表示进行扩展,在本文的建模中就是用了UML的类别模块扩充机制,为某些模型元素添加新的语义,构造新的模型,来说明开发过程中的隐含特性。
通过利用UML建模,对基于Web的PDM系统中的项目审批流程进行了分析和设计,对整个流程的功能有了一个清晰的认识,利于开发人员对系统的开发与维护,同时可为系统的升级或者二次开发提供一个理论依据。
4. 基于web的坑洼跟踪和修复系统类图怎么画
1、确认网站架构图中的关键要素(比如产品、技术、服务),梳理关键要素之间的关联:包含、支撑、同级并列等。
2、打开亿图图示,依次选择“新建>软件>程序架构图”,新建一张空白画布。
3、从左侧符号库选择合适图形拖放到画布,亿图图示支持图形缩放、颜色历握填充、线条调整等操作。
4、根据最开始的梳理,对关键要素(比如产品、技术、服务庆数)进行信息标誉烂首注、颜色填充等。
5. 简历上的项目描述(JAVA)怎么写
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能。相信此文对正在寻觅Java程序员(Java工程师)职位的freshman以及希望成为中高级Java开发者的junior都会有所帮助。
专业技能
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的JavaAPI,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。
2.熟悉基于JSP和Servlet的JavaWeb开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行JavaWeb项目开发的经验。
3.对Spring的IoC容器和AOP原理有深入了解,熟练的运用Spring框架管理各种Web组件及其依赖关系,熟练的使用Spring进行事务、日志、安全性等的管理,有使用SpringMVC作为表示层技术以及使用Spring提供的持久化支持进行Web项目开发的经验,熟悉Spring对其他框架的整合。
4.熟练的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,对Hibernate的关联映射、继承映射、组件映射、缓存机制、事务管理以及性能调优等有深入的理解。
5.熟练的使用HTML、CSS和JavaScript进行Web前端开发,熟悉jQuery和Bootstrap,对Ajax技术在Web项目中的应用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)进行项目开发的经验。
6.熟悉常用的关系型数据库产品(MySQL、Oracle),熟练的使用SQL和PL/SQL进行数据库编程。
7.熟悉面向对象的设计原则,对GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验,熟练的使用UML进行面向对象的分析和设计,有TDD(测试驱动开发)和DDD(领域驱动设计)的经验。
8.熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉多种服务器整合、集群和负载均衡的配置。
9.熟练的使用产品原型工具Axure,熟练的使用设计建模工具PowerDesigner和EnterpriseArchitect,熟练的使用Java开发环境Eclipse和IntelliJ,熟练的使用前端开发环境WebStorm,熟练的使用软件版本控制工具SVN和Git,熟练的使用项目构建和管理工具Maven和Gradle。
说明:上面罗列的这些东西并不是每一项你都要烂熟于心,根据企业招聘的具体要求可以做相应的有针对性的准备。我个人觉得前6项应该是最低要求,是作为一个Java开发者必须要具备的专业技能
项目介绍
本系统是X委托Y开发的用于Z的系统,系统包括A、B、C、D等模块。系统使用了Java企业级开发的开源框架E以及前端技术F。表示层运用了G架构,使用H作为视图I作为控制器并实现了REST风格的请求;业务逻辑层运用了J模式,并通过K实现事务、日志和安全性等功能,通过L实现缓存服务;持久层使用了M封装CRUD操作,底层使用N实现数据存取。整个项目采用了P开发模型。
说明:上面的描述中,E通常指Spring(Java企业级开发的一站式选择);F最有可能是jQuery库及其插件或者是Bootstrap框架,当然如果要构建单页应用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G显然是MVC(模型-视图-控制),最有可能的实现框架是SpringMVC,除此之外还有Struts2、JSF以及Apache为JSF提供的MyFaces实现,可以使用JSP作为MVC中的V,也可使用模板引擎(如Freemarker和Velocity)来生成视图,还可以是各种文档或报表(如Excel和PDF等),而Servlet和自定义的控制器是MVC中的C,当然SpringMVC中提供了作为前端控制器的DispatcherServlet;J通常是事务脚本,K应该是AOP(面向切面编程)技术,L目前广泛使用的有memcached和Redis;M的选择方案很多,最有可能的是Hibernate和MyBatis,也可以两种技术同时运用,但通常是将增删改交给Hibernate来处理,而复杂的查询则由MyBatis完成,此外TopLink、jOOQ也是优秀的持久层解决方案;底层的数据存取传统上是使用关系型数据库,可以是MySQL、Oracle、SQLServer、DB2等,随着大数据时代的来临,也可以采用NoSQL(如MongoDB、MemBase、BigTable等)和其他大数据存取方案(如GFS、HDFS等);项目的开发模型P可以是瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、RAD模型等。
项目开发流程
1.可行性分析>>>可行性分析报告/项目开发计划书
2.需求分析>>>需求规格说明书
1.OOAD(用例图、时序图、活动图)
2.界面原型:帮助理解需求、业务层设计时推导事务脚本
3.设计>>>概要设计说明书/详细设计说明书
1.抽取业务实体(领域对象):类图、E-R图(概念设计阶段)
2.分层架构:确定各层的技术实现方案(具体到使用的框架、数据库服务器、应用服务器等)。业务层设计:事务脚本模式(事务:用户发送一次请求就是一个事务;脚本:一个方法或一个函数;事务脚本:把一次请求封装为一个方法或一个函数;事务脚本模式:一个事务开始于脚本的打开,终止于脚本的关闭)。业务层涉及的对象本有三种类型:事务脚本类(封装了业务的流程)、数据访问对象(DAO,封装了持久化操作)、数据传输对象(DTO,封装了失血/贫血领域对象),三者之间的关系是事务脚本类组合(聚合)数据访问对象,这二者都依赖了数据传输对象
3.正向工程(UML类图生成Java代码)和逆向工程(Java代码生成UML类图)
4.数据库物理设计(ER图转换成表间关系图、建库和建表、使用工具插入测试数据)
4.编码5.测试>>>测试报告/缺陷报告
1.单元测试:对软件中的最小可测试单元进行检查和验证,在Java中是对类中的方法进行测试,可以使用JUnit工具来实施。
2.集成测试:集成测试也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统进行测试。
3.系统测试:将已经确认的软件、硬件、外设、网络等元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。
4.验收测试:在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
5.交付和维护>>>用户手册/操作手册
项目管理
版本控制:CVS/SVN/Git
自动构建:Ant/Maven/Ivy/Gradle
持续集成:Hudson/Jenkins
系统架构
负载均衡服务器:F5、A10
应用服务器:
HTTP服务器:Apache、NginX(HTTP、反向代理、邮件代理服务器)
Servlet容器:Tomcat、Resin
EJB容器:WildFly(JBossApplicationServer)、GlassFish、Weblogic、Websphere数据库服务器:MySQL、Oracle
第三方工具(插件)应用
图表工具:基于jQuery的图表插件(如jQchart、Flot、Charted等)、Chart.js、Highcharts等。
报表工具:PentahoReporting、iReport、DynamicReports等。
文档处理:POI、iText等。
工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。
作业调度:Quartz、JobServer、Oddjob等。
缓存服务:EhCache、memcached、SwarmCache等。
消息队列:Open-MQ、ZeroMQ等。
安全框架:Shiro、PicketBox等。
搜索引擎:IndexTank、Lucene、ElasticSearch等。
Ajax框架:jQuery、ExtJS、DWR等。
UI插件:EasyUI、MiniUI等。
富文本框:UEditor、CKEditor等。
面试提问
项目是为哪个公司开发的?
项目的投入是多少?
有多少人参与了项目开发?
整个团队中,测试人员、开发人员、项目经理比例是多少?
项目开发了多长时间?
项目总的代码量有多少?
你的代码量有多少?
项目采用了怎样的开发模型或开发流程?
项目的架构是怎样的?
项目的技术选型是怎样的?
你在项目中承担了怎样的职责?
是否经常开会或加班?
项目完成后有哪些收获或是经验教训?
项目中最困难的部分是什么?
如何解决团队开发时遇到的各种冲突?
明:对于没有实际项目经验的,可以在前程无忧、智联招聘、拉勾网等网站上搜索招聘Java程序员的公司,找到他们的官方网站了解他们做的项目,查看项目的详细介绍,然后尝试完成其中一部分功能,最好请教一下高人看看自己的设计和代码是否恰当,这样相当于积累了一定的项目经验。
面试时可以反问面试官的问题
我注意到你们使用了X技术,请问你们是如何解决Y问题的?
为什么你们的产品使用了X技术而不是Y技术?据我所知,X技术虽然有A、B、C等好处,但也存在D和E问题,而Y技术可以解决D和E问题。
我对您说的X技术不是太熟悉,但我感觉它是一个不错的解决方案,您能多讲讲它的工作原理吗?
你们团队是如何进行项目规划的?一周会有几次例会?每周的代码量大概是多少?
就X问题我能想到的解决方案目前就只有Y了,请问您会怎么解决这个问题?
录用谈判
要理直气壮的提出具体的待遇要求
开出比预期稍高的价码
不要只盯着薪水(很多公司更愿意就薪水之外的条件做出让步)
使用最合适的方法(可以尝试在电话或E-mail中谈判待遇)
自我评价
学习能力(搞IT行业的人需要不断的了解新的技术、工具和方法)
团队意识(相比个人英雄主义,IT行业更倡导团队合作)
抗压能力(很多IT企业的工作强度相对来说还是比较大的)
自学编程,免费获取精品IT教程以及资料,搜索:黑马程序员
网页链接
6. Spring源码6:createApplicationContext()实例
上一篇 printBanner()打印Banner 中非了springboot如何打印Banner
在 初始化SpringApplication实例 中, 已经分析了当前模块web类型为SERVLET, 所以当前实例化了一个对象
由上面类图,我们可以看出, 类继承关系如下:
用来加载Resource, 初始化的过程中, 实例化了ClassLoader,
抽象ApplicationContext, 定义了ApplicationContext一些模板方法, 在实例化的过程中, 调用了getResourcePatternResolver()方法, 构造了一个, 规定了如何查找资源, 例如从classpath, 根路径, 从war包等查找资源
初始化了一个DefaultListableBeanFactory
由上面类图, 我们可以看出DefaultListableBeanFactory的继承关系:
提供了bean别名的增删改查功能
默认的单例Bean注册器, 提供了单例bean增删改查等功能
提供了FactoryBean的增删改查方法
抽象BeanFactory, 定义了通用的beanFactory的模板方法, 添加了对beanFactory对Scope的支持, scope主要有五种, singleton, prototype, request, session和application,
抽象自动配置BeanFactory, 实现了创建Bean, 实例化Bean, 字段配置Bean, 自动装配依赖Bean的方法
BeanFactory默认实现, spring IOC默认容器类
重写了AbstractApplicationContext的getResourcePatternResolver()方法, 返回一个对象, 构造函数中显示调用父类GenericApplicationContext的构造函数
隐式调用父类GenericWebApplicationContext构造函数, 什么都没有做
首先, 初始化一个AnnotatedBeanDefinitionReader, 然后再实例化一个对象
用于读取和解析bean定义
注解bean名称生成器, 用于生成Bean名称
Scope注解的解析器, 解析出Scope的模式ScopedProxyMode, 以及Scope的名称
@Conditional注解的条件评估器, 评估是否满足条件
注册bean处理器, bean名称需要加上org.springframework.context.annotation前缀:
如果basePackages不为空的话, 扫描basePackages中定义的bean, 当前应用中没有配置basePackages, 所以不会去扫描bean
实例化过程中, 会先调用父类GenericApplicationContext构造函数, 实例化了一个DefaultListableBeanFactory, 作为Spring IOC容器, 的构造函数实例化了AnnotatedBeanDefinitionReader对象, 用于读取Spring的bean定义, 在实例化AnnotatedBeanDefinitionReader的过程中, 注册了几个bean, 用来处理相应的注解
我们将会在下一篇 SpringBootExceptionReporter异常上报 , 继续阅读springboot源码
7. Spring解析Locale的原理
org.springframework.context.i18n.LocaleContext是一个接口,只有一个方法getLocale(),就是用来获取当前的Locale的,下面看下整体类图。
从类图中,我们可以看到LocaleContext有三个子类:其中TimeZoneAwareLocaleContext是一个子接口,该接口提供了一个getTimeZone()方法来获取当前时区了;SimepleLocaleContext是对LocaleContext接口的一个简单实现;主要看下类,这个类继承了SimpleLocaleContext,实现了TimeZoneAwareLocaleContext接口,这也就说该类可以同时获取Locale和TimeZone,这个类也是我们常用的,看下他的实现:
整个LocaleContext的设计目的是为了保存了整个应用的Locale和TimeZone。看完下面的LocaleResolver,你就会明白LocaleContext的作用。
首先看下org.springframework.web.servlet.LocaleResolver的整体类图:
上面这个类图中有两个主要的接口:org.springframework.web.servlet.LocaleResolver和org.springframework.web.servlet.LocaleContextResolver,这两个接口的设计思想和上面的LocaleContext与TimeZoneLocaleContext是一致的。LocaleResolver接口提供了对Locale操作的两个方法:
LocaleContextResolver提供了对LocaleContext的两个操作方法:
从上面的类图中,我们可以看到主要有四个实现类:
1.org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
该实现类相当于LocaleResolver的默认实现,由于它只实现了LocaleResolver接口,因此只能解析Locale,不能设置Locale,该类在DispatcherServlet调用initLocaleResolver()方法的时侍源枯候,会判断IOC容器中是由有一个叫localeResolver的Bean,如果这个Bean不存在,就会初始化该类作为默认的LocaleResolver。这个类是通过判断HTTP Header中的Accept-Language字段的值来决定当前应用的Locale和TimeZone。
2.org.springframework.web.servlet.i18n.CookieLocaleResolver
该类是通过应用设置的Cookie来判断当前需要的Locale的,我们只需要给定CookieName,它会自动读取对应的value,设置Locale。
3.org.springframework.web.servlet.i18nSessionLocaleResolver
由名字可知,该类是通过设置Session来实现的,实现原理和CookieLocaleResolver大差不差。
4.org.springframework.web.servlet.i18n.FixLocaleResolver
该类从名字就可以知道是一个固定的LocaleResolver,也就是说该类一旦设置裂族了默认的Locale和TimeZone,就老洞不可更改,更改会抛出异常。
总结一下,常用的是CookieLocaleResolver和SessionLocaleResolver。LocaleResolver的初始化是在DispatcherServlet的initLocaleResolver方法中进行的。
无论是使用哪个实现类,Bean的id一定要申明为localeResolver,否则DIspatcherServlet读取不到,将会初始化默认的AcceptHeaderLocaleResolver。
其他相关文章:
java原生国际化
Spring国际化使用教程
Spring国际化消息解析原理
8. java web的项目需求怎么写
目前, 国内外信息化建设已经进入基于Web应用为核心的阶段, Java作为应用于网络的最好语言,前景无限看好。然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情。概括一下,实施Java的WEB项目需要掌握的技术如下:
lJava语言
l面向对象分析设计思想
l设计模式和框架结构
lXML语言
l网页脚本语言
l数据库
l应用服务器
l集成开发环境
下面我们具体地看每个技术.
1、Java语言
Java语言体系比较庞大,包括多个模块。从WEB项目应用角度讲有JSP、Servlet、JDBC、JavaBean(Application)四部分技术。
(1)、Java Database Connectivity(JDBC)技术
在Java Web应用开发中,数据库管理系统(RDBMS)的使用是不可缺少的。JDBC(Java Database Connectivity) 是一种用于执行SQL 语句的 Java API。它由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的API,使他们能够用纯Java API 来编写数据库应用程序。
简单地说,JDBC 可做三件事:
l与数据库建立连接,
l发送SQL 语句,
l处理结果。
(2)、Servlet技术
Servlet是运行在服务器端的程序,可以被认为是服务器端的applet。servlet被Web服务器(例如Tomcat)加载和执行,就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求,执行某种操作,然后返回结衫手果。
Servlet的主要优点包括
lServlet是持久的。servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)。
lServlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。
lServlet是可扩展的。由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。
lServlet是安全的。从外界调用一个servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。
lServlet可以在多种多样的客户机上使用。由于servlet是用Java编写的,所以你可以很方便地在HTML中使用它们。
(3)、JavaServer Pages(JSP)技术
JSP是从Servlet上分离出来的一小部分,简化了开发,加强了界面设计。JSP定位在交互网页的开发。运用Java语法,但功能较Servlet弱了很多,并且高级开发中只充当用户界面部分。JSP容器收到客户端发出的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式响应给客户端。其中程序片段可以是:操作数据库、重新定向网页以及发送 E-Mail 等等,这些都是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP 称为Server-Side Language。
JavaServer Pages的主要优点包括
●一次编写,各处执行(Write once, Run Anywhere)特性
作为Java 平台的一部分,JavaServer Pages 技术拥有Java语言“一次编写,各处执行”的特点。随着越来越多的供货商将禅团JavaServer Pages 技术添加到他们的产品中,您可以针对自己公司的需求,做出审慎评估后,选择符合公司成本及规模的服务器,假若未来的需求有所变更时,更换服务器平台并不影响之前所投下的成本、人力所开发的应用程序。
● 搭配可重复使用的组件
JavaServer Pages技术贺塌橘可依赖于重复使用跨平台的组件(如:JavaBean或Enterprise JavaBean组件)来执行更复杂的运算、数据处理。开发人员能够共享开发完成的组件,或者能够加强这些组件的功能,让更多用户或是客户团体使用。基于善加利用组件的方法,可以加快整体开发过程,也大大降低公司的开发成本和人力。
● 采用标签化页面开发
Web 网页开发人员不一定都是熟悉Java 语言的程序员。因此,JSP 技术能够将许多功能封装起来,成为一个自定义的标签,这些功能是完全根据XML 的标准来制订的,即JSP 技术中的标签库(Tag Library)。因此,Web 页面开发人员可以运用自定义好的标签来达成工作需求,而无须再写复杂的Java 语法,让Web 页面开发人员亦能快速开发出一动态内容网页。
今后,第三方开发人员和其他人员可以为常用功能建立自己的标签库,让Web 网页开发人员能够使用熟悉的开发工具,如同HTML 一样的标签语法来执行特定功能的工作。
●N-tier 企业应用架构的支持
有鉴于网际网络的发展,为因应未来服务越来越繁杂的要求,且不再受地域的限制,因此,
必须放弃以往Client-Server的Two-tier 架构,进而转向更具威力、弹性的分散性对象系统。由于JavaServer Page 技术是Java 2 Platform Enterprise Edition (J2EE)集成中的一部分,它主要是负责前端显示经过复杂运算后之结果内容,而分散性的对象系统则是主要依赖EJB ( Enterprise JavaBean )和JNDI ( Java Naming and Directory Interface )构建而成。
(4)、JavaBean(Application)应用组件技术
Application是Java应用程序,在WEB项目和一些开发中主要应用JavaBean。它就是Application的一部分,逻辑运算能力很强,能极大的发挥Java语言的优点。JavaBean 被称为是Java 组件技术的核心。JavaBean 的结构必须满足一定的命名约定。JavaBean能提供常用功能并且可以重复使用,这使得开发人员可以把某些关键功能和核心算法提取出来封装成为一个组件对象,这样就增加了代码的重用率和系统的安全性。
高级的WEB项目会应用到以上所有技术,它们之间联合使用和协作开发会提高开发的效率和系统的性能。
2、面向对象分析设计思想
Java语言是完全面向对象的语言,所以在项目设计时会有很大的帮助,在设计时应尽量舍弃以往的面向过程的设计方式。
在分析项目业务关系的时候,应用一些UML(Unified Modeling Language)图,例如常用的用例图(use case diagram),类图(class diagram),时序图(sequence diagram)等等,会有很大的帮助,这样能尽快找出业务逻辑主要面对的对象,然后对每个对象进行行为划分,最后再实现对象之间的集成和通信。
3、设计模式和框架结构
Java从语言角度来讲不是很难,但是从整体设计角度来讲我们还需要了解一些高级应用框架。如果要设计一个良好的框架结构,单单只掌握Java语言远远不够。这就涉及到一个设计模式,还有和设计模式相关的一些知识。
设计模式在Java项目实施过程更是重中之重。主要在与两层的设计模式、三层的设计模式和N层的设计模式。它直接决定着项目的应用、部署和实际开发设计。
在普通的WEB项目中很多采用两层的开发结构。JSP+Servlet或JSP+JavaBean。当对开发要求高的项目中使用很多的还是MVC的三层开发结构,也就是JSP+Servlet+JavaBean。它能分有效的分离逻辑开发,使开发人员能专注于各自的开发。同时也能时整个开发结构流程更清晰,但是需要比较高的开发配合度。
在项目中,我们经常使用着名的Model-View-Controller(MVC)架构。MVC架构是随着smalltalk language语言的发展提出的,它是一个着名的用户界面设计架构。经典的MVC架构把一个组件(可认为是整个应用程序的一个模块)划分成三部分组 Model管理这个模块中所用到的数据和业务逻辑。而View 管理模块如何显示给用户,Controller 决定如何处理用户和该模块交互式时候产生的事件 如用户点击一个按钮等。
4、XML语言
在服务器和设计模式结构中会应用到自定义文件,而且在应用高级设计时也会定义自用的标签,现在流行的是用XML去定义配置,所以XML语言应该有一定掌握。
当前,Java 2平台企业版(J2EE)架构在厂商市场和开发者社区中倍受推崇。作为一种工具,可扩展标记语言(XML)简化了数据交换、进程间消息交换这一类的事情,因而对开发者逐渐变得有吸引力,并开始流行起来。自然,在J2EE架构中访问或集成XML解决方案的想法也很诱人。因为这将是强大系统架构同高度灵活的数据管理方案的结合。
XML的应用似乎是无穷无尽的,但它们大致上可以分为三大类:
1、简单数据的表示和交换(针对XML的简单API(SAX)和文档对象模型(DOM)语法解析,不同的文档类型定义(DTDs)和概要(schemas))
2、用户界面相关、表示相关的上下文(可扩展样式表语言(XSL),可扩展样式表语言转换(XSLT))
3、面向消息的计算(XML-RPC(远程过程调用),基于SOAP协议的Web 服务(Web Services),电子化业务XML(ebXML))
5、网页脚本语言
为了提高WEB项目的整体性能,提高人机交互的友好界面,网页的脚本语言是很有用处的,有的时候可以解决很大的难题或提高程序的性能和应用性。
网页脚本语言的执行都是在客户端执行的,速度很很快,并且大多的操作与服务器没有交互运算,所以在一些应用中非常理想。在设计WEB项目的应用中,网页的脚本语言起着不能忽视的作用,所以如果设计WEB项目的应用中,对JavaScript应有一定的了解。
JavaScript是一种基于对象(Object Based)和事件驱动(Event Driven)并具有安全性能(Secure)的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它具有以下几个基本特点:
1.它是一种脚本编写语言
JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程。
它的基本结构形式与C、C++、VB十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。
2.基于对象的语言。
JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。
3.简单性
JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计, 从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。
4.安全性
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。
5. 动态性
JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。
6、开发工具
(1)、数据库
在主要的应用中,数据库相关的环节应用很多,所以对数据库应该有一定了解。不能单单只了解一种数据库,因为在很多实际开发中会提出很多数据库解决方案,所以只有在了解多种数据库的情况下才能有一个比较方案。
对于数据库应该了解他的性能和一些基本的操作常识,还有该数据库的特点。而针对与Java语言WEB项目的数据库开发则主要是对JDBC的应用,还有数据库事务处理和连接池等高级概念的应用。
(2)、Web服务器
同数据库一样,应该了解该服务器的性能,特点和一些常识。
在应用方面,Web服务器主要是针对于配置和部署,对目录的配置,调试;对配置文件属性的修改;对访问权限和并发性的控制;Java类的部署等。
(3)、集成开发环境(IDE):
“公欲善其事, 必先利其器”. 对于Web应用开发人员来讲,好的集成开发环境(IDE:Integrated Development Enviroment)是非常重要的。目前在市场上占主导位置的一个集成开发工具就是Eclipse.
9. j2ee服务器有哪些
众所周知,J2EE应用服务器百花齐放,种类众多。那么J2EE应用服务器有哪些?又有哪些功能呢?一起来蚂橘渣看看吧!
伍袭从功能实现上划分:
有实现完整J2EE规范(full profile)的Weblogic, WebSphere, GlassFish
有实现web应用规范(web profile)的 TomEE, JBoss/WildFly
有基本的Servlet及Jsp规范的Web容器(Web Container) Tomcat, Jetty, Resin
回顾过去的2015年,各应用服务器市场占有率各有千秋。
下图为各个应用服务器使用率饼图
我们看到,在众多J2EE应用服务器中,Tomcat使用率达到58.66%,稳坐第一。
相较2014年,Tomcat使用率大幅增长,增长将近19%。
整体而言,Tomcat做为Servlet和Jsp规范的参考实现(Reference implementation , 简称RI),一般都会在第一时间实现规范的新特性并通过Oracle的CTS 测试认证。目前最新的Tomcat 9.0,虽还是alpha版,但已经实现了Servlet 4.0草案,感兴趣的朋友,可以下载尝鲜哦!
Tomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用闷悄Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:
Tomcat 是一款非常优秀的 Java Web 服务器,以致于很多开源 Java 应用服务器(如 JOnAS) 直接集成它作为 servlet 容器。
Tomcat的总体结构
Tomcat中主要涉及Server,Service,Engine,Connector,Host,Context组件,之前用过Tomcat的.童鞋是不是觉得这些组件的名称有点似曾相识的赶脚,没赶脚?!您再想想。好吧,不用你想了,我来告诉你吧。其实在Tomcat二进制分发包解压后,在conf目录中有一个server.xml文件,你打开它瞄两眼看看,是不是发现server.xml文件中已经包含了上述的几个名称。
Tomcat 集群源码的类图
从图中我们可以看出 Tomcat 集群包括以下几个方面的内容:
Session: Session 分为 StandardSession 与ClusterSession 两种,后者用于 Session 复制。
Session Manager: 有用于集群 Session 管理的ClusterSession,也有用于对 Session 进行一般日常管理的,如 PersistentManager,BackupManager,SimpleTcpReplicationManager。
组通迅框架:SessionManager调用组通讯框架进行 Session 的传输,Tomcat采用的组通
讯框架是 tribe,目前 tribe 已被独立为开放的 apache 工程。
Cluster: 方便集群管理而派生出的逻辑概念,可将实际物理机划分为一个 Cluster,也可 将一台物理机上不同端口的实例划分为一个 Cluster,它有一个简单的实现类 SimpleTcpCluster。
1.1 Session
服务器集群通常操纵两种session:
1. Stickysessions: 尽量让同一个客户请求由同一台服务器来处理,这样 sticky sessions 就是 存在于单机服务器中接受客户端请求的 session,它不需要进行 Session 复制,如果这个 单机失败的话,用户必须重新登录网站。
2. Replicatedsessions: 在一台服务器中的 session 状态被复制到集群的其他服务器上,无论 何时,只要 session 改变了,session 数据都要重新全部或部分(依据复制策略)被复制 到其他服务器上。
Tomcat 支持以下三种 session 持久性类型:
1. 内存复制:在 JVM 内存中复制 session状态,使用 Tomcat自带的 SimpleTcpCluster 和SimpleTcpClusterManager类。
2. 数据库持久性:在这种类型中,session 状态保存在一个关系数据库中,服务器使用org.apache.catalina.session.JDBCManager类从数据库中获取 Session 信息。
3. 基于文件的持久性:这里使用类org.apache.catalina.session.FileManager 把session 状态保存到一个文件系统。
Session Manager
Tomcat 通过 org.apache.catalina.Manager 来管理 Session,Manager 接口总是和 Context Container 相关联。它主要负责 session 的建立、更新和销毁。该接口中一些重要的方法有:
用户在 Servlet 中通过 javax.servlet.http.HttpServletRequest 接口的 getSession 方法获得 Session,而该接口的实现位于 org.apache.catalina.connector.Request 类中的 doGetSession 方 法中,在该方法中通过 org.apache.catalina.Manager 来获得 Session , doGetSession 方法的 部分代码如下:
组通讯框架--Tribe
组通讯框架 Tribe 在 Tomcat 中的位置可如下图
如图所示,Tribe 的核心主要是 Channel 类,由此看出,它采用 NIO 进行 Socket 通讯,运用
了组播,事件、心跳检测等技术,下面我们来着重看看代码中 Tomcat 是如何与 Tribe 衍接首先在 SimpleTcpReplication 类中的实现 Manager 接口的 start 方法中:
Cluster
Cluster 用于管理集群中的 Session 复制,它有一个简单的实现类 SimpleTcpCluster。
10. 高分求~!谁有有关于远程教育的资料代理的资料~或者说相关的任何资料~!
你可以到下面这些网站看一下:
• 国外远程教育专题网:http://carbon.cudenver.e/~lsherry/pubs/issues.html
(该网站讲解了什么是远程教育?远程教育的理论与哲学、远程教育系统、 设计的思考、方法与策略、远程学习者、运作问题、管理与政策。)
• 远程教育资源网:http://www.dlrn.org/index.html
• 远程教育资讯网:http://www.uwex.e/disted/
(该网提供了大量的远程教育资源及关于远程教育的网站链接。)
• 101远程教育网:http://www.chinae.com/(101远程教育教学网由北京高拓公司创办于1996年9月,开设小学六年级、初中、 高中各年级各门主课,另开设小学三年级至小学六年级的数学奥班课程。是雀顷祥最早的中小学网上教学网站。)
• 百灵远程教育网:http://e.beelink.com.cn/
(主要分MBA远程教育培训、信息技术培训、百灵山师附中网校、英语视听、学习社区等栏目。)
• 华教远程教育网:http://www.chinae.org/
(中央教育科学研究所华教远程教育网,以基础教育教师尤其是偏远地区教师的继续教育为工作重点,以推进中国基础教育教学观念和手段的现代化为目标,以"立足教育、服务教育、回报社会"为宗旨。)
• 电大在线:http://www.opene.com.cn/
(中央广播电视大学电大在线,对开放教育类学生的网上资源提供网站,网上直播 电视课表网上教学 直播课堂IP/VBI播出时间表等内容。)
• 中华在线远程教育网:http://www.onlinecn.net/
(该网是一家国内最早的专业远程教育软件企业之一,成立于1997年,1999年开始从事远程教育系统平台研发,公司成员大都来自联想集团、人大远程教育网、北大医学远程教育网及华教远程教育网,2000年,推出中华在线远程教育系统及网络大学课件制作系统---"课件快手",让老师都可以轻松制作网络流媒体课件!)
• 育才国际远程教育网:http://www.yucaie.com/
(它是立足于基础教育、素质教育、创新教育和终身教育的远程教育体系,该网站的全程在线服务和个性化服务比较有特色,值得一看。)
• 中小学远程教育网:http://www.e12.com/
(该网站包括:国家资源教育资源库、数字媒体教育网台、学科教学资源、教育网站索引及百年树人教育集团等内容,其中教育网站索引这里有好多详细的网站索引。)
• 中国国际远程教育网:http://www.ceieac.com/
(该站有关于校园网群、电教多媒体技术、设备和软件的展览。)
• 8211远程教育网:http://www.8211.com/
(该网站主要提供中小学的教学资源并开设了名师论坛,主要是以校校互通和资源共享为宗旨而建立的一个综合信息平台。)
• 国联网:http://202.102.245.32/
(国联网校是中国首家互联网上辅导学校。它包括四个部分内容:教育信息、网上课堂、网校生活、交流与答疑。)
• 万恒网校(五中网校) :http://www.cyberschool.net.cn/
(万恒远程教育网是以五中网校为基础建立起来的一个综合性网站,包括远程教室、第二课堂、课外生活、教师交流、代理园地和本网服务六大部分。乎皮)
•顷搏 联想网校 :http://www.school.legend.com.cn/
(联想网校,集中了北京各重点中学近百位特、高级教师的经验和智慧,开设了同步辅导、中高考专题、第二课堂、网校生活、家长学校、资料室等栏目。)
• COL网上学校 :http://www.cb.col.com.cn/yanshi/e/e2.htm
(COL 网上学校是深圳讯业集团利用其覆盖全国的多媒体信息增值服务网络枣COL,由讯业投资公司和北京金网通公司共同负责成立的教育专项管理中心,面向全国推出 的业务,其基本定位为:汇集全国的优秀教师教学资源,发挥COL 整体网络优势,面向全国提供的中学辅导性网络教学。)
• 香港公开大学:http://www.ouhk.e.hk/
• 英国开放大学:http://www.open.ac.uk/
(世界着名的开放大学。)
• 英国哥伦比亚开放大学:http://www.openschool.bc.ca/index.html
• 美国网络教师:http://www.webteacher.org/windows.html
(从事网络教学工作和相关人员的好去处。)
• 美国开放大学:http://www.open.e/
• 美国凤凰城大学:http://www.phoenix.e/
• 泰国开放大学:http://www.stou.ac.th/
• 印度英迪拉甘地国立开放大学:http://www.ignou.e/
• 南非大学:http://www.unisa.ac.za/
• 加拿大阿萨巴斯卡大学:http://www.athabascau.ca/
• 澳大利亚南昆士兰大学:http://www.usq.e.au/
• 全球远程教育学院:http://www.gdli.com.tw/
• 再城远程教育网:http://www.geocities.com/Athens/Academy/7880/
• 联合远教教学机构:http://www.opencampus.com.tw/
• 台湾中兴大学远程教育网:http://www.nchu.e.tw/~dl/index1.htm
资料来源:http://www.et.pku.e.cn/serve/link.htm#3
1.国内教育技术综合网站
*中国教育技术网:::URL::http://www.etr.com.cn/
(由中国电教协会主办,新闻动态 专业刊物 学术论文 专家资源库 学术活动 中国电教协会 课题申报 学术流动站 人才供需中心 学科专业点 专业图书查询 远程教育 设备信息 教育技术论坛 教育法规应有尽有)
*中国教育技术学网:::URL::http://www.chinaet.org/
(中国教育技术学网站为广大用户提供与教育技术学相关的各种资源。它既提供包括教育理论、实践经验、基本知识等方面的文章,又提供各种形式的资源下载,最大限度的满足用户的各种需求;同时,集思广义,大家共建,使它成为教育人士的资源库和联系枢纽。)
*教育技术学资源网:::URL::http://61.144.23.75/ret/index.asp
(一个教育技术学团队、一个教育技术学的Google、一个教育技术学的社区、一个协同学习、协同研究与协同开发的舞台。)
*教育技术学动态:::URL::http://etech.tongtu.net/
(该网站的热站推荐、相关资源、FERC论文集等都值得一看。)
*无限思考:::URL::http://dianjiao.myrice.com/index.html
(该网是东北师大一研究生个人网站,该网的资源链接比较好。)
* 惟存教育网:::URL::http://www.being.org.cn/
(该站关于教育技术与课程整合的实践探索与理性思考、研究性学习探索、多种学习模式的探索和网络资源的链接等非常丰富。)
* 中小学信息技术教育网:::URL::http://www.nrcce.com/index.php3
(中国中小学信息技术教育网是全国中小学计算机教育研究中心主办的,进行中小学信息技术教育理论研究的非盈利性教育类专业网站。主要的服务对象是全国的相关教育工作者。网站的目的是进行中小学信息技术教育的试验、研究、探索和提供相关资源。为全国中小学信息技术教育(包括计算机辅助教学和计算机学科教学)的老师和教研人员提供服务。)
* 北师大网络实验室:::URL::http://www.vschool.net.cn/
(该网站包含有一系列的网络群,还有教育技术领域里许多热点问题的相关文章。)
* 教育技术在线:::URL::http://www.iteonline.net/
("教育技术在线"是以华南师范大学教育技术研究所为依托,以全国教育技术专业学生、教育技术科研工作者以及热爱信息技术教学改革的中小学教师为合作伙伴,以推广和普及现代教育技术为主的网站。)
* 教育技术热线:::URL::http://metc.njnu.e.cn/(南京师大教育技术学网站)
* 教育信息化:::URL::http://www.pujiao.com.cn/etc/INDEX.ASP
(通惠利华教育信息化网站,这里有比较多的信息技术教育、课程整合、远程(网络)教育的文章)
* 中国信息技术教育网:::URL::http://www.cite.net.cn/
(由中华人民共和国教育部主办,是一个以信息技术教育为主的教育类网站,另外该网站还有《信息技术教育》杂志,构成信息技术教育教育科研网络与传统媒体一条龙。)
* k12中小学信息技术教育网:::URL::http://ite.k12.com.cn/
(该站主要是关于信息技术与课程整合及网络教育方面的资料。)
* 赛伯时空教育网:::URL::http://www.cst21.com.cn/2/index2.htm
(该站包含了教育技术的许多热点问题,如:网络探究模式研究、研究性学习探究、信息技术与课程整合。还包括国外着名的webquest网站。)
* 基于网络的协作学习网:::URL::http://www.isnet.org.cn/asp/cstu/index.asp(
本网站主要以实现"校校通"目标为宗旨,开发基于网络校际协作学习课程,提出"校校通工程"课程资源中校际"协作学习或交流学习"课程开发的标准模式,并开展基础性研究。)
* 上海教育技术网:::URL::http://www.shet.com.cn/main.htm
(本网站由上海高教电教研究会主办,上海各高校教育技术中心参与制作.)
* 在线教育资讯网:::URL::http://www.online-e.org/
(好多关于e-learning的东西)
* 中小学电教网:::URL::http://eteach.ste.net/index.asp
(免费资源,信息技术相关资料,校园网建设,电化教学网络管理,电教,校园网,电教论文,电教动态,电教器材,电教管理,电教制度,ASP,flash)
* 四结合网:::URL::http://www.sijiehe.com/
(里面包含了大量的建构主义理论和教学设计理论,是专门的研究信息技术与中小学课程整合的网站。)
go top
--------------------------------------------------------------------------------
2.国外教育技术资源索引网站
* 国外教育技术网站的汇编网:
::URL::http://fms.wsd.wednet.e/TechLab/ecationallinks.htm
* 美国教育技术十佳网站:
::URL::http://211.152.9.125/cgi-bin/page.dll?page3?userid=etech&columnno=0&articleid=127
* 教育技术研究实验室:
::URL::http://psychology.wichita.e/itrl/
* 教育技术研究指导中心:
::URL::http://infotree.library.ohiou.e/single-records/2004.html
* 教育技术链接网:
::URL::http://www.q.e/~tomei/tomei/advancedsites.html - Table
(由 Duquesne 大学教育学院 Linda C. Wojnar 博士创建与维护的一个教育技术学网,全部是连接。)
* 教育技术网络全书网:::URL::http://coe.sdsu.e/eet/
(该网是由圣地亚哥州立大学出版的一本杂志,里面包含许多教育技术领域里的精彩文章。)
* 教育技术资源网:::URL::http://disted.tamu.e/edtclink.htm
(该网是由德克萨斯AM大学Karen L. Murphy博士的教育技术资源链接。有在线杂志、教育技术机构协会、远程教育和教育技术的多篇精彩论文。)
go top
--------------------------------------------------------------------------------
3.远程教育网站
* 远程教师培训网:::URL::http://211.101.197.142/
(" 远程教师培训"是新教育者NE(New Ecator)平台推出的第一个活动。NE致力于为教育工作者提供职业发展的信息交流平台,共同迎接信息技术给教育带来的挑战;将基于教育技术最新研究成果,为管理者提供新的理论与方法;将组织教师参与行动研究和国际交流。)
* 国外远程教育专题网:::URL::http://carbon.cudenver.e/~lsherry/pubs/issues.html
(该网站讲解了什么是远程教育?远程教育的理论与哲学、远程教育系统、 设计的思考、方法与策略、远程学习者、运作问题、管理与政策。)
* 远程教育资源网(国外):::URL::http://www.dlrn.org/index.html
* 远程教育资讯网(国外):::URL::http://www.uwex.e/disted/
(该网提供了大量的远程教育资源及关于远程教育的网站链接。)
* 101远程教育网:::URL::http://211.100.6.92/
(101远程教育教学网由北京高拓公司创办于1996年9月,开设小学六年级、初中、 高中各年级各门主课,另开设小学三年级至小学六年级的数学奥班课程。是最早的中小 学网上教学网站。)
* 百灵远程教育网:::URL::http://e.beelink.com.cn/
(主要分MBA远程教育培训、信息技术培训、百灵山师附中网校、英语视听、学习社区等栏目。)
* 华教远程教育网:::URL::http://www.chinae.org/
(中央教育科学研究所华教远程教育网,以基础教育教师尤其是偏远地区教师的继续教育为工作重点,以推进中国基础教育教学观念和手段的现代化为目标,以"立足教育、服务教育、回报社会"为宗旨。)
* 电大在线:::URL::http://www.opene.com.cn/
(中央广播电视大学电大在线,对开放教育类学生的网上资源提供网站,网上直播 电视课表网上教学 直播课堂IP/VBI播出时间表等内容。)
* 中华在线远程教育网:::URL::http://www.onlinecn.net/
(该网是一家国内最早的专业远程教育软件企业之一,成立于1997年,1999年开始从事远程教育系统平台研发,公司成员大都来自联想集团、人大远程教育网、北大医学远程教育网及华教远程教育网,2000年,推出中华在线远程教育系统及网络大学课件制作系统---"课件快手",让老师都可以轻松制作网络流媒体课件!)
* 育才国际远程教育网:::URL::http://www.yucaie.com/
(它是立足于基础教育、素质教育、创新教育和终身教育的远程教育体系,该网站的全程在线服务和个性化服务比较有特色,值得一看。)
* 中小学远程教育网:::URL::http://www.e12.com/
(该网站包括:国家资源教育资源库、数字媒体教育网台、学科教学资源、教育网站索引及百年树人教育集团等内容,其中教育网站索引这里有好多详细的网站索引。)
* 中国国际远程教育网:::URL::http://www.ceieac.com/
(该站有关于校园网群、电教多媒体技术、设备和软件的展览。)
* 8211远程教育网:::URL::http://www.8211.com/
(该网站主要提供中小学的教学资源并开设了名师论坛,主要是以校校互通和资源共享为宗旨而建立的一个综合信息平台。)
* 国联网:::URL::http://202.102.245.32/
(国联网校是中国首家互联网上辅导学校。它包括四个部分内容:教育信息、网上课堂、网校生活、交流与答疑。)
* 万恒网校(五中网校) :::URL::http://www.cyberschool.net.cn/
(万恒远程教育网是以五中网校为基础建立起来的一个综合性网站,包括远程教室、第二课堂、课外生活、教师交流、代理园地和本网服务六大部分。)
* 联想网校 :::URL::http://www.school.legend.com.cn/
(联想网校,集中了北京各重点中学近百位特、高级教师的经验和智慧,开设了同步辅导、中高考专题、第二课堂、网校生活、家长学校、资料室等栏目。)
* COL网上学校 :::URL::http://www.cb.col.com.cn/yanshi/e/e2.htm
(COL 网上学校是深圳讯业集团利用其覆盖全国的多媒体信息增值服务网络枣COL, 由讯业投资公司和北京金网通公司共同负责成立的教育专项管理中心,面向全国推出 的业务,其基本定位为:汇集全国的优秀教师教学资源,发挥COL 整体网络优势,面向全国提供的中学辅导性网络教学。)
* 香港公开大学:::URL::http://www.ouhk.e.hk/
* 英国开放大学:::URL::http://www.open.ac.uk/
(世界着名的开放大学。)
* 英国哥伦比亚开放大学:::URL::http://www.openschool.bc.ca/index.html
* 美国网络教师:::URL::http://www.webteacher.org/windows.html
(从事网络教学工作和相关人员的好去处。)
* 美国开放大学:::URL::http://www.open.e/
* 美国凤凰城大学:::URL::http://www.phoenix.e/
* 泰国开放大学:::URL::http://www.stou.ac.th/
* 印度英迪拉甘地国立开放大学:::URL::http://www.ignou.e/
* 南非大学:::URL::http://www.unisa.ac.za/
* 加拿大阿萨巴斯卡大学:::URL::http://www.athabascau.ca/
* 澳大利亚南昆士兰大学:::URL::http://www.usq.e.au/
* 全球远程教育学院:::URL::http://www.gdli.com.tw/
* 再城远程教育网:::URL::http://www.geocities.com/Athens/Academy/7880/
* 联合远教教学机构:::URL::http://www.opencampus.com.tw/
* 台湾中兴大学远程教育网:::URL::http://www.nchu.e.tw/~dl/index1.htm
go top
--------------------------------------------------------------------------------
4.教学设计网站
* 教学设计课程学习网:::URL::http://www.hainnu.e.cn/licb/
不仅支持同学们开展以学为主的课程综合性实践任务(如:原创WebQuest《教学设计应用模式调研》、 《中小学教案设计调研》、 《教案设计与课件制作》等研究性学习活动、实践作业、专题讨论),而且以课程主题为线索提供大量参考资源,是一个集支持学习者主动探究学习和教学设计专题资讯为一体的课程学习支持网站。
* 教学设计专题网站习作:::URL::http://www.chinaet.org/ subject/xmweb/html/zhengti.htm
(里面包含了大量的理论基础、有学习理论、传播理论、设计理论、视听理论等等,还有一系列的案例分析和资源链接。)
* 网络环境下的教学设计专题学习网:::URL::http://61.144.60.222:8080/0518/index.php
* 教学设计协会:::URL::http://www.idc-tx.com/
* 全球教学设计网:::URL::http://www.uid.ca/
* 教学设计模式网:::URL::http://carbon.cudenver.e/~mryder/itc_data/idmodels.html
* 教学设计的理论与模式:::URL::http://www.byu.e/ipt/vlibrary/developer/theories.htm
go top
--------------------------------------------------------------------------------
5.教育技术论坛网站
* 教育技术自由论坛:::URL::http://etc.elec.bnu.e.cn/newbbs/login.asp
* 中小学信息技术论坛:::URL::http://www.nrcce.com/Forums/down.php
* 河北大学教育技术星空:::URL::http://netroom.hbu.e.cn/personal/zoujinsong/index1.htm
* k12信息技术论坛:::URL::http://sq.k12.com.cn/forums/?
* 指顾雷霆论坛:::URL::http://dianjiao.xilubbs.com/
* 网络时代电教论坛:::URL::http://www.net-e.com/ee/bbs/bbs-c.asp
* 教育技术论坛:(英文)::URL::http://www.etech.ch/etech/forums/forums_e.asp
* 新知社区:::URL::http://www.being.org.cn/ cgi-bin/bbs/leoboard.cgi
* 网络环境下教学设计论坛:::URL::http://61.144.60.222:8080/bbs/upload/
* 《教育技术通讯》:::URL::http://www.etc.e.cn
go top
--------------------------------------------------------------------------------
6.教育技术协会网
* 北京高校教育技术学专业研究生联谊会: ::URL::http://www.etworkshop.com
* 中央电化教育馆:::URL::http://www.seccet.e.cn/
* 全国高等学校教育技术协会委员会:::URL::http://www.ceta.e.cn/
(一种协作指导高校教育技术工作的组织。)
* 美国教育传播与技术协会:::URL::http://www.aect.org/(制定教育技术94定义的组织。)
* 美国国际教育技术协会:::URL::http://www.iste.org/
(主要致力于教育技术和信息技术在中小学中的运用。)
* UNESCO教育信息技术署:::URL::http://iite.artstyle.net/iite/index
* 美国教育技术办公室:::URL::http://www.ed.gov/Technology/index.html
* 美国教育技术联合会:::URL::http://www.rtec.org/
* 美联邦教育技术协会:::URL::http://www.aect.org/Affiliates/feta.html
* 美国远程教育协会:::URL::http://www.usdla.org/()
* 英联邦共同体学习联盟:::URL::http://www.col.org/
* 亚洲开放大学协会:::URL::http://www.ouhk.e.hk/ %7EAAOUNet/
* 国际开放与远程教育协会:::URL::http://www.icde.org/