中间件体系结构和设计模式
扩展接口
• 描述
– 允许组件导出多个接口,当开发人员扩展或修 改组件的功能时,此模式能够防止接口的膨胀 和客户机代码的破坏
事务处理模式
• ACID事务处理模式 • 复合事务处理模式 • 两阶段提交模式 • 审计跟踪模式
ACID事务处理模式
• 描述
– 确保事务处理不会出现非预期的或不一致的结 果,这可以通过确保事务处理拥有ACID属性 来实现。
保护代理模式
• 描述
– 恶意的对象可能想干扰其他对象的完整性,他 们使用反射或其他方法来访问不该它们访问的 方法或变量。基于安全考虑,应该避免这种情 况的发生,可以要求其他对象通过代理访问敏 感对象,以限制对敏感对象的访问。保护代理 模式实现了一些措施,以确保其他对象不能访 问没有授权的敏感对象的特性
• 益处
– 容器能够达到一个高数量用户要求的可伸缩性 ,而bean开发者的负担达到极小
资源共享
• 描述
– 容器能够高效地重用资源,如数据库的连接, 以达到更高的性能
• 益处
– Bean开发者不必开发复杂的共享逻辑
数据存取
• 描述
– 对于由容器管理持久性的实体bean,容器生成 数据存取逻辑
• 益处
中间件软件体系结构
• 中间件体系结构的发展
– 集中式大型机模式 – 文件共享模式 – 客户/服务器模式 – 传统的三层结构模式 – 早期的基于Web模式 – J2EE模式 – .NET模式
中间件软件体系结构
• J2EE/.NET体系结构介绍
J2EE平台的演进
Servlets 2.1 1998年11月
– 原子性 Atomicity – 一致性 Consistency – 独立性 Isolated – 持久性 Durable
复合事务处理模式
• 描述
– 人们通常希望以最小的代价设计和实现正确的 事务处理,与复杂的事务处理相比,简单的事 务处理易于实现,而且也容易保证正确性。通 过较为简单的ACID事务处理可以设计和实现 复杂的事务处理
服务访问与配置模式
• 包装器外观(Wrapper Façade) • 组件配置器(Component Configurator) • 截取器(Interceptor) • 扩展接口(Extension Interface)
包装器外观
• 描述
– 包装器外观设计模式把现有的非面向对象的 API所提供的函数和数据封装在更加简洁、健 壮的、可移植的、可维护的和内聚的面向对象 的类接口中
• 益处
– Bean开发者不必实现书务处理在一个分布式 系统中的复杂管理
安全
• 描述
– 容器在委派一个客户调用之前检查客户是否授 权来调用一个业务方法
• 益处
– 安全策略不必硬编码到企业bean中。它们能 够由部署者和系统管理员来设置以满足企业的 需要
状态管理
• 描述
– 容器在需要释放资源时可以去活一个企业 bean对象。以后,当这个对象被一个客户调 用时,容器激活这个对象
J2EE 1.4 规范
246 pages
J2EE 1.4 技术
• Servlets 2.4 • JSP 2.0 • EJB 2.1 • JMS 1.1 • JTA 1.0.1B • JTS 1.0
• JCA 1.5 • JAXR 1.0 • JAX-RPC 1.1 • SAAJ 1.2 • JACC 1.0 • JavaMail 1.2
• 益处
– 因为群集对于bean开发者是透明的,因此所 有的ejb应用能够运行在一个群集系统上
企业设计模式
– 服务访问与配置模式[10分钟] – 事务处理模式[10分钟] – 分布式体系结构模式[10分钟] – 分布式计算模式[10分钟] – 并发模式[10分钟] – 时间模式[10分钟] – 数据库模式[10分钟]
冗余独立对象模式
• 描述
– 需求确保对象的可用性,即使它或者它的运行 平台出故障时也应如此。可以提供冗余对象来 完成,这种冗余对象不依赖于任何单个公共资 源
提示修复模式
• 描述
– 当冗余对象集中又一个对象失效时,在整个冗 余对象集变为不可用之前必然会发生一次更小 的失效,为了使灾难性失效发生的可能性减到 最小,应该尽快地修复失效的对象
Web 容器
EJB
EJB
EJB 容器
数据库
J2EE提供的服务
• 容器为部署在其中的企业bean提供下列服务
– 分布式对象协议 – 线程管理与同步 – 进程管理 – 事务处理 – 安全 – 状态管理 – 资源共享 – 数据存取 – 系统管理支持 – 失败恢复 – 高可用性 – 集群 – 负荷分担 – 生命周期管理 – 事件服务 –…
发布-订阅模式
• 描述
– 有时需要为一个或多个对象及时传递消息,要 将消息传递给订阅该消息的接收者对象,可分 别把各个消息传递给各个接收者。为了确保传 送可靠,可在传送失败时重发直到成功为止
重发模式
• 描述
– 需要确保对象可靠地将消息发送给远程对象。 如果不成功,再来一次,当对象发送失败后, 可以再试一次,直到发送成功为止
• 益处
– Bean开发者只写本地JAVA代码,不必实现分 布式编程
线程管理与同步
• 描述
– 当需要服务于多个客户请求时,容器启动和停 止线程。容器同步这些线程以避免对一个企业 bean实例的并发方法激活
• 益处
– Bean开发者不必实现复杂的多线程程序。 Bean开发者编码这些也不方法好像企业bean 实例只被一个用户使用
source: /j2ee/1.4/download-dr.html
web services支持
• SOAP • SOAP with Attachments • WSDL • UDDI • SOAP transport
– HTTP – HTTPS
• WS-I Basic Profile 1.0
• JMX 1.2
• J2EE Management API 1.0
• J2EE Deployment API 1.1
J2EE 1.4 与 Web Services
“The Java 2 Platform, Enterprise Edition version 1.4 is the most complete Web services platform ever.”
– Bean开发者不必将失败恢复或重启逻辑编码 到应用中
高可用性
• 描述
– 容器可以提供成熟的高可用性策略对客户屏蔽 各种服务器错误
• 益处
– 因为高可用性支持对于bean开发者是透明的 ,因此任何ejb应用能够制成高可用的,只要 将它们部署在一个实现了高可用性支持的容器 中
群集
• 描述
– 一个高端容器可以分布在一个群集服务的多个 节点上
– 在部署时调整一个企业bean以便和现有的数 据库一起工作
系统管理支持
• 描述
– 容器提供了系统管理工具来管理已经部署好的 应用
• 益处
– 企业bean在运行时可管理。bean开发者不必 开发管理支持作为应用的一部分
失败恢复
• 描述
– 容器能够提供一个重启一个失败的事务处理或 应用的原子性
• 益处
中间件体系结构与设计模式
软件模式专家 J2EE专家
罗勇文
luoyw@
开场白
• 自我介绍
议题
• 中间件软件体系结构[70分钟] – J2EE/.NET体系结构介绍 – J2EE/.NET实例分析
• 休息10分钟 • 企业设计模式[90分钟]
– 服务访问与配置模式 – 事务处理模式 – 分布式体系结构模式 – 分布式计算模式 – 并发模式 – 时间模式 – 数据库模式 • 讨论[10分钟]
进程管理
• 描述
– 容器可以使用与目标服务器最理想的(或者由 系统管理员设定的)那样多的操作系统进程
• 益处
– Bean开发者不必关心如何管理操作系统进程
事务处理
• 描述
– 基于部署描述符的指令,容器也许:将一个方 法调用包装在一个事务处理中,从一个客户移 入事务处理,容器将这个事务处理扩散到资源 管理器和这个企业bean所点调用的其他企业 bean。容器还执行事务处理提交协议
对象标志符模式
• 描述
– 对于在多个对象中出现的对象需要唯一的标识 ,将一个全局惟一的标志符分配给该对象,这 样它在程序或数据库间共享时可以由惟一的身 份
注册模式
• 描述
– 对象需要与其他对象联系,但是如果只知道其 他对象的名字或其提供的服务名,如何与它联 系呢?可以提供一种服务来获取对象、服务或 作用,并返回远程代理,远程代理封装了如何 与命名对象联系的内容
进程对等模式
• 描述
– 为保持进程或软件组件的高可用性,用户希望 在其失效后能够自动重启。将高可用性的软件 组件成对组织,这样当一个失效后,另一个可 以重启它
分布式计算模式
• 对象标志符模式 • 注册模式 • 保护代理模式 • 发布-订阅模式 • 重发模式 • 邮箱模式 • 重量级/轻量级模式 • HeartBeat模式 • 链接多路复用模式
组件配置器
• 描述
– 允许应用程序在不必修改、重新编印、静态地 重新链接应用程序的情况下,在运行时链接和 解链它的组件实现。组件配置器进一步支持在 不必关闭和重启运行的进程的情况下,把组件 重新配置到不同的应用程序进程。
截取器
• 描述
– 允许透明地把服务加到框架中,并且某些事件 发生时能自动地触发服务
J2EE 1.2 1999年12月
J2EE 1.4 2003年11月
1998 1999 2000 2001 2002 2003
EJB 1.0 1998年3月