J2EE Architecture(6)

简介: J2EE Architecture(6) 1、企业解决方案 很多企业在发展过程中,购置或自行开发了多种应用软件,这些软件,可能基于不同的硬件,使用互不兼容的操作系统,经专用协议与其它应用程序交流信息。

J2EE Architecture(6)


1、企业解决方案
很多企业在发展过程中,购置或自行开发了多种应用软件,这些软件,可能基于不同的硬件,使用互不兼容的操作系统,经专用协议与其它应用程序交流信息。
为了满足这些应用程序的异步通信要求,一批中间件解决方案应运而生。如IBM的MQ系列、TIBCO公司的TIBCO、微软的MSMQ,但这些方案带来了其它的问题。因为无论是否使用了中间件,这些解决方案都缺少规范约束,企业也不愿接受这种思维。
注:MSMQ(Microsoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。其实现原理是:消息的发送者把自己想要发送的消息放入一个容器中(称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。
J2EE是很好的企业解决方案。在J2EE上,可以快捷地开发和部署企业应用程序,可将应用程序部署为“组件”,并在“容器”环境中部署这些组件。
2、J2EE规范
J2EE规范本质上是文档记录,详细描述一些约束企业平台行为的规则和条件。J2EE规范主要面向一下两类专业人员:
1)J2EE平台和解决方案厂商
2)企业应用程序架构师和开发人员
3、Servlet规范
1)Servlet是运行在Web服务器上的Java程序,用于响应客户请求。
Servlet是Java组件,部署在Web服务器上,能在请求/响应通信模式下有效工作。
2)GenericServlet是独立于协议的Servlet。按照需要扩展GenericServlet后可以实现与协议相关的Servlet。HttpServlet就是一个典型例子,它扩展了GenericServlet,并将HTTP作为通信协议。
3)Servlet2.3文档的Servlet规范
4、Servlet规范详解
1)Servlet接口
可使用两种方式之一创建Servlet:
(1)实现Servlet接口
(2)扩展的GenericServlet类或javax.servlet.http.HttpServlet类
在创建Servlet后,还要描述Servlet细节,以及在运行时环境中,Servlet及Web应用程序中其它关联Web组件的附加信息。
规范将XML文档中嵌入的这些信息称为部署描述符,供Web容器在部署组件时使用。在创建和部署Servlet后,Servlet成为Web服务器“容器”中的“实例”。
Web组件设计人员可按照设计标准,选择创建一下两类Servlet:
(1)单线程Servlet
(2)多线程Servlet
多线程Servlet是Web服务器“容器”的“单个实例”,Web容器将所有客户请求转发给一个实例。规范也允许创建多个Servlet实例,以便为各个客户请求提供服务。此时的Servlet类需要实现SingleThreadModel接口。
Servlet容器厂商需要确保合理地加载和实例化Servlet。
第一种方法是在部署期间,在启动容器本身时,由Servlet引擎加载和实例化Servlet;
第二种方法是在第一个客户请求到达容器时,加载和实例化Servlet。
2)Servlet生命期
Web容器的Servlet组件的生命期可分为3个阶段:
(1)Servlet开始
Servlet会经历一个简单的生命历程。init()方法使Servlet进入“就绪”状态;之后,Servlet可接收服务请求;当容器决定销毁Servlet时,将调用destroy()方法。
在初始化过程中,init()方法使用ServletConfig对象。它包含Servlet需要的初始化参数的名-值对。通常,目录、文件路径及其它资源信息将写入这个对象。
未初始化的Servlet由容器卸载,不经历通常定义的Servlet生命期。
未初始化的Servlet不能接收客户端的任何请求,也不能对它运行destroy()方法。
(2)Servlet服务
Servlet容器可能通过Servlet的service()方法发送多个并发请求,故在设计service()方法时,需要考虑并发处理多个线程,还要注意灵活地“同步”全部或部分service()方法,尽量避免性能的大幅下降。
在Servlet生命期,服务线程的执行可能引发异常。
出现异常时,Servlet会变得临时不可用,或长期不可用。如长期不可用,则容器需要运行Servlet的destroy()方法,并释放资源。如果Servlet是临时不可用,容器将异常返回客户端,并显示消息,要求在一定时间后重试。
(3)Servlet结束
容器可在任意长的时间内使用一个Servlet实例,或SingleThreadModelServlet的多个实例。Servlet实例可一直延续到Servlet容器本身的生命期结束为止。
当容器认定不再需要某个Servlet时,可以调用Servlet的destroy()方法,释放Servlet占用的所有容器资源。
注意:容器不能调用活动的Servlet的destroy()方法,在调用Servlet的destroy()方法前,容器需要确保以下两点:
一是阻塞更多新请求;
二是完成所有待处理请求。

目录
相关文章
|
Android开发 Java Kotlin
Architecture -- WorkManager
1. WorkManager 1). 简介 其实就是"管理一些要在后台工作的任务, -- 即使你的应用没启动也能保证任务能被执行",WorkManager在底层, 会根据你的设备情况, 选用JobScheduler, Firebase的JobDispatcher, 或是AlarmManager。
906 0
Enterprise Architect学习笔记-EA中关系
Enterprise Architect中定义的关系主要有一下几种: ●Associate(关联):类之间有关联,通常是作为变量存在; ●Aggregate(聚合):类A包含类B或由类B组成;...
1120 0
|
开发框架
J2EE Architecture(18)
J2EE Architecture(18)
701 0
|
开发框架
J2EE Architecture(13)
J2EE Architecture(13)
713 0
|
API 容器 开发框架
J2EE Architecture(7)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1605607  J2EE Architecture(7) 1、Servlet上下文Web服务器能支持若干Web应用程序。
845 0
|
开发框架
J2EE Architecture(15)
J2EE Architecture(15)
751 0
|
Java 测试技术 应用服务中间件
J2EE Architecture(4)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1601797 J2EE Architecture(4) 在Java语言从客户机/服务器环境发展为分布式平台后,J2EE应运而生。
1054 0
|
XML Java 数据格式
J2EE Architecture(11)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1609728 J2EE Architecture(11) 1、JSP文档(JSP Document)根据XML语法调整格式的JSP页称为JSP文档。
730 0
|
Java 容器
J2EE Architecture(12)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1611378 J2EE Architecture(12) 1、EJB规范EJB(Enterprise JavaBean)是最重要的组件,也是J2EE技术的重要组成部分。
1026 0
|
Java API 数据库
J2EE Architecture(5)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1603877 J2EE Architecture(5) 1、J2EE标准产品标准产品是J2EE平台的有形方面:1)应用程序组件客户层组件:典型的客户端有Java应用程序、Java applet和瘦客户端等;表示层组件:表示层组件在Web服务器环境中运行,Servlet、JSP和HTML等都是典型例子。
859 0