热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

系统架构设计笔记(79)——J2EE

J2EE是针对WebService、业务对象、数据访问和消息报传送的一组规范。这组应用编程接口确定了Web应用与驻留它们的服务器之间的通信方式。J2EE

J2EE 是针对 Web Service 、 业务对象 、 数据访问和消息报传送的一组规范。这组应用编程接口确定了 Web 应用与驻留它们的服务器之间的通信方式。

J2EE 注重两件事,一是建立标准,使 Web 应用的部署与服务器无关;二是使服务器能控制构件的生命周期和其他资源,以便能够处理扩展 、 并发 、 事务处理管理和安全性问题。

J2EE 规范定义了以下几种构件:应用客户端构件 、 EJB构件 、 Servlets和JSP 、 Applet构件。 J2EE 采用的是多层分布式应用模型,意味着应用逻辑将根据功能分成几个部分,用户可以在相同或不同的服务器上安装不同应用构件组成的 J2EE 应用。这些层次可以参见图 1。

系统架构设计笔记(79)—— J2EE

1 表示层

J2EE 客户端可以基于 Web ,也可以基于 Java 。 在 HTML 、 Java script 、 XML 等技术的帮助下, Web 浏览器可以支持强大 、 快速的用户界面。实际上,如果 HTML 足以捕获和显示应用所需的信息,则 HTML 为首选;如果 HTML 不足以达到此目的,则应该由客户端执行必要的捕获和操作。无论是 Applet 还是独立的 Java 程序,都可提供更丰富的图形用户界面。

Applet 还可以与中层通信,从而进一步加强程序控制和系统灵活性。分布式企业应用可以同时包括多种客户端,并且这些客户端都可以访问相同的业务逻辑。如图 2所示:当客户端是 HTML 时, JSP/Servlet 组合将成为能实现业务目标的真正客户端。当客户端是 Java 程序或基于 COM 程序时,它可以直接访问业务逻辑。

系统架构设计笔记(79)—— J2EE

2 应用服务层

一般情况下,应用服务层包含表示层请求的表示逻辑和业务逻辑。表示层由显示 HTML 页面的 JSP 页面和 Servlets 实现。业务逻辑通过 RMI 对象和 EJB 实现。 EJB 依靠容器来实现事务处理 、 生命周期和状态管理 、 资源池 、 安全等问题,容器是 EJB 运行的环境。

2.1 Servlet

Java Servlet s 是指可以扩展 Web 服务器功能的程序 。 Servlet 从客户端接受请求,动态生成响应,然后将包含 HTML 或 XML 文档的请求发送给客户端 。 Servlet 类似于 CGI (公共网关接口),但 Servlet 使用 Java 类和流,更易于编写;由于 Servlet 可编译为 Java 字节码,在运行时, Servlet 例程驻留在内存中,每一个用户请求都生成一条新线程,故而它们的执行速度也更快。

2.2 JSP

JSP 页面是基于文本的 Servlet 开发方式。 JSP 页面具有 Servlet 的所有优点,如果与 Java Beans 类结合在一起,可以容易地将内容和显示逻辑分开。这使得无须了解 Java 代码就能更新页面的外观,更新 Java Beans 类的人也无须深入了解 Web 页面的设计。相对 CGI 而言,由于 CGI 依赖于平台,消耗资源更多,而且程序不能容易地访问参数数据等缺点,故而 JSP 页面和 Servlet 都比 CGI 应用广泛。

用户可以使用带 Java Beans 类的 JSP 页面定义 Web 模板,以便建立由外观相似的页面组成的 Web 站点,而 Java Beans 类负责组织数据。用户还可以借助标记和脚本将内容与应用逻辑捆绑在一起,或是嵌入一些 Java 小应用程序来实现一些简单的 Web 应用。

2.3 JMS

JMS 是支持 Java 程序之间信息交换的 J2EE 机制。这也是 Java 支持异步通信的方法 —— 发送者和接收者无须相互了解,因此可以独立操作。

JMS 支持两种消息传播模式:

点到点( pointtopoint )。基于消息队列,消息产生者将消息发送到队列中。消息消费者可以将自身与队列连接,以倾听消息。当消息到达队列时,客户可以从队列中取走,并给出响应。消息只能发送到一个队列,只能由一个消费者使用。消费者可以过滤消息,以便获得希望获得的消息。

出版和订阅( publish/subscribe )。消息生产者将消息发送到一个话题( topic ),注册到此话题的消费者都能接收到这些消息。这种情况下,许多消费者都能接收到同样的消息。

2.4 JNDI

由于 J2EE 应用的构件可以独立运行,而且是在不同的设备上运行,因此客户端和应用服务器层代码必须以某种方式查找和参考其他代码和资源。客户端和应用代码使用 JNDI ( Java Namingand Directory Interface , Java 命名和目录接口)查找用户定义对象(如 EJB )和环境实体( Environment Entities )。在 JDBC2.0 中,数据源可以绑定到 JNDI 上,并允许应用程序访问。

2.5 事务处理

J2EE 事务处理模型可以在部署过程中定义组成一个事务处理的方法之间的联系,以便事务处理中的所有方法可以作为一个整体存在。如果用户希望完成这一任务,因为事务处理是一系列步骤,要么全部执行成功,要么全部回滚。例如, EJB 中可能有一系列方法,其作用是将资金从一个账户转到另一个账户,方法是借记第一个账户和贷记第二个账户。用户可能希望将全部操作作为一个整体,这样,如果借记之后,贷记之前出现故障,借记将滚回。

事务处理的属性在应用构件的集成过程中确定。它可以将各种方法组合成应用构件间的事务处理,即用户可以在 J2EE 应用中方便地重新分配应用构件的事务处理属性,无须修改代码和重新编译。

J2EE 事务处理 API ( JTA )和 Java 事务处理服务( JTS )形成 J2EE 中事务处理支持的基础,而且更适合 EJB 和JDBC2.0。 JTS 是低级事务处理管理 API ,主要作用是将 Java 映射到对象管理组( OMG )的对象事务处理服务。 JTA 是高级 API ,包括两个部分:

  1. 事务处理接口。该接口允许事务处理定界,通过分布式构件由进行全局事务处理登记来完成工作。这种方法可以令多组操作组成一个事务处理 。

  2. XA 资源接口。基于能处理分布式事务处理的 X/Open/ XA 接口,有时也称为两步提交事务处理,需要多种资源之间的协调,如数据库或序列。分布式事务处理由两步提交协议协调,可跨越用 XA 兼容的 JDBC 驱动程序访问的多个数据库,如针对Oracle/ XA 的 BEAWeb Logic Driver 等 。

EJB 规范定义了 Bean 管理的事务处理和 Container 管理的事务处理。当 EJB 用 Container 管理的事务处理部署时,应用服务器将自动协调事务处理。如果 EJB 由 Bean 管理事务处理部署, EJB 参数必须提供事务处理代码。基于 JMS 或 JDBC API的应用代码可以启动事务处理,或参与先前启动的事务处理。一个事务处理联系与执行应用的应用服务器线程相关,所有事务处理操作都在参与当前事务处理的线程上执行。多数情况下,用户无须担心用 JTA 编写明确事务处理的问题,因为此项工作由 JDBC 完成, EJB API由 Container 处理,并由应用部署说明符配置。这样,用户就可以将精力集中在事务处理设计而非实施上。


系统架构设计笔记(79)—— J2EE

推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
author-avatar
好人___夏洁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有