1.38k likes | 1.68k Views
J2EE 及相关技术概述. 汪 萌 北京大学信息科学技术学院 软件研究所 2006.01.13. 提纲. J2EE 技术概述 J2EE 规范 J2EE 应用服务器发展现状及未来趋势 J2EE 应用开发工具 Web 应用相关技术. 提纲. J2EE 技术概述 J2EE 规范 J2EE 应用服务器发展现状及未来趋势 J2EE 应用开发工具 Web 应用相关技术. 网络分布式应用面临的问题. 网络中的分布式应用程序具有 分布性 分布性体现在数据和操作的分布,应用之间的通信负担及应用物理分布所带来的性能权衡 异构性
E N D
J2EE及相关技术概述 汪 萌 北京大学信息科学技术学院 软件研究所 2006.01.13
提纲 • J2EE技术概述 • J2EE规范 • J2EE应用服务器发展现状及未来趋势 • J2EE应用开发工具 • Web应用相关技术
提纲 • J2EE技术概述 • J2EE规范 • J2EE应用服务器发展现状及未来趋势 • J2EE应用开发工具 • Web应用相关技术
网络分布式应用面临的问题 • 网络中的分布式应用程序具有 • 分布性 • 分布性体现在数据和操作的分布,应用之间的通信负担及应用物理分布所带来的性能权衡 • 异构性 • 异构性体现在网络环境下语法和语义的异构性 • 自主性 • 应用的自主性要求。 • 网络软件必须解决互操作、数据交换、以及相关的分布性、可靠性、安全性等问题
中间件的提出 • 中间件是指基于计算机硬件和操作系统之上,支持应用软件开发和运行的系统软件。 • 它为企业级的分布式应用,提供了一个标准的平台,使得应用软件开发和运行,能够独立于特定的计算机硬件和操作系统平台之上,以实现企业应用系统的集成。 • 中间件的分类 • 一类是底层中间件,用于支撑单个应用系统或解决单一类问题,包括交易中间件、应用服务器、消息中间件、数据访问中间件等; • 另一类是高层中间件,更多用于系统整合,包括企业应用集成中间件、工作流中间件、门户中间件等,它们通常会与多个应用系统打交道,在系统中的层次较高,并大多基于底层中间件运行。
应用服务器的产生 • 构件技术和中间件技术的集大成者 • 应用服务器的诞生 • 在不断提取网络软件的共性,提高应用系统抽象层次的过程中,产生了大量的产品与技术,如中间件、网络软件总体结构等。 • 应用服务器 • 作为一种重要而特殊的中间件,是网络软件的基础设施 • 应用服务器把不同的应用软件作为构件整合到一个协同工作的环境里,并为应用提供了名字、事务、安全、消息、数据访问等服务 • 此外它还提供应用构件的开发、部署、运行及管理功能。
CORBA产品 • 中间件厂商的ORB产品 • BEAM3,IBM Component Broker • 分布对象厂商推出的产品 • IONAObix和OOCObacus等 • 国防科技大学与中创软件 • CORBA/CCM的特点 • 大而全,互操作性和开放性较好 • 功能强大,而且面向多种语言 • 过于庞大复杂,且技术和标准的更新相对较慢
Sun – J2EE • 企业应用向分布式应用的转移 • 实现互连 • 提供各种企业服务,如:安全,事务 • 目标:易于开发分布式应用 • 技术特点: • JAVA语言的跨平台特性 • 基于构件的应用模式:EJB • 多种技术的集成 • 互操作和集成能力
JavaTM 2 Platform, Standard Edition (J2SETM)J2SE 为构造并部署网络为核心的企业应用系统 提供一个完整的、安全的基础 其范围从PC桌面到工作组服务器 J2SE 包括: Java 2 (SDK), Standard Edition Java 2 Runtime Environment, Standard Edition
JavaTM 2 Platform, Micro Edition (J2METM)J2ME是端到端(end-to-end)的Java 技术 适于正在增长的消费类与嵌入式市场 J2ME 是一个被高度优化的运行环境 以下列消费类产品为目标: pagers cellular phones screenphones digital set-top boxes 以及car navigation systems
JavaTM 2 Platform, Enterprise Edition(J2EETM)J2EE是Java 2平台的一个完整版本 将业务紧要(Mission Critical)的企业应用系统 推向任何web 浏览器 J2EE将SUN公司的多种技术集成到一个体系结构中 并提供了一种应用程序编程模型、兼容性测试套件 以降低开发网络软件的复杂性与代价
三层体系结构 • 表示层 • 一般位于客户端的浏览器或基于Java 的程序。同时,服务端的Web构件也负责表示逻辑的处理,如表单生成、HTML页面管理等。 • 业务层 • 位于服务器端,一般而言,Web构件可进行简单的业务处理,而EJB构件负责复杂的业务处理。 • 数据层 • 也称后端层,是遗产应用和数据库的组合,如企业资源规划系统、大型主机事务处理、数据库系统等。
表示层 业务逻辑层 数据层 Applet容器 Web容器 EJB容器 遗产 系统 Applet JSP J2SE EJB Servlet J2SE J2SE 独立客户容器 数据库 管理 系统 独立客户 J2SE
EJB— J2EE的基石 • 构件模型 • Activex, JavaBeans • 业务逻辑过于简单,无法满足企业应用需求 • EJB—扩充构件模型,实现了企业级Java平台上的服务器端构件模型 • Enterprise—highly scalable,highly available,highly reliable,highly secure,transactional,distributed application
EJB • Enterprise JavaBeans (EJB) • Java服务器端服务框架的规范,软件厂商根据它来实现EJB服务器。应用程序开发者可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题 • 是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构 • EJB容器 • 一个管理一个或多个EJB类/实例的抽象。它通过规范中定义的接口使EJB类访问所需的服务。容器厂商也可以在容器或服务器中提供额外服务的接口
EJB特性 • 能够重用,一次编写,到处运行 • 对服务器端计算能够分而治之 • 减少了构建企业级应用的时间 • 单线程构件 • 开发者不需要考虑代码是否线程安全 • 容器自动进行负载平衡,将请求发到不同的实例进行处理
EJB的分类 • Entity Bean • Container-Managed Persistence Entity Bean • Bean-Managed Persistence Entity Bean • Session Bean • Stateful Session Bean • Stateless Session Bean • Message Driven Bean (new in EJB2.0)
实体bean(Entity Bean) • 对业务概念的反映,也称为领域类(domain class) • 在持久存储中业务实体的对象视图 • 提供访问和操作数据的对象封装 • 支持多用户共享的数据 • 可以从数据库中存储的属性重新实例化 • EJB 服务器崩溃后仍可重构 • 与数据库中的数据有一样长的生命
实体bean的持久性 • Bean-Managed Persistence(自管理持久性) • 优点: • 开发者有完全的控制、无需复杂的提供商支持 • 缺点: • 编码复杂、在改变时需要重新编码和部署、影响可移植性 • Container-Managed Persistence(容器管理持久性) • 优点: • 提供商解决,可能会有更好的缓冲和性能、在部署描述符中进行改变即可、可移植性好 • 缺点: • 对容器提供商的工具依赖性强、可能不易反映复杂的数据关系
Session Entity Entity Entity 会话bean(Session Bean) • 会话bean经常用于涉及多个实体bean的业务处理和控制逻辑。
会话bean(Session Bean) • 相对生命较短(一般与客户同步) • 在EJB服务器崩溃时被删除 • 不表示数据库中的数据,但可以访问数据 • 作为一个客户的代表执行功能 • 可以加入事务
何时使用会话Bean • 使用会话bean 对针对于某一客户的处理或控制对象建模 • 对工作流、任务和管理活动等建模(如订房、购物车等) • 协调多个实体bean,控制实体bean之间的交互 • 将业务应用逻辑从客户端转移到服务器端
会话bean 表示一个业务过程 每一客户一个实例 Short-lived:与客户生命同步 暂态的 服务器崩溃后丢失 可以是事务性的 实体bean 表示业务数据 在多个客户间共享实例 Long-lived:与数据库中数据同步 持久的 服务器崩溃后可重构 总是事务性的 会话Bean?实体Bean?
两种类型的会话bean • 无状态(Stateless)bean • 表达一个无状态的服务(如列表,mail) • 不存储用户相关信息,进行对请求的响应 • 暂态的 • 可用来构造响应频繁而简单的访问的bean池 • 有状态(Stateful)bean • 维护客户状态
消息驱动Bean(Message Driven Bean) • 提供对异步调用的支持 • 作为Java Message的消费者
EJB接口 JDK javax.ejb Bean Provider xxx Container Provider
Create, find client Glue EJBObject Bean EJBHome Business Method container server 从客户端看的EJB视图
6方参与共同构筑J2EE应用 • J2EE平台提供者 • 应用构件创建者 • 应用组装者 • 配置者 • 系统管理者 • 工具提供者
J2EE Packaging J2EE Application .EAR file Application DD Web Module .WAR file EJB Module .JAR file Client Module .JAR file HTML, GIF, etc. Client Class JSP Web DD EJB DD Client DD Enterprise Bean Servlet DD = Deployment Descriptor
应用构件创建者 • 提供enterprise beans. • 一个bean就是一个可以重用的构件 • 重用级别(从低到高) • Reuse as given • Reuse by customization • Reuse by extension(subclass)
应用组装者 • 通过组装构件来构建应用 • 编写调用各个构件的代码 • 提供构件间的调用流程 • 提供用户接口 • 编写新的基于特定领域的EJB
EJB部署者 • 将一个或者多个EJB-jar文件作为一个应用部署到一个运行中的操作环境中(应用服务器) • 解析所有的外部依赖条件 • 将所有的EJB进行部署,例如对安全设置进行映射等
系统管理者 • 监控已经部署的系统
Pet Store 网上宠物商店
域划分 • Pet Store 电子商务网站 • 一个Web 应用程序,购买者可以通过web浏览器购买商品 • Pet Store 管理应用程序 • 一个Web 应用程序,企业管理员可以察看销售情况,手工接受或拒绝订单 • Pet Store 订单处理中心 • 一个管理订单执行的面向流程的应用程序 • Pet Store 提供商 • 一个管理给客户送货的面向流程的应用程序。
表示层 业务层 数据层 产品 登录 客户 顾客 网上店面 购物篮 产品 购物篮条目 目录 估价 订单 产品细节 订单 订单条目 购物篮查询 订单条目 银行账号 银行帐号 购买 银行出纳
表示层 • 登陆 servlet • 网上店面 servlet • 目录 servlet • 产品细节 servlet • 购物篮查询 servlet • 购买 servlet
表示层(Servlet) • SignOn 登录界面 • SignOff 注销界面 • Seach 查找界面 • Product 产品显示界面 • Main 商店主界面 • Items 宠物项目显示界面 • Item 宠物单项显示界面 • Errors 报错界面 • Custom 客户信息显示界面 • Cart 购物车界面 • CreatCustom 注册用户界面
业务层 • 产品 Entity Bean • 顾客 Entity Bean • 购物篮 Stateful Bean • 购物篮条目 Stateful Bean • 估价 Stateless Bean • 订单 Entity Bean • 订单条目 Entity Bean • 银行账号 Entity Bean • 银行出纳员 Stateless Bean
业务层(Session EJB) • 异步消息处理AsyncSenderEJB-(Stateless) • 转化购物车内容和客户信息成为XML的订单(order)消息,传给订单处理中心 • 目录CatalogEJB-(Stateless) • 显示分类目录 • 购物车ShoppingCartEJB-(Stateful) • 维护个人的购物车信息 • 登陆SignOnEJB-(Stateless) • 创建和认证系统用户 • 唯一ID产生器UniqueIdGeneratorEJB-Stateless) • 创建系统唯一标识
业务层(Entity Beans ) • 客户CustomerEJB- • 跟踪客户ID,帐户,和个性化 • 个性化ProfileEJB- • 跟踪喜好的语言,种类,甚至广告bar • 合同ContactInfoEJB- • 跟踪名字,电话, email,和地址 • 信用卡CreditCardEJB- • 跟踪信用卡号,类型和过期日期 • 地址AddressEJB- • 跟踪两行的地址信息,州,邮编和国家 • 用户UserEJB- • 代表一个登陆到系统中的用户,跟踪他的用户名/保密字 • 收银台CounterEJB- • 一个帐户对应一个特殊的前缀,仅仅用在产生唯一ID时候
数据库层 • 客户表 Custom • 商品表 Product • 商品条目表 ProductItem • 订单表 Order • 订单条目表 OrderItem