基于java的web服务器(编辑修改稿)内容摘要:
ngine 来处理,从 Engine 处获得响应结果, 并返回给客户端; Engine 代表一个 Service 所属的请求处理机,它接受所有 Connector 传递过来的客户端请求,将处理结果返回给 Connector,由Connector 将最终响应返回给客户端, Engine 必须配置在 Service 组件下; Engine下可以配置多个 Host,每个 Host 都有一个域名,当 Engine 获得一个请求时,它把该请求匹配到某个 Host 上,把请求交给该 Host 来处理; Host 代表一个虚拟主机,每个虚拟主机和某个网络域名相匹配。 每个虚拟主机下都可以部署一个或者多个 Web 应用程序,每个 Web 应用程序对应于一个 Context,有一个 Context 路径;一个 Context 对应于一个 Web 应用程序,一个 Web 应用程序由一个或者多个 Servlet 组成。 Tomcat 整个系统的功能都是通过组件实现的,组件之间的通讯构成了系统的运行控制机制,具有很高的复用性和可扩展性。 组件技术 组件技术越来越广泛地应用于软件系统设计中,它是为提高软件的可重用性而提出的,其思想是将软件按一定的标准封装成组件,对外提供一组访问接口,指明组件与容器或与其它组件交互的机制。 面向组件的技术( ComponentOriented, CO)是比面向对象的技术更高一层的抽象,它融合了面向对象的优点,加入了安全性和可扩展的模块设计,可以更好的映射问题域空间。 采用面向组件的设计会带来很多好处,可以提高复用性、降低耦合度和通过组装构成系统等。 应用服务器系统吸取了组件技术所提供的优点,采用开放的层次组件式结构,系统的各种资源均以服务的形式提供,服务按功能划分层次,形成不同组件,服务与系统核心之间定义公共接口标准,所有服务采用标准接口实现与底层通讯。 采用这种层次式组件结构,组件通过核心层定义的公共标准接口实现与底层通讯,系统功能作为组 件式服务部署和管理,整个系统可以在不影响现有应用的基础上,实现对组件的修改和扩展。 JAVA 是一个基于组件的多层网络应用体系结构,它定义了一套标准化的组件,并为这些组件提供了完整的服务,这意味着应用程序的不同部分可以运行在不同的设备和系统上。 其核心是容器,容器提供了组件服务的运行环境和对企业信息系统的标准访问,还提供了配置和部署应用程序行为的机制。 DM WAS 体系结构 服务器总体设计框架 JAVA 平台从功能上大体可以划分为两个大的组成部分: Web 服务器和 EJB服务器。 Web 服务器主要是为 JSP 和 Servlet 提供运行平台,实现企业应用程序的 Web 表示层; EJB 服务器主要是提供 EJB 组件的运行环境,为业务逻辑事务层服务。 各个厂商一般会根据需要有选择地实现全部或部分 JAVA 规范,如OpenEJB 是一个实现了 EJB 规范的纯 EJB 容器, Tomcat 是一个主要提供 Servlet和 JSP 服务的 Web 容器,当然它也实现了 JNDI、连接池、事务处理等相关服务。 在总结国内外 Web 应用服务器研究的基础之上,结合具体的需求分析,我们提出如下系统总体框架,如图 所示。 图 DM WAS 总体框架图 由图中可以看出,整个 Web 应用服务器的功能是由一个个的组件提供的。 采用组件技术,能够提高系统的可扩展性。 整个系统由 11 种组件组成。 服务器启停组件实现服务器的启动与停止。 服务器启动时,完成如下一些工作: 初始化类装载器,初始化 JNDI 服务,读入服务器配置文件 (由XML 组件中的 xml 解析器完成解析),根据配置文件的内容配置相应的资源服务(如数据源的初始化),启动“停止服务器”监听线程并注册虚拟机停止钩子( hook),初始化 Web 应用程序上下文,初始化并启动 Http 连接管 理组件,初始化其它内置服务(如内置的数据库等)。 连接管理组件 Http连接管理组件负责建立一个或多个 ServerSocket并监听来自客户端的连接请求。 它在初始化过程中获取服务器启停组件读入的服务器配置信息,如服务器绑定的 IP 地址和端口号、线程池能够允许的最大线程数和最小线程数等,建立 ServerSocket,并循环地接收客户端的连接。 当某个客户端发出连接请求时,它建立一个 Socket 对象并将该对象包装成 request 和 response 对象赋给请求处理任务的实例,交由线程池处理。 处理器 静态资源处理器完成对静态页面 html、图片等静态资源的请求处理。 如果用户请求的是一个目录,它可根据服务器的配置决定是否显示欢迎页面、显示目录内容或给出出错信息。 容器 Servlet 容器是服务器的核心,它实现并扩展了 规范中的绝大多数接口。 Servlet 容器在系统启动过程中完成初始化,包括 Web 应用程序上下文的配置、 Web 描述符的解析以及根据 Web 描述符的配置决定是否预先装入某些Servlet。 它实现了基于 Session 和 Cookie 的会话管理机制,能够有效地对 用户会话进行跟踪。 Servlet 实例池能够对用户的请求做出快速响应。 根据 Web 描述符能够处理任何匿名或非匿名的 Servlet 请求。 引擎 JSP 引擎是服务器的另一个核心组件,用来处理对 JSP 页面的请求。 当 Servlet容器监听到客户端请求的是一个 JSP 页面时,它将请求转发给 JSP 引擎。 JSP 引擎将对 JSP 文件进行解析并生成相应的 Servlet 代码,随后对生成的 Servlet 进行编译并加载到内存中,然后将该 Servlet 交给 Servlet 容器进行处理。 上述过程会随时因发生错误(如 JSP 文件写法不规 范,找不到引用类等)而终止。 对于所有的随后而来的对该 JSP 文件的请求, JSP 引擎将检查该 JSP 文件自最后一次被存取后是否经过修改。 如果没有修改则请求将交给还在内存中的 Servlet 以一种同时发生的方式加以处理。 由于 Servlet 始终驻于内存,所以响应是非常快的。 如果 JSP 文件被修改了, JSP 引擎将自动地对该文件重新编译,并将结果取代内存中的 Servlet,并继续上述处理过程。 数据库连接管理组件管理数据库的连接操作,它包括一个事务管理器和一个数据库连接池。 事务管理器采用 JTA 和 JTS 为开发者提供数据库的事务支持,开发人员可以有选择地通过 JNDI 访问事务管理器控制事务或自己使用 JDBC 接口控制事务。 数据库连接池实现了 接口并对开发人员屏蔽了引用的细节,开发人员只需要通过 JDNI 查找 DataSource 的逻辑名称就可以获得数据库连接从而操纵数据库。 组件 XML 组件包括 XML 解析器、 XSL 转换器、 XMLJDBC 组件等。 它负责系统中所有 XML 文件的解析工作,能够完成 XML 文件与关系数据库之间数据的存取与转换,以及与 XML 数据库的连接。 组件 JNDI 组件为用户访问 Java 名字和目录服务提供了便利,任何有关 JNDI 的查找和绑定工作都由该组件完成。 安全管理组件采用基于安全域( security realm)的方式实现服务器中用户的认证和授权。 在身份认证方面 ,使用基于 HTTP 基本验证方式和基于表单( FORM)的认证方式;在授权方面,使用基于角色的访问控制。 所有安全操作由服务器管理,用户只需在 Web 应用描述符中进行配置。 日志管理组件负责系统的日志记录工作。 我们采用了优秀的日志记录软件Log4j 并对其进 行了扩展以满足本地化需求。 日志管理组件提供分级方法在程序中嵌入日志记录语句。 日志信息具有多种输出格式和多个输出级别,用户可根据需要进行定制,以捕捉有关应用程序运行时行为的细节。 服务器接口组件负责与 DM EJB 服务器的连接工作。 它通过 JNDI 与 DM EJB服务器进行通信,从而实现 DM WAS 和 DM EJB 服务器的互连,形成一个完整的 JAVA 应用服务器。 服务器总体方案的特点 基于 JAVA 的 DM WAS 处于 Web 浏览器 /DM WAS/DM 数据库服务器三层体系结构的中间层,该服务 器具有 6 个基本特点。 DM WAS 严格遵循 JAVA 规范,任何符合 JAVA 规范的 Web 应用程序都能够在我们的服务器中正确地配置和运行。 DM WAS 严格来说是一个 Web 容器,但我们提供与 DM EJB 服务器的整合,从而可以给用户提供完整的 JAVA 开发环境。 在服务器中可以配置各种组件的安全性,只有被授权的用户才能访问系统资源。 每一个客户隶属于一个特定的角色,而每个角色只能访问特定的资源。 开发人员可以在应用部署描述符中声明角色和可被访问的资源,而不必在应用程序中硬编码安全规则。 用户可以通过服务器配置文件方便地对各项参数进行修改,从而达到最佳运行效果。 我们提供良好的操作管理界面帮助服务器管理人员管理服务器以及部署在服务器中的 Web 应用程序。 服务器应用程序目录结构规范, Web 应用程序部署方便简单,具有对 WAR文件的自动解压,简单的批处理文件使得启停服务器变得异常方便。 DM WAS 的运行过程 DM WAS 基于 HTTP/ 协议,支持 JAVA 中 Servlet、 JSP、 JDBC、 JNDI等相关规范,能够部署大多数基于 Web 的 Java 应用。 DM WAS 由服务器核心类、Java 核心类库、第三方软件包、一组配置文件和多个 Web 应用程序组成。 服务器在启动时读入并解析服务器配置文件,并初始化一系列服务,包括类装载器、数据库连接池、 JNDI、数据源等资源在 JNDI 上的绑定、线程池、 Web应用程序的上下文等,最后建立 ServerSocket,等待客户端连接。 第三章 系统技术实现 Http 连接管理组件 一个客户机与一个服务器要进行有效的通信,他们之间必然要遵守某种共同的协议,当前,浏览器和 Web 服务器之间大多 采用超文本传输协议 HTTP 进行通信。 HTTP 协议是基于 TCP/IP 协议之上的应用层协议,具有无连接、无状态、面向对象等几个特点。 HTTP 协议基于请求 /响应机制,其工作原理包括四个步骤。 :浏览器与服务器建立连接,打开一个称为套接字( socket)的虚拟文件,此文件的建立标志着连接建立成功。 :浏览器通过 socket 向服务器提交请求。 :服务器接收到该请求后,进行相应的事务处理,然后将处理结果通过 HTTP 传回给浏览器。 :当应答结束后,服务器断开与浏览器的连接,以保证更多的 浏览器能够与服务器建立连接。 Http 连接管理组件位于 DM WAS 的最前端,它在服务器启动过程中获取服务器配置参数并初始化,负责监听端口,接收请求消息,并且将处理后的回复反馈给客户端。 组件实现 Http 连接管理组件基于 HTTP 协议,负责建立一个或多个服务器 Socket 并监听来自客户端的连接请求。 当某个客户端发出连接请求时,它建立一个 Socket对象,读出 Socket 输入输出流,将输入流进行解析并提取相关信息,然后实例化一个请求处理任务,并将输入输出流分别包装成 request 和 response 对象 赋给该任务,交由线程池处理。 流程图如图 所示。 图 Http 连接管理组件流程图 Http 连接管理组件由 LifeCycle、 Server、 HttpServer、 ConnectionHandler、RequestHandler、 Request、 Response 等类和接口以及实现线程池的相关类组成。 下面详细介绍一下相关的数据结构。 interface LifeCycle{ void start()throws LifeCycleException。 void stop()throws LifeCycleException。 boolean isStarted()。 } LifeCycle 代表组件的生命周期接口,其目的是以一种一致的方式来管理组件的启动与停止。 服务器中所有具有生命周期的组件如服务器类、应用程序上下文类都必须实现该接口。 interface Server extends LifeCycle{ String getServerInfo()。 String getServerName()。 int getServerPort()。 String getAppBase()。 URLClassLoader getWebappParentClassLoader()。 } Server 代表整个服务器,它包含服务器的相关属性信息,负责服务器的启动与停止。 它由服务器启停组件调用。 HttpServer 类是对 Server 接口的实现,并扩展了对 Servlet 容器的接口。 class ConnectionHandler implements LifeCycle{ ServerSocket openSocket()throws LifeCycleException。 void acc。基于java的web服务器(编辑修改稿)
相关推荐
(5) 由于计算机的体系是开 放式的,所以虚拟仪器的硬件和软件都具有开放性、可重复使用的特点 ,而且硬件还可以互换,这样就使虚拟仪器系统更为灵活。 辽 宁 工 业 大 学 课 程 设 计 说 明 书 ( 论文) 7 课题发展的状况 在虚拟仪器出现之前,传统仪器设备就是普通的模拟测量设备。 每一 种仪器就是一种完全封 闭的专用系统。 随着计算机技术的发展,虚拟仪器的发展大致经历了以下几个阶段。
14 图 基本波形虚拟通道 15 图 PWM波虚拟通道 15 图 基本波形信号时钟 16 图 PWM波信号时钟 16 图 基本信号波形运行 16 图 循环及清除程序 17 图 基本信号发生器程序 17 图 基本信号发生器前面板 18 图 PWM波信号发生程序 18 图 PWM波信号发生前面板 19 图 总程序框图 —— 基本波形 20 图 总程序框图 —— PWM波形 20 图 总程序前面板
发生变化,减小拍打方向根部弯矩对叶片影响。 稳定功率输 出 叶轮的功率输出通常定义为: 上式中, P 为空气密度; V 为风速; Cp 为风能利用系数,即功率系数; S 为风轮扫掠面积。 由式 (24)可知,风轮的输出功率与功率系数的关系非常敏感。 根据相关文献 [47],功率系数与桨叶的桨距角和叶尖速比成非线性关系: 华北电 力大学科技学院本科毕业设计(论文) 7 由上式可知
结构的优势。 Compiler的 Fitter(试配 )模块可 以经过综合的设计恰当地用一个或多个器件实现,这种自动试配功能使设计者得以从冗余的布局与布线工作中解脱出来。 Fitter生成报告文件 (.Rp), 可以 展示设计的具体实现以及器件中未使用的资源。 设计的仿真 电路设计输入完以后,首先需要检验输入是否正确,这是一项简单的逻辑检查, QUARTUS II 提供功能编译的选项。 此时
cuit design .................................... 47 Chapter 6Software design process ....................................................... 48 Software flow design ..................................
内力的表现形式复杂而多变,不可能给出精确的分析和预测,常常用经验公式给出内阻力和速度之间的线形近似关系,同样本文也是将内力近似为作用在主动轮轴上的线性粘性转矩。 外阻力主要产生于车辆一地面的相互作用,主要表现为海泥的压实阻力和海泥的推土阻力,以及深海环境中的海水阻力。 对地面的挤压作用,对车体的运动性能有较大的影响。 假定法向载荷沿履 带长度均匀分布,则履带的沉陷量可由压力一沉陷量方程预测。 (