1 / 93

J2EE 应用服务器 PKUAS

J2EE 应用服务器 PKUAS. 刘天成 liutch@cs.pku.edu.cn 北京大学信息科学技术学院 软件研究所 2004 年 12 月 2 日. 目录. 一、 J2EE 技术介绍 J2EE 发展背景 J2EE 整体框架 J2EE 应用开发 构件技术: Enterprise Java Bean 二、 PKUAS 介绍 PKUAS 概览 主要技术特点 功能和性能 当前状况. J2EE 发展背景( 1 ). 企业应用向分布式应用的转移 实现互连 提供各种企业服务,如 : 安全,事务 多种技术出现,满足分布式应用的开发: CORBA

mandell
Download Presentation

J2EE 应用服务器 PKUAS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. J2EE应用服务器PKUAS 刘天成 liutch@cs.pku.edu.cn 北京大学信息科学技术学院 软件研究所 2004年12月2日

  2. 目录 • 一、J2EE技术介绍 • J2EE发展背景 • J2EE整体框架 • J2EE应用开发 • 构件技术:Enterprise Java Bean • 二、PKUAS介绍 • PKUAS概览 • 主要技术特点 • 功能和性能 • 当前状况

  3. J2EE发展背景(1) • 企业应用向分布式应用的转移 • 实现互连 • 提供各种企业服务,如:安全,事务 • 多种技术出现,满足分布式应用的开发: • CORBA • COM/DCOM • .NET

  4. J2EE发展背景(2) • 激烈的商业竞争,对技术的更高要求 • 时间快 • 低成本 • 多功能 • 高可靠 • 易扩展 • 易集成 :快速开发,快速响应新技术和新要求 :易于开发,降低成本 :提供数据库服务,自动邮件服务等 :完善的安全服务和事务服务 :构件核心机制提供了扩展性和移植性 :通过采用CORBA的互操作协议等集成ERP等遗留应用

  5. J2EE发展背景: 中间件的演化 • Historically, mission-critical apps were built directly atop hardware • Tedious, error-prone, & costly over lifecycles • There are layers of middleware • Commonalities abstraction • Separation of concern

  6. J2EE发展历史及现状 • 历史可追溯到1997年,1999年由SUN公司发起,包括IBM,Oracle,Sybase,BEA等公司共同提出了J2EE分布式框架 • 目前多家大公司都有成熟产品支持: • IBM:WebShpere • BEA: WebLogic • Oracle:9iAS • JBoss:JBoss • ObjectWeb:JOnAS • 金蝶:Apusic

  7. 目录 • 一、J2EE技术介绍 • J2EE发展背景 • J2EE整体框架 • J2EE应用开发 • 构件技术:Enterprise Java Bean • 二、PKUAS介绍 • PKUAS概览 • 主要技术特点 • 功能和性能

  8. Java 2 Platform

  9. J2EE 平台 • 一组完整套件 • J2EE规范: Specification • J2EE参考实现: J2EE Reference Implementation • J2EE兼容性测试集: J2EE Compatibility Test Suite • J2EE蓝图程序: J2EE Blue Prints

  10. J2EE is an End-to-End Solution

  11. 应用开发模型

  12. 互操作性支持

  13. J2EE特点 • 目标:易于开发分布式应用 • 技术特点: • JAVA语言的跨平台特性 • 基于构件的应用模式:EJB • 多种技术的集成 • 互操作和集成能力

  14. 表示层 业务逻辑层 数据层 Applet容器 Web容器 EJB容器 遗产 系统 Applet JSP J2SE EJB Servlet J2SE J2SE 独立客户容器 数据库 管理 系统 独立客户 J2SE J2EE应用服务器 J2EE体系结构 • 支持构件的服务器端中间件

  15. EJB — J2EE的基石 • Enterprise JavaBeans (EJB) 是: Java服务器端服务框架的规范,软件厂商根据它来实现EJB服务器。应用程序开发者可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。 • EJB容器是: 一个管理一个或多个EJB类/实例的抽象。它通过规范中定义的接口使EJB类访问所需的服务。容器厂商也可以在容器或服务器中提供额外服务的接口。 • EJB服务器是: 管理EJB容器的高端进程或应用程序,并提供对系统服务的访问。EJB服务器也可以提供厂商自己的特性,如优化的数据库访问接口,对其他服务(如CORBA服务)的访问。一个EJB服务器必须提供对可访问JNDI的名字服务和事务服务支持。

  16. EJB容器的责任

  17. 目录 • 一、J2EE技术介绍 • J2EE发展背景 • J2EE整体框架 • J2EE应用开发 • 构件技术:Enterprise Java Bean • 二、PKUAS介绍 • PKUAS概览 • 主要技术特点 • 功能和性能

  18. 6方参与共同构筑J2EE应用 • J2EE平台提供者 • 应用构件创建者 • 应用组装者 • 部署者 • 系统管理者 • 工具提供者

  19. 应用构件创建者 • 提供enterprise beans. • 一个bean就是一个可以重用的构件 • 重用级别(从低到高) • Reuse as given • Reuse by customization • Reuse by extension(subclass)

  20. 应用组装者 • 通过组装构件来构建应用 • 编写调用各个构件的代码 • 提供构件间的调用流程 • 提供用户接口 • 编写新的基于特定领域的EJB

  21. EJB部署者 • 将一个或者多个EJB-jar文件作为一个应用部署到一个运行中的操作环境中(应用服务器) • 解析所有的外部依赖条件 • 将所有的EJB进行部署,例如对安全设置进行映射等

  22. 系统管理者 • 监控已经部署的系统

  23. 应用开发过程

  24. 目录 • 一、J2EE技术介绍 • J2EE发展背景 • J2EE整体框架 • J2EE应用开发 • 构件技术:Enterprise Java Bean • 二、PKUAS介绍 • PKUAS概览 • 主要技术特点 • 功能和性能

  25. EJB概念 • EJB — Enterprise Java Bean • Enterprise—highly scalable,highly available,highly reliable,highly secure,transactional,distributed application • JavaBeans—component model(client-side) • EJB—扩充构件模型,实现了企业级Java平台上的服务器端构件模型 • 构件模型 • Activex, JavaBeans • 业务逻辑过于简单,无法满足企业应用需求

  26. 定义 • EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构

  27. EJB特性 • 能够重用,一次编写,到处运行 • 对服务器端计算能够分而治之 • 减少了构建企业级应用的时间 • 单线程构件 • 开发者不需要考虑代码是否线程安全 • 容器自动进行负载平衡,将请求发到不同的实例进行处理

  28. EJB的分类 • Entity Bean • Container-Manage Persistence Entity Bean • Bean-Manage Persistence Entity Bean • Session Bean • Stateful Session Bean • Stateless Session Bean • Message Driven Bean

  29. 实体bean(Entity Bean) 业务数据模型 • 对业务概念的反映,也称为领域类(domain class) • 在持久存储中业务实体的对象视图 • 提供访问和操作数据的对象封装 • 支持多用户共享的数据 • 可以从数据库中存储的属性重新实例化 • EJB 服务器崩溃后仍可重构 • 与数据库中的数据有一样长的生命

  30. 实体bean的持久性 • Bean-Manage Persistence(自管理持久性) • 优点: • 开发者有完全的控制、无需复杂的提供商支持 • 缺点: • 编码复杂、在改变时需要重新编码和部署、影响可移植性 • Container-Manage Persistence(容器管理持久性) • 优点: • 提供商解决,可能会有更好的缓冲和性能、在部署描述符中进行改变即可、可移植性好 • 缺点: • 对容器提供商的工具依赖性强、可能不易反映复杂的数据关系

  31. Session Entity Entity Entity 会话bean(Session Bean) • 会话bean经常用于涉及多个实体bean的业务处理和控制逻辑。

  32. 会话bean(Session Bean)(2) • 相对生命较短(一般与客户同步) • 在EJB服务器崩溃时被删除 • 不表示数据库中的数据,但可以访问数据 • 作为一个客户的代表执行功能

  33. 何时使用会话Bean • 使用会话bean 对针对于某一客户的处理或控制对象建模 • 对工作流、任务和管理活动等建模(如订房、购物车等) • 协调多个实体bean,控制实体bean之间的交互 • 将业务应用逻辑从客户端转移到服务器端

  34. 会话bean 表示一个业务过程 每一客户一个实例 Short-lived:与客户生命同步 暂态的 服务器崩溃后丢失 可以是事务性的 实体bean 表示业务数据 在多个客户间共享实例 Long-lived:与数据库中数据同步 持久的 服务器崩溃后可重构 总是事务性的 会话Bean?实体Bean?

  35. 两种类型的会话bean • 无状态(Stateless)bean • 表达一个无状态的服务(如列表,mail) • 不存储用户相关信息,进行对请求的响应 • 暂态的 • 可用来构造响应频繁而简单的访问的bean池 • 有状态(Stateful)bean • 维护客户状态

  36. EJB构件的实现步骤 • 创建远程接口 • 创建Home接口 • 创建Bean的实现类 • 编译远程接口、Home接口、bean实现类 • 创建部署描述符 • 将以上三个文件与部署描述符文件打包为一个ejb-jar文件 • 部署EJB构件

  37. EJB的组成 • Java文件 • Bean类 • Home接口 • Remote接口 • PK(Primary Key)类 • 部署描述符 • ejb-jar.xml, pkuas-ejb.xml, pkuas-web.xml, database.xml…… • application.xml

  38. 一个EJB的三个关键类 作为Bean的开发者,主要关注于三个类: • EJBHome 接口(扩展javax.ejb.EJBHome接口):使用了factory设计模式,定义了创建、查找EJB的方法。 • EJBObject接口(扩展javax.ejb.EJBObject接口):使用了proxy设计模式,定义了在bean中实现的业务逻辑方法。 • Bean实现类(实现javax.ejb.EntityBean/SessionBean):实现业务逻辑。

  39. EJB的实现(举例)—创建远程接口 // business methods public interface Account extends EJBObject { //return the account information corresponding to this account. public AccountModel getDetails() throws RemoteException; // updates the contact information for the specified account public void changeContactInformation(ContactInformation info) throws RemoteException; }

  40. EJB的实现—创建Home接口 public interface AccountHome extends javax.ejb.EJBHome { public Account create(String userId, String status, ContactInformation info) throws RemoteException,DuplicateKeyException,CreateException; public Account findByPrimaryKey (String userId) throws RemoteException, FinderException; }

  41. EJB的实现—AccountBean的实现 public class AccountEJB implements EntityBean { // entity state private String userId; private String status; private ContactInformation info; // resources private EntityContext context; // implement account interface business methods public void changeContactInformation(ContactInformation info) { this.info = info; } public AccountModel getDetails() { return(new AccountModel(userId, status, info)); }

  42. EJB的实现—AccountBean的实现 // must match signatures of create methods in Home interface public String ejbCreate (String userId, String status, ContactInformation info) throws DuplicateKeyException,CreateException { // set the instance data this.userId = userId; this.status = status; this.info = info; AccountDAO ADAO = new AccountDAO(userId, status,info); try{ ADAO.create(); // insert data in database return (userId); // return primary key }catch (java.sql.SQLException se) { throw new CreateException ("SQL Exception in create:" + se); } }

  43. EJB的实现—AccountBean的实现

  44. PKUAS上可部署包形式 • 直接部署EJB • 以Java ARchive(jar)的形式 • 里面包含一个或多个EJB • Web模块 • 以Web ARchive(war)的形式 • 里面包含JSP页面、JavaBeans等 • 企业应用 • Enterprise ARchive (ear) • 里面包含一个或多个EJB模块(每个EJB模块为一个jar文件)和一个或多个Web模块(每个Web模块为一个war文件)

  45. 应用组装、部署过程 • 编写EJB、JSP、JavaBeans等 • 编译Java类(包括EJB等) • 为EJB编写部署描述文件(ejb-jar.xml, pkuas-ejb.xml) • 为EJB打包(包含EJB需要的类以及它的部署描述文件) • 为每个Web模块编写部署描述文件(web.xml) • 为每个Web模块打包(包含这个Web模块的JSP、JavaBeans和其它类、页面文件等) • 编写整个应用的部署描述文件(application.xml) • 为整个应用打包(包含所有EJB、Web模块以及应用部署描述文件) • 部署应用、启动PKUAS

  46. 编译Java类 • CLASS_PATH • ejb2.0.jar、pkuas.jar、jmxri.jar • 同时编译所有类 • EJB接口、EJB的Bean类等

  47. Create, find client Glue EJBObject Bean EJBHome Business Method container server 从客户端看的EJB视图

  48. 从更深层次理解EJB视图 JDK javax.ejb Bean Provider xxx Container Provider

  49. EJB的其它方法与生命周期

  50. 消息驱动Bean(Message Driven Bean) • 提供对异步调用的支持 • 作为Java Message的消费者

More Related