本节讨论J2EE平台的一些细节以及在WebSphere中如何实现它的。
通过本节的学习我们应该达到的目的:
? 讨论基本J2EE术语
? 讨论定义在J2EE中的角色以及与这些角色相关的工具
? 讨论WebSphere如何配置J2EE 1.3规范的各部分
? 讨论J2EE的安全配置
? 简短论述Java基础
? 论述J2EE对象模型以及WebSphere如何实现它
? 论述对象技术
? 论述服务技术
? 论述通信技术
我们将通过本书后面的练习来检验我们的学习效果。
首先介绍一些基本概念:
l 对象
- 客户端对象
? Applets
? Application Clients
- 服务器端对象
? EJBS
? Web对象(Servlets,JSP)
l 服务
- J2EE对象利用的功能
- 由J2EE平台提供者(WebSphere)执行的API
l 通信
- 使合作的对象间能够通信
- 由容器提供
图1-26
从纯粹技术的角度来说,我们可以把J2EE规范理解成如图1-26所示的三个方面:
对象:由应用开发者提供,包括servlets、Java Server Pages和Enterprise Java Beans。这些对象存在于J2EE容器中,该容器由中间件开发商提供(如IBM的WAS)。J2EE容器必须能够提供一定数量的服务和通信。
服务:能够调用标准API访问对象的功能。例如,当一个对象使用JNDI API来访问命名服务时,该对象就必须能使用JDBC APIs来访问相关数据库。这些APIs需要容器的支持。每一级的J2EE规范都要求相应API系列的支持。例如,由WebSphere 4.0支持的J2EE当前级是1.2,这就以为着支持JDBC级别2.0。
J2EE的本质是对分布式、面向对象的基础结构的定义。在这个分布式的环境中对象要相互通信,容器就必须提供相应的机制。在J2EE标准中的通信机制包括:远程方法调用的RMI/IIOP、有计划地访问e-mail的JavaMail和基于报文存取技术的消息。
下图显示了J2EE的对象模型:
图1-27
J2EE规范定义了一个包结构,该包结构巧妙地映射了多层体系结构。
J2EE应用放置在单独的容器中。需要指出的是:依照J2EE规范,不仅是EJB而且Servlets、JSPs甚至Java 胖(thick)客户都有各自单独的容器。从而可以对角色进行清晰的分类和映射:
- 应用客户端容器(Application Client Container):实现GUI或者信息在屏幕上的物理再现;
- Web容器:JSP和Servlets放在其中,执行表示逻辑;
- EJB容器:完成业务逻辑
- Applet容器:Web浏览器和运行在客户端的Java插件组合。
容器和包含在容器中的代码利用了很多的标准J2EE函数和API。
在了解了基本概念之后我们向将介绍应用服务器的设计模式:MVC方法(Model-View-Control)。图1-28是 MVC方法的示意图。
图1-28
MVC对应于电子商务应用框架:
- 模型(Model)由JavaBeans和EJB表示。它由可能使用IBM企业连接的Java代码实现。
- 视图(View)由JSPs来实现。
- 控制(Control)逻辑由Java Servlets来实现。
每一层都可能由不同的人来执行。各层具有统一接口。WebSphere建议使用瘦客户端。在绝大部分的案例中,全部代码和逻辑都位于服务器中,只需要标准Web浏览器通过HTTP与服务器通信。
基本概念中包含三个方面:对象、服务、通信。首先介绍对象:
一、客户端对象
(一)、Applets
l 通常在Web浏览器中执行的GUI对象。
l 也能在支持applet编程模式的其它应用和设备中执行。
l 典型地,是为J2EE应用提供用户界面。
(二)、Application Clients
l Java可编程语言程序
l 通常是GUI程序
l 能够访问在J2EE中间层的所有服务。
(三)、Servlets
l Servlets是将应用逻辑嵌入到HTTP请求-响应过程中的Java类。
l J2EE 1.2包括:
- Servlet 2.2规范
相对于Servlet 2.1,作为J2EE应用的一部分的Servlet 2.2扩展了对Web应用的打包和配置支持。Servlet 2.2建立了包含在J2EE平台中、独立于操作系统的安全机制,并为Web Application提供支持。除了java:comp/JNDI空间外,Servlet 2.2已经包含在了WebSphere 3.5.2版中。
Servlet 2.2的主要变化:
1、 会话作用域
在2.2中,作用域是在每个Web应用中。在同一个servlet引擎中不同的Web应用中的servlets不能共享会话信息。
在2.1中,作用域范围是每个Servlet引擎中。
2、 HTTPSession
getValue(String)由getAttribute(String)替代
getValueNames()由getAttributeNames()替代
putValue(String,Object)由setAttribute(String,Object)替代
removeValue(String)由removeAttribute(String)替代
3、 已删除的包
com.ibm.servlet.connmgr。使用JDBC连接池来代替。
二、服务器端对象
(一)、Java Server Pages(JSP)
l HTML文档:
- 嵌入JSP特定标签
- 内嵌Java代码
l 在服务器上,JSP页面被解析和编译到Java Servlet中
l WebSphere 4.0完全支持JSP1.1。
注解:
JSP使服务器端脚本能使用Java。服务器端脚本不能和客户端脚本互换。客户端脚本(JavaScript或Java Applet)对于执行输入有效性测试和其它取消与服务器端连接的计算是很重要的。
JSP页面是一个有特殊嵌入标签和内嵌Java代码的HTML文档。在运行时,JSP页面被解析和编译到一个Java Servlet中。JSP页面使我们能在Web页面中有效地把HTML编码从业务逻辑中分离出来。JSP页面可通过Web页面编辑器来建立。与编辑一个servlet相比JSP提供创建动态内容的一个更简单的机制。
解析、代码生成和编译只需要执行一次(如果.jsp文件没有改变)。加载和执行是遵循一般Servlet加载、执行规则的单独的步骤。如果“JSP Servlet”已被加载,且针对JSP页面的一个请求已经产生,则JSP Servlet的方法就被唤醒。如果JSP Servlet存在(.class文件)但没加载,则立即加载并唤醒service方法。
(二)、Enterprise JavaBeans(EJB)
EJB包含会话Bean和实体Bean,如下图所示:
图1-29
Session bean(会话bean)特征:单客户端、短期存在、不能从崩溃中恢复
Session bean的分类:
无状态(Stateless) – 用于简单事务,执行该事务的所有信息必须是在同一时间里显示。无状态Session bean有高性能和可重复使用的特点。应用于单阶段的事务管理。
有状态(Stateful) -用于多阶段事务。
Entity bean(实体bean)特征:多客户端、长期存在、可从崩溃中恢复
Entity bean能是:
Bean Managed Persistence(BMP) – 编程人员控制数据访问。包含了存储和重新获取数据的代码。
Container Managed Persistence(CMP) – EJS容器处理所有数据访问方面的问题,使编程人员把精力集中在业务逻辑上。
一个Session Bean 的示例:
图1-30
过程描述如下:
1、 客户端使用JNDI找到Home;
2、 客户端使用EJB Home的create方法来创建一个会话EJB;
3、 本地EJB Home通知容器创建一个远程EJB对象;
4、 容器返回给客户端一个EJB对象存根
5、 客户端这时调用在EJB对象中的本地方法,该方法被转发到远程EJB中。
在图1-30中我们可以看到,EJB环境中的对象有:
¨ 客户端:这是一个希望使用EJB的Java程序(如,一个servlet)。
¨ EJB服务器:为支持EJB对象而提供一系列标准服务的应用服务器平台。这些服务包括:
- 有权使用分布式事务管理服务
- 激活/停用服务
- 负载平衡和failover支持
- EJB容器:对于所有EJBs有实时功能。它又提供以下服务:
? 远程访问/网络互操作
? 交易管理
? 验证和授权
? 资源池
? 对多用户的并行服务
? 线程和过程管理
? 群集和高可用性
¨ EJB环境使用Java Naming and Directory Interface(JNDI)。在WAS AE版中,JNDI实现的是一个CORBA命名服务的接口。
¨ EJB Home:容器对于配置在其中的每一个组件都实现一个Home,并使客户端可经由JNDI获取Home。客户端使用Home接口以创建和删除EJB对象。
¨ EJB对象(EJB Object):提供EJB的外部表示。它揭示对象中所有与应用相关的接口,但不包括容器管理和控制对象的接口。它由容器在配置时产生。
(三)、EJB 1.1的改变(相对于1.0)
l 在大多数例子中,我们不需要修改EJB 1.0的代码以使它能在EJB 1.1环境下使用。
l 部署:
- 在1.0中,部署信息放在非标准序列化文件中。
- 在1.1中,使用部署描述文件(Deployment Descriptor):
? 必须以XML方式
? WebSphere 4.0 Application Assembly Tool可用来创建EJB部署描述文件,用手工输入方式创建也行。
l JNDI检查:
- 在EJB 1.0中,JNDI查找调用如下:
initialContext.lookup(“com/ibm/Hello”);
- 在EJB 1.1中,JNDI查找调用如下:
initialContext.lookup(“java:com;/env/ejb/com/ibm/Hello”);
以上是“对象”概念的详细描述,接下来我们介绍“服务”。
一、服务:JNDI
l JNDI允许组件保存和重新获得已命名的Java对象。
l J2EE 1.2需要JNDI 1.2的支持
- WebSphere 4.0提供集成的JNDI 1.2。
l 容器提供两级命名方案:
- “本地”,只读方式,对象可访问
- “全局”,实际的JNDI命名空间
- 在使用时本地名称被“绑定”到他们的全局副本中 。
注解:
API对于Java程序提供命名和目录功能。命名服务提供名字-对象的映射。
JNDI相对于一些特殊目录访问协议是独立的。它允许使用目录服务和对Java实例进行简单的控制。
组件创建一个javax.naming.InitialContext对象以访问它的命名文本,。WebSphere 4.0提供一种新的命名服务:com.ibm.websphere.naming.WsnInitialContexFactory。WebSphere 3.5.2+使用com.ibm.ejs.ns.jndi.CNInitialContexFactory。
系统提供的对象(如UserTransaction对象)保存在Java命名空间的java:comp/env中。用户定义的对象则保存在java:comp/env的子文本中:
java:comp/env/ejb
java:comp/env/jdbc
l 提供独立于开发商的数据库连接。
l 提供查询、更新相关表和把结果翻译成Java数据类型的一般方法。
l JDBC 2.0是J2EE规范当前的最高版本。
l JDBC驱动程序促使了以下三件事情的实现:
1、 建立到数据库的连接;
2、 发送查询和更新语句到数据源;
3、 处理结果。
图1-31
注解:
通过SQL为Java应用提供对大多数数据库管理系统的访问。
规范包括两个部分:
核心功能(java.sql)提供基本数据库服务;
扩展(javax.sql)提供连接池和相关处理的能力。
三、服务:事务
l JTA是API而JTS是相应实现
l JTA是对于分布式事务的接口。
- J2EE需要JTA 1.0级
- 由WebSphere和支持JTA的JDBC驱动程序执行。
注解:
JTA面向应用开发者而JTS面向中间件提供商。
Java Transaction API(JTA)允许应用访问事务。JTA为事务管理者和参与到分布式事务系统的成员之间提供标准Java接口,这些参与到分布式事务系统的成员有:事务性应用、J2EE服务器以及控制共享资源访问权的管理者。
Java Transaction Service(JTS)指定事务管理者的实现,该管理者支持JTA并实现了Java中对象管理组的映射。JTS事务管理者提供了一些服务和管理功能,它们是:支持事务划分、事务资源管理、同步以及信息传播。
启动事务的两个方法:
计划性的方法是使用javax.transaction.UserTransaction接口;
说明性的方法是使用EJB Container Managed Transaction
四、服务:连接器体系结构(J2C)J2EE Connector Architecture
图1-32
J2EE Connector Architecture(J2C)不是J2EE 1.2规范的成员。J2C类似于一般连接框架(Common Connector Framework),由Java平台实现。J2C是J2EE 1.3版草案中的成员。这也是WebSphere 4.0中新增加的特征之一。
J2C提供对ERP(Enterprise Resource Planning)和主框架系统如IBM的CICS和IMS的特殊访问。J2C提供一个一般客户接口API从而简化了对不同后台企业信息系统(Enterprise Information Systems,简写为EIS)的访问。其方法是把应用编码到单接口中,而不是对每一个后台系统提供一个唯一的接口。
一般用户接口中的连接是一个资源适配器,它由后台系统开发商或第三方提供。
最后我们介绍“通信”概念。
一、通信:JMS
l JMS – Java Messaging Service
- 对于异步传输消息的可靠接口
l AE中可以使用,但AEs或AEd无此功能。
消息通信的方式有:
对等网络:任何用户都能从另一用户中发送(或接收)消息。
松耦合:发送者和接收者不必在同一时间都能通信—RMI是紧耦合。
异步:JMS提供者能在他们到达时传递消息;在接受消息时用户不必为此发送请求信息。
可靠:JMS API能确保消息发送一次且只发送一次。
点到点信息:
用户发送消息到另一个用户的消息队列中。每个消息有一个接收者。
发布-预定消息:
用户预定一个称为主题的众所周知的节点。
所有订户接收发送到主题的消息。
主题调节发布者和接收者的激活和停用。
JMS/XA在AEs中不能使用。
AE支持JMS/XA。JMS/XA需要MQSeries。
二、通信:RMI和RMI/IIOP
l RMI – Remote Method Invocation
- 专用于Java并只允许在Java中编程的对象进行远程交互作用。
- 使用JRMP(Java Remote Messaging Protocol)进行通信。
l RMI/IIOP
- 把本地方法调用转化为远程方法调用
- EJB客户使用RMI/IIOP与另外的EJB进行通信
- J2EE 1.2支持RMI/IIOP 1.0
Java RMI不提供CORBA提供的所有服务。RMI拥有分布式的无用信息收集能力。
应用对象提供者在IDL远程中定义了对象接口,并使用IDL编译器产生客户和服务器存根(该存根把对象连接到对象请求代理(ORB)中),还产生一个库使CORBA对象能相互定位和通信。ORB相互间的通信使用Internet Inter-ORB Protocol(IIOP)。
RMI-IIOP包含rmic编译器,该编译器产生以下事物:
- 客户和服务器的存根;
- 一个与RMI接口兼容的IDL文件。为了产生C++服务器对象,应用对象提供者将使用IDL编译器来产生服务器存根和服务器对象的框架;
- 一个CORBA API和ORB。
在本节的以下部分将介绍J2EE的细节知识以及在WebSphere中的实现,首先我们对Java做大致的介绍
一、Java的基本概念
l Java程序由类组成
l 类由方法组成
- 方法执行相关任务并在完成后返回信息
l Java程序包:
- 相关的类放入包中
- 类或包以及相关的资源散布在JAR或ZIP文件中。
l JVM类加载器使用类路径来定位类
- 对于在JAR文件中的类,JAR文件名不需在类路径中。
- 对于不在JAR文件中的类,该类应该在与包名称相匹配的目录中,其父目录必须在类路径中。
- 例如:classpath=c:\WebSphere\Appserver\jdk\;
注解:
Java是由Sun公司创建的面向对象语言,其编程结构类似于C++和Smaltalk。Java在基础版本中就有丰富的功能和多种服务(如多线程、网络支持、图形用户界面支持),而不是通过开发商在需要时再增加不同的库。
Java和其它语言的一个重要不同在于其源代码和编译代码都是独立于机器的。Java程序被编译成独立于机器的字节码。
字节码由Java虚拟机(JVM)提供解释,而JVM为Java程序提供运行时服务和接口,其中就包括多线程支持。JVM(Java Virtual Machines)在很多操作系统、机器类型和嵌入系统中都可以获得,这就使Java比脚本语言拥有了更好的性能和可移植性优点。
为了开发或运行Java程序我们需要以下部分中的一个:
? Java Development Kit(JDK):包含了Java编译器、JVM、类库和调试工具。
? Java Run-time Environment(JRE):包含JVM和类库。
? Integrated Development Environment(IDE):如IBM VisualAge for Java为开发和调试提供了图形化用户界面、可视化生成工具、项目和版本管理。他们包括JDK以及一些标准扩展和开发商指定的扩展。
二、Java程序
l Java程序:
- 应用程序:独立于操作系统的程序,运行在自己的JVM中。如:管理控制台。
- Applets:客户端、运行在Web浏览器中。
- Servlets:服务器端、运行在Web容器中。
- JavaBeans:可重用组件。
- Enterprise JavaBeans(EJB):可重用组件,用于分布式应用中,运行在EJB容器中。
- Java Server Pages(JSPs):含有Java写的服务器端脚本的Web页面,运行在Web容器中。
使用Java可以在不需要其它软件(除JVM外)的情况下开发独立于操作系统的应用。在WebSphere中的很多产品都是独立于操作系统的Java应用。
Applets是运行在Web浏览器窗口中某一区域的小程序。Applets的一个缺点是Applet代码需要从服务器端下载,使得它们必须很小以减少下载时间。
Servlets是使用Java Servlet API以及与它相关的类和方法的服务器端Java程序。与applets在浏览器中运行并扩展了该浏览器的能力相类似,servlets运行在Web服务器中(如WAS)并扩展了服务器的能力。当浏览器发送一个请求到服务器时,服务器将该请求信息送到一个servlet中处理,并从中接收返回给浏览器的响应信息。
JavaBeans是遵循由Sun公司规定的JavaBean规范的Java类。它们被设计成能够从其它Java程序调用的可重用组件。为了达到这个目标,JavaBeans有调用参数、方法和事件的标准途径,还能够执行已计划好的检查和操作。
EJB是建立分布式应用的Java组件。象JavaBeans一样它们也能计划性执行和构建应用,但EJB还能作为一个实体部署在客户/服务器环境中。
JSP是有内嵌标签和Java代码的HTML文档。在运行时,JSP页面被编译到Java Servlet中执行。当使用JavaBeans时,JSP的建立可通过标准Web编辑工具执行,这就不需要编者是一个有经验的程序员。
在J2EE中有容器的概念,它的基本概念和特征是:
l 每一个对象都运行在由J2EE平台提供者提供的容器中。
l 这个容器为对象提供部署和运行服务(如生存周期、安全、交易等)
l 具体提供何种服务依赖于容器的类型。
注解:
容器对应用对象提供运行支持。容器为应用对象提供J2EE API的联合视图。在应用对象和J2EE服务间放入容器,使容器可以加入由对象部署描述子定义的服务,如公布事务管理、安全检查、资源池和状态管理。
典型的J2EE平台将为每一个应用对象类型提供单独的容器:应用客户端容器、applet 容器、Web对象容器和EJBs容器。
因采用J2EE后所拥有的技术优势是:
l 简化了体系结构和开发
- 服务、对象和客户的多样性
- 工具的选择
- 可移植性
- 与已存在的信息系统的集成
l 责任分离
l 可扩展性
l 有弹性的安全机制
注解:
J2EE定义了一些简单的标准,这些标准与网络应用的体系结构和开发的各个方面有关。J2EE鼓励采用多层体系结构及对业务逻辑与表示逻辑的严格区分。
另外,由J2EE标准提出的体系结构还具有高扩展性的基础结构,在这种结构中应用工作负载能够透明地分散到多个并行进程中,甚至是多个平行系统中。
J2EE也提供相关技术以便于已有应用和新的J2EE应用之间的集成。规范足够一般化以使得用户能够选择大范围的中间件、工具、硬件、操作系统以及应用设计。事实上,J2EE已经拓展了一个关于应用服务器、开发工具、连接器和对象的全新市场。
安全是J2EE着重考虑的首要方面之一。事实上,安全规范已经进行了重要的重新设计,使得它可以更好地满足基于网络环境的需要,并可以更好地与已有的安全机制相集成。
下面我们介绍应用装配和安装的概念。
下面我们介绍应用装配和安装的概念。
一、应用装配和安装概览
图1-33
应用装配工具(Application Assembly Tool,简写为AAT)提供对建立J2EE应用EAR文件的图形化用户界面。AAT帮助我们把应用对象(如Enterprise beans 和 Servlets)结合到模块中,增加部署描述子的参数并建立一个EAR文件。使用该EAR文件就可以将应用在WAS上进行部署安装。
一、应用装配和安装的WebSphere工具
下图是可获得工具的相互作用关系:
图1-34
WebSphere Studio是项目组用于向多个目标发布HTML、JSP文件和Servlet的工具。
VisualAge for Java是用来开发J2EE对象(如applets,servlets,JavaBeans和EJBs)的集成开发环境(IDE)。
J2EE应用由一个或多个J2EE对象和一个J2EE应用部署描述子组成。部署描述子按模块方式列出应用对象。
J2EE模块表述组成J2EE应用的基本单元。模块由一个或多个J2EE对象和一个部署描述子组成。
三、打包
(一)、打包基本概念
l 对象放入存档中
- JAR:Java存档
? EJBs,应用客户端
- WAR:Web存档
? JSPs,HTML,GIF,JPG,Servlet类
- EAR:企业存档
? JARs和WARs
l 部署描述子
注解:
EJBs被打包到JAR文件中。EJB JAR文件将包含所有的EJBs和一个部署描述子。
Web对象被打包到WAR文件中。WAR文件将包含Web对象和一个部署描述子。
应用客户端也被打包到JAR文件中。应用对象JAR文件将包含所有应用客户端的Java类和一个部署描述子。
WAR文件和JAR文件一起构成EAR文件。EAR文件也将包含应用部署描述子。
(二)、J2EE打包
图1-35
(三)、J2EE打包内容
图1-36
一个J2EE应用被打包到一个企业存档(Enterprise Archive)中,该文件是以.EAR为扩展名。应用有一个部署描述子(Deployment Descriptor),图中为DD,它允许当部署时对指定容器环境进行配置。应用包含一个或多个模块。
J2EE对象被组合到模块中,每个模块有自己的部署描述子。
- EJB模块:把相关EJBs集成到一个模块中,并打包到JAR文件中。注意模块中对于所有EJBs而言只有一个部署描述子。而在以前即WebSphere 3.5中,每一个EJB都有自己的部署描述子。
- Web模块:综合了Servlet类文件、JSPs、HTML和位图文件。它们被打包到WAR文件中。
- 应用客户端模块:打包到JAR文件中。
四、部署描述子
(一)、部署描述子基本概念
l 是基于XML的文件,描述模块和它的对象的环境。
- 每个模块和EAR文件都有一个部署描述子
l 能自动创建并可通过WebSphere的部署工具进行验证
- 应用装配工具(AAT)
l 可以手工创建和编辑。
注解:
部署描述子规定对象与容器的交互。
(二)、EJB部署描述子
是ejb-jar.xml文件
- 在JAR文件中的所有EJBs有一个部署描述子
- 对每一个EJB:
? 本地、远程和对象
? 对于Session Beans,指定会话类型
? 对于Entity Beans,指定持续性类型
? CMP:主键和容器管理域
? 对于容器管理事务,映射EJB方法到事务属性中
? 交易类型
? 环境项
? EJB引用
? 在EJB中指定的安全角色
? 方法映射(映射方法的相应角色)
(三)、WAR部署描述子
是Web.xml文件
- 定义servlets,JSP,静态资源
? Servlet URL方式、类/文件、属性
- 安全约束
? 对每个URL模式分配安全角色
? (GET,POST等)
- 登陆配置
- EJB和资源引用
- 该Web模块的安全角色
(四)、EAR部署描述子
是application.xml文件
- 定义了打包在EAR文件中的所有模块
? EJB jars
? WARs
? 应用客户端JARs
- 指定已定义的安全角色
J2EE安全也是J2EE技术中很重要的部分。它对每个模块和应用都有相应的安全措施:
l J2EE模块
- EJB JAR:包含拥有安全信息的部署描述子。
- WAR:包含拥有安全信息的部署描述子。
l J2EE应用
- EAR:包含拥有安全信息的EJB JARs、WARs、代码和部署描述子。
图1-37
上图是对EJB JAR和WAR的部署描述子中的安全信息的描述。
图1-38
图1-38是对EAR部署描述子中的安全信息的描述。
EJB、WAR、EAR中安全信息的作用:
l EJB
- 安全限制访问EJB方法的特定角色。
- RunAs信息:描述EJB将以何种角色执行(对相关动作以后的安全有影响)。
l WAR
- 安全限制特定传输规则和访问Web资源(如URL和方法组合)的角色。
- 登陆信息指定验证类型
l EAR
- 对EJBs和WARs的角色映射(如果有必要)
最后我们讨论J2EE平台角色。
一、J2EE平台角色
J2EE平台角色的基本概念和特征:
l J2EE规范按应用的生存周期把应用的相关部分分成了6个不同的角色:
- J2EE平台提供者
- 工具提供者
- 应用对象提供者
- 应用装配者
- 部署者
- 系统管理者
l 一个角色的输出往往是另一个角色的输入
l 两个角色可能由一个人或组来执行
l 一个角色可能分别跨越多个人或组。
我们将对6种平台角色做详细介绍。
l J2EE产品提供者
- 实现J2EE平台API
- IBM是一个J2EE平台提供者(WebSphere 4.0)
l 工具提供者
- 实现在J2EE平台上能使用其它任务的工具
- 开发环境
- 应用装配工具
- 监控工具
- IBM是一个工具提供者(VisualAge for Java,Tivoli等)
注解:
J2EE平台提供者:设计并提供定义在J2EE规范中的J2EE平台、API和其它特征的公司。产品提供者通常是操作系统、数据库系统、应用服务器或者实现J2EE平台的Web服务器开发商。
工具提供者:提供由对象提供者、装配者和部署者使用的开发、装配和打包工具的实体。
l 应用对象提供者
- 为应用和部署描述子的开发对象负责
l 应用装配者
- 把对象从对象提供者中装配到单个应用中
l 部署者
- 安装并配置应用到运行时环境。
注解:
应用对象提供者:创建在J2EE应用中使用的Web对象、EJBs、applets或应用客户端的实体。
应用装配者:从对象提供者中获得 JAR文件并把它们装配到一个J2EE应用EAR文件中的实体。
装配者或部署者能直接编辑部署描述子,或者使用可正确地增加XML标签的工具来编辑部署描述子。为了传递包含J2EE应用的EAR文件,一个软件开发人员将执行下面的任务:
1、 装配由前面步骤创建的EJB JAR文件和WAR文件到一个J2EE应用EAR文件中;
2、 指定对J2EE应用的部署描述子;
3、 验证EAR文件的内容具有正确格式并遵循了J2EE规范。
部署者:部署(或安装)J2EE应用(.ear)到J2EE服务器中。
l 系统管理者
- 配置企业应用
- 备份配置数据
- 分析使用情况统计和性能统计
- 通过创建服务器组和复制应用服务器来优化性能
- 管理并控制应用的安全
注解:
系统管理者:管理J2EE应用运行的计算和网络基础结构,并监视运行环境。
6种角色的运行机制如下图所示:
图1-39
由应用对象提供者执行
由应用装配者装配
由部署者安装
由系统管理者进行管理
运行在由J2EE产品提供者提供的容器中
由工具提供者提供执行、装配、安装和管理工具。
二、在应用生存周期中的J2EE平台角色
图1-40
作为J2EE规范一部分,角色分工使典型企业应用更接近于一种理想状态,即在应用生存周期中特定的人有特定的任务和责任。
在图1-40中显示了WebSphere 4.0中对应于6个J2EE角色的的工具、设施和应用。
作为工具提供者,IBM提供如VisualAge for Java和WebSphere Studio等工具,可以用来创建在应用中使用的JSP、servlets和EJBs。在WebSphere工具中如应用装配工具就用来把对象打包到可安装的EAR文件中。也有为管理和监控已安装应用提供的工具。
下一个角色就是应用对象提供者,它是利用工具进行基础开发的开发者。利用开发工具把对象(如JSPs、servlets和EJBs)传递到应用装配者中进行打包。
应用装配者使用由WebSphere提供的GUI装配工具以形成EAR文件。应用装配者也负责描述应用的外部依赖关系,这些关系是部署者在部署过程中必须解决的问题。
部署者负责部署web应用和EJB对象到一个指定的操作环境中。部署者完成的三个步骤:第一步是把不同对象和类安装到相应的J2EE容器中;第二步是部署者解决外部依赖关系,该关系由应用对象提供者提供并遵循由应用装配者定义的结构,如增加应用中指定部分的安全角色;最后一步是启动应用并验证它是否能在真正的J2EE环境中运行。
对于安装在J2EE产品中的应用,系统管理者可对它执行日常的管理工作。由工具提供者提供的特殊工具可用来管理和监控应用。
l 介绍了WebSphere产品;
l 论述了WAS的体系结构;
l 论述了J2EE相关技术;