资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,J2EE Overview,2,Java 2平台,3,What is J2EE?,支持以构件化的方法开发、部署、管理多层结构的分布式企业(Web)应用。 提供一种统一的、开放标准的多层平台。 构件依赖于系统级实体容器(Container)的运行时支持。 编程思想:组件-容器 容器提供: 生命周期管理 构件的部署 为构件的运行指派线程(构件不是独立运行的) 许多构件行为都可以在部署时以声明的方式进行定制。,4,J2EE平台技术,应用构件(组件) 由开发人员实现,构成应用系统 运行在J2EE平台上 包含: 客户端构件 Applets Application Clients 服务端构件 Web构件(Servlets, JSPs) EJBs,5,J2EE平台技术,服务 J2EE应用构件所使用的功能 由J2EE平台提供商实现,分为: Service API(开发时使用) 运行时服务,6,J2EE平台技术,通信 支持协作构件之间的通信 由Container提供,7,J2SE,J2SE,J2SE,J2EE平台的执行模型,JMS,JNDI,RMI/IIOP,JDBC,Java Mail,JAF,Application Client Container,JMS,JNDI,RMI/IIOP,JDBC,JTA,JCA,Web Container,EJB Container,Database,EIS (CICS),EIS (SAP),Applet Container,J2SE,Applet,Application Client,Servlet,JSP,Enterprise Bean,HTTP SSL,HTTP SSL,RMI/IIOP,Client Tier,Middle Tier,EIS Tier,Java Mail,JAF,JMS,JNDI,RMI/IIOP,JDBC,JTA,JCA,8,Component/Container结构,Comp,Services J2EE Container,不需要关心底层(复杂的)常用服务的实现 (事物控制,安全性控制、命名服务等),提供底层常用的服务,Comp,Comp,Comp,9,Container,每个J2EE构件都运行在某个特定的容器内,容器由J2EE平台提供商提供。 容器为组件提供特定的开发用服务和运行时服务(如生命周期管理、安全性管理、事务处理等) 不同类型的容器提供不同的服务。 组件与容器遵循一个标准规范,从而保证二者之间既松耦合,又强有力地交互,这个规范就是J2EE。,10,开发与部署的分离,开发与部署互不相关,不互相限制。开发与部署的分离大大提高了可重用性和可维护性,也使得软件不依赖于具体的厂商。 开发人员一次开发的软件可以部署在不同的环境中 不同的系统资源,如数据库 不同厂商的平台上 不同事务处理、安全性控制策略的应用场合 开发与部署的分离要依赖于J2EE平台提供的大量的服务和系统级特性以及J2EE标准的开放性。,11,基于角色的开发过程,将构建整个软件系统的任务划分到不同的角色 明确的划分任务与责任 不同的阶段有不同的关注重点,这种划分使得每个角色仅关注他所要完成的工作 实现了开发与部署的分离 .,12,J2EE Application Components,13,Client Side Components - Applets,Java类 图形界面( GUI)组件,一般运行在Web浏览器中,也可以运行在支持applet编程模型的应用中(如Java SDK中的appletviewer)。 在J2EE应用中一般用来提供用户界面。,14,Client Side Components Application Clients,Java程序 一般具有图形用户界面。 可以直接访问J2EE中间层的所有构件。 可以直接调用EJB提供的服务。 一般基于浏览器的客户端只能直接访问Web构件的服务,15,Server-Side Components - Servlets,Java类 运行在服务端 不需要图形界面 接收HTTP请求,动态生成HTTP响应。,16,Server-Side Components - Servlets,/demostrate handling a GET request import java.io.*; import javax.servlet.*; import javax.servlet.http.*;public class GetDemo extends HttpServletpublic void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOExceptionresp.setContentType(“text/html“);PrintWriter out = resp.getWriter();String username = req.getParameter(“uname“);String password = req.getParameter(“userpw“);out.println(“);out.println(“GetDemo“);out.println(“);out.println(“Hello “ + username + “);out.println(“Your password was : “ + password +“);out.println(“);out.println(“);out.close(); ,17,Server-Side Components - Servlets,18,Server Side Components - Java Server Pages (JSP),HTML document: 嵌入了JSP特定的tag 在页面中加入Java代码,动态生成页面的内容 在服务器端,JSP页面被编译成Java Servlet执行。, Ch2 Simple jspDate and Time: hellohow are u?,19,Server Side Components - Enterprise JavaBeans (EJB) (1 of 2),Enterprise Java Beans,Entity Beans,Container Managed Persistence,Bean Managed Persistence,Session Beans,Stateless,Stateful,Message Driven Beans,EJB 2.0中引入,20,Server Side Components - Enterprise JavaBeans (EJB) (2 of 2),客户端利用JNDI查找EJB Home。 客户端利用EJB Home的create方法创建一个 EJB。 本地EJB Home通知容器创建一个远程 EJB构件。 容器向客户端返回EJB Object stub。 客户端调用EJB Object上的方法,调用被转发到远程的EJB完成。,J2EE Services: Service API,Service API - JNDI(1/6),Service API - JNDI(1/6),JNDI屏蔽了不同目录服务之间的差异。JNDI service API是和具体的目录服务无关的。这使得我们利用JNDI开发的应用可以不用修改代码而应用到不同的目录服务上。,Service API - JDBC(2/6),Service API - JDBC(2/6),目前JDBC service API的版本是JDBC 2.0。 JDBC 2.0包含了一个内嵌的数据库连接池。 增强了应用的数据库无关性。,Service API - JTA(3/6),事务(交易)管理支持可靠的服务端计算,这在很多关键系统中都是必需的。事务具有如下特性: 原子性 所有相关的操作必须全部成功;如果任何一个操作失败,则所有操作全部撤销。 一致性 一致性保证事务所作的任何改变不会使系统处于无效状态。 隔离性 并发的事务不会互相影响。事务访问的任何数据不会受其它事务所作的修改的影响,直到第一个事务完成。 耐久性 事务提交时,对数据所作的任何改变都要记录到持久存储器中。通常由事务日志实现。,Service API - JTA(3/6),More concerns on distributed transaction 因为分布式事务可能会跨越多个组件、多台机器,并可能涉及多个数据源,所以需要一种两阶段提交协议来实现。 JTA: Java Transaction API 支持分布式事务处理的标准API,与实现无关。 如WebSphere中,利用一种支持两阶段提交的数据库驱动来实现JTA。 可以通过在代码外的描述来定义事务处理级别 参Run-time Service - Transaction,Service API J2EE Connector Architecture (JCA) (4/6),J2EE Server Runtime,JCA,J2EE 构件,J2EE 构件,J2EE 构件,Resource Adapter for the EIS CICS,Resource Adapter for the EIS IMS,Resource Adapter for the EIS SAP,EIS (SAP),EIS (IMS),EIS (CICS),与具体要连接的系统 无关的统一的API,由EIS厂商或者 第三方厂商提供,Service API - Java Mail(5/6),Java Mail API定义了一组在程序中用来 调用邮件功能的API。这组API屏蔽了 真正的邮件服务所使用的协议。 Sun提供了一种Java Mail API的实现, 支持我们在应用中使用Email功能。,Service API - Java Mail(5/6),Java Mail service API使得Email可以在Internet中跨越平台和邮件协议传输。,Service API - Java IDL(6/6),Java IDL service API是用Java实现 的CORBA规范。 支持异质(heterogeneous)对象的连接与互操作性。,J2EE Services: Run-time Services,Run-time Services Life cycle,主要指EJB的生命周期管理 由Container来管理运行于其中的构件的生命周期 EJB规范统一了生命周期管理策略 厂商实现J2EE平台时按照规范实现生命周期管理功能 编写构件时要注意构件的生存期特性,Run-time Services - Transaction,事务(交易)管理支持可靠的服务端计算,这在很多关键系统中都是必需的。事务具有如下特性: 原子性 所有相关的操作必须全部成功;如果任何一个操作失败,则所有操作全部撤销。 一致性 一致性保证事务所作的任何改变不会使系统处于无效状态。 隔离性 并发的事务不会互相影响。事务访问的任何数据不会受其它事务所作的修改的影响,直到第一个事务完成。 耐久性 事务提交时,对数据所作的任何改变都要记录到持久存储器中。通常由事务日志实现。,Run-time Services - Transaction,More concerns on distributed transaction 因为分布式事务可能会跨越多个组件、多台机器,并可能涉及多个数据源,所以需要一种两阶段提交协议来实现。 Container-Managed Transaction 容器来管理事务,method-level 可以在部署时指定事务属性 Bean-Managed Transaction 程序员在代码中利用JTA控制事务,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号