当前位置: 首页 > 图文教程 > Java技术 > J2EE > J2EE:小编谈J2EE那点事

J2EE
构建高性能J2EE应用的五种核心策略
初学者如何开发出一个高质量的J2EE系统
构建高性能J2EE应用的五种核心策略
J2EE项目登录方式的改进设计与实现
开发J2EE解决方案的八个步骤(1)
开发J2EE解决方案的八个步骤(2)
J2EE架构的6个最佳实践
J2EE事务并发控制策略总结(1)(转载)
J2EE事务并发控制策略总结(2)(转载)
J2EE事务并发控制策略总结(3)(转载)
J2EE应用中常见的反模式(anti-patterns)
j2ee 常用技术
J2EE常用Jar包含义
J2EE技术之JDBC连接各种数据库的写法(给初学者)
Flex连接J2EE技术选择
用JavaScript刷新框架子页面的方法
J2EE开发原则
java获取网络图片、java截屏、java创建缩略图
jsp生成验证码
java 彻底理解 byte char short int float long double

J2EE:小编谈J2EE那点事


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 254 ::
收藏到网摘: n/a

1. J2EE 规范定义了以下种类的组件

• 应用客户组件。

Enterprise JavaBeans 组件。

ServletJavaServer PagesJSP 页面)组件(也被称作Web 组件)。

Applet

一个多层的分布式的应用模型意味着应用逻辑被根据功能划分成组件,并且可以在同一个服务器或不同的服务器上安装组成J2EE 应用的这些不同的组件。一个应用组件应被安装在什么地方,取决于该应用组件属于该多层的J2EE 环境中的哪一层。这些层是客户层、Web层、业务层及企业信息系统层( EIS )等。

(1) 客户层

J2EE 应用可以是基于Web 的,也可以是不基于Web 的。在一个基于Web J2EE 应用中,用户的浏览器在客户层中运行,并从一个We b服务器下载Web 层中的静态HTML 页面或由J S PServlet 生成的动态HTML 页面。在一个不基于Web J2EE 应用程序中,一个独立客户程序不运行在一个HTML 页面中,而是运行在其他一些基于网络的系统(比如手持设备或汽车电话)中,Applet 程序,在客户层中运行,并在不经过Web 层的情况下访问Enterprise Beans。这个不基于Web 的客户层可能也包括一个JavaBeans 类来管理用户输入,并将该输入发送到在企业层中运行的Enterprise Beans类来进行处理。根据J2EE 规范,JavaBeans 类不被视为组件。

J2EE 平台编写的JavaBeans 类有实例变量和用于访问实例变量中的数据的“ get set 方法”。以这种方式使用的JavaBeans 类在设计和实现上通常都是简单的,但是它们必须符合JavaBeans 规范中列出的命名和设计约定。

(2) Web 层

J2EE Web 组件可以由JSP 页面、基于Web Applet以及显示HTML 页面的Servlet组成。调用Servlet或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起。就像客户层一

样,Web 层可能包括一个JavaBeans 类来管理用户输入,并将输入发送到在业务层中运行的Enterprise Beans 类来进行处理。运行在客户层的Web 组件依赖容器来支持诸如客户请求和响应及Enterprise Bean 查询等。

(3) 业务层

作为解决或满足某个特定业务领域(比如银行、零售或金融业)需要的逻辑的业务代码由运行在业务层的Enterprise Beans 来执行。一个Enterprise Bean 从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储起来。一个Enterprise Beans 还从存储中检索数据,并将数据送回客户程序。运行在业务层的Enterprise Beans 依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池等提供通常都非常复杂的系统级代码。业务层

经常被称作Enterprise JavaBeans EJB )层。业务层和Web 层一起构成了3 J2EE应用的中间层,而其他两层是客户层和企业信息系统层。

(4) 企业信息系统层

企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(E R P)、大型机事务处理( mainframe transactionprocessing )、数据库系统及其他遗留信息系统(legacy informationsystems )。J2EE 应用组件因为某种原因( 例如访问数据库) 可能需要访问企业信息系统。J2EE 平台的未来版本将支持Connector 架构,该架构是将J2EE 平台连接到企业信息系统上的一个标准A P I

(5) 查询服务

因为一个J2EE 应用程序的组件是单独运行的,并且往往在不同的设备上运行,因此,需要一种能让客户层和Web 层代码查询并引用其他代码和资源的方法。客户层和Web 层代码使用Java 命名和目录接口(JNDI )来查询用户定义的对象(例如Enterprise Beans )、环境条目(例如一个数据库驱动器的位置)、企业信息系统层中用于查找资源的JDBC DataSource对象,以及消息连接。

(6) 安全和事务管理

诸如安全和事务管理这样的应用行为可以在部署时在Web Enterprise Beans 组件上进行配置。这个特征将应用逻辑从可能随装配而变化的配置设定中分开了。J2EE 安全模型允许配置一个Web Enterprise Beans 组件,使系统资源只能由授权的用户访问。例如,一个Web 组件可以被配置成提示输入用户名和密码。一个Enterprise Beans 组件可以被配置成只让特定团体中的成员调用其某些方法。或者,一个Servlet 组件可以被配置成让某个组织中的所有人都能访问其某些方法,同时只让该组织中的某些享有特权的人访问其中一些方法。同样是该Servlet 组件,可以针对另外一个环境而被配置成让每个人都能访问其所有方法,或者仅让选定的少数人访问其所有方法。

应当注意, JSP 页面和Servlet 没有被设计成是事务的,它们通常应当将事务工作交给一个Enterprise Bean 来完成。然而,如果事务工作在一个JSP 页面或Servlet 中是必须的,那么此种工作也应当是非常有限的。

(7) 可重用应用组件

J2EE 组件(Applet 、应用的客户、Enterprise Beans JSP 页面及Servlet )都被打包成模块,并以Java Archive JAR )文件的形式交付。一个模块由相关的组件、相关的文件及描述如何配置组件的配置描述文件组成。例如,在组装过程中,一个HTML 页面和Servlet 被打包进一个模块之中,该模块包含H T M L文件、Servlet 组件及相关的配置描述文件,并以一个Web ARchiveWAR )文件的形式交付,该WAR 文件是一个带.war 扩展名的标准JAR 文件。模块的使用使得利用相同组件中的某些组件来组装不同的J2EE 应用程序成为可能。例如,一个J2EE 应用程序Web 版可能有一个Enterprise Beans 组件,还有一个JSP 页面组件。该Enterprise Beans 组件可以与一个应用客户组件结合,以生成该应用程序的非Web 版本。这不需要进行额外的编码,只是一个装配和部署的问题。并且,可重用组件使得将应用开发和部署过程划分成由不同的角色来

完成成为可能,这样,不同的人或者公司就能完成封装和部署过程的不同部分。

2. J2EE 平台定义了如下角色:

(1) J2EE 产品提供商

设计并使J2EE 平台、API 和在J2EE 规范中定义的其他特征能被其他公司或人购得的公司。

(2) 应用组件提供商

创建用于J2EE 应用程序的Web 组件、Enterprise Beans 组件、Applet 或应用客户程序的公司或个人。在装配过程中,应用组件文件、接口及类被打包进一个JAR 文件中。

(3) 应用程序装配商

从组件提供商获得应用组件JAR 文件,并将它们组装成一个J2EE 应用的Enterprise ArchiveE A R)文件的公司或个人,这种文件是一个带. e a r扩展名的标准文件。应用装配商提供与该应用程序相关的整体信息,并使用验证工具来检验EAR 文件的内容是正确的。组装和部署信息存储在一个基于文本的配置描述文件中,此种文件使用XML 标记来标记该文本。应用装配商可以使用一个能通过交互式选择来正确添加XML 标记的装配和配置工具来编辑该配置描述文件。

(4) 部署商

部署(depleyJ2EE 应用程序的公司或个人。其职责包括设定事务控制、安全属性,并根据应用组件提供商提供的指示来标明一个Enterprise Bean 是自己处理自身的存储,还是由一个容器来处理等。部署涉及配置和安装。在配置过程中,部署商遵循应用组件提供商提供的指示来解决外部依赖问题,定义安全设定,以及分配事务属性。在安装过程中,部署商将应用组件安装到服务器上,并生成容器特定的类和接口。

(5) 系统管理员

配置并管理运行J2EE 应用程序的计算环境和网络基础设施,并监督运行环境的人员。

(6) 工具提供商

生产被组件提供商、装配商及部署商使用的用于进行开发、组装和打包的工具的公司或个人。

(7) 设计用户界面和引擎

在为J2EE 应用程序设计用户界面和后端引擎时,需要决定让该程序是基于We b,还是不基于We b。在做出这个决定时,我们可能希望考虑平台配置、下载速度、安全、网络流量和网络服务。

例如,包含有用户界面并且经常被大量用户访问的一个Applet 可能需要花很长的时间才能被下载下来,这让用户沮丧。然而,如果知道该A p p l e t要运行在一个公司的内部网内的受控环境中,那么,在这种情况下,该Applet 将拥有一个完全可接受的下载速度。另一个考虑是,繁重的处理应当在哪里执行。例如,如果客户程序在一个蜂窝电话或呼机中执行,服务器应当完成尽量多的计算和数据处理,而客户程序只应显示结果就可以了。然而,设计在一个强大的台式

机平台上运行的大型财务分析系统则应当在客户机上完成其复杂计算。应用的客户程序和Applet用户界面通常都是用Swing API 创建的,该API 可从标准版J a v a 2平台中获得。Swing API 提供了一整套GUI 组件(表格、树形结构、按钮等),这些组件可以被用来实现一种比用一个典型的HTML 页面所能实现的更为交互的体验。Swing 也支持HTML 文本组件,这个组件可以被用来显示来自一个服务器的响应。客户程序可以直接访问Enterprise Beans 层或企业信息系统层。但应谨慎实现这种程序。绕过EJB 层的程序可以使用JDBC API 来访问一个关系型数据库,但应被限制于对数据库表格进行维护等管理任务上。

(8) 设计基于Web 的应用程序

基于Web 的应用程序是基于浏览器的,并且,如果它们运行在I n t e r n e t上,就可能被全世界的人访问。当设计一个基于Web 的应用程序时,不仅需要决定用什么来处理内容和应用逻辑(HTML XML JSP 页面及S e r v l e t),而且还应当考虑使该应用程序国际化。一个国际化的基于Web 的应用程序向用户提供了选择一种语言,然后根据该选定语言加载应用的正文的方式。对被支持的每种语言而言,应用正文都被存储在一个外部文件中,并且与另外一个文件的关键词相对应。应用代码使用这些关键词及选定的语言来加载正确的文本。国际化API 还提供类来根据选定的语言格式化日期和金钱。一旦制订了使应用程序国际化的细节,就可以决定用什么来实现它了。总的来说,一个基于Web 的应用程序使用HTML 来显示数据; X M L来定义数据以使其可被另一个程序读取并处理; 使用JSP 页面或S e r v l e t来管理用户与业务层或存储层之间的数据流。可以在J2EE 平台上实现的基于Web 的应用程序有四种。从简单到复杂排列,它们是:

B基本H T M L

B带基本JSP 页面或Servlet H T M L

BJava Beans 类的J S P页面。

B将应用逻辑根据功能划分成区域的高度结构化的应用。

当设计一个基于Web 的应用程序时,需要决定用什么来建立它。如果是从建立一个简单的应用程序开始着手,并且认为以后会给该应用程序添加功能,那么,设计就应当适应今后发展的需要。

(9) 模型、视图和控制器架构

在基于组件的J2EE 平台充分内置了灵活性的情况下,剩下的问题可能是如何组织应用程序以实现简单高效的应用程序升级和维护,以及如何让不懂程序代码的人员避开程序数据。答案就在模型、视图和控制器架构( MVC )的使用之中。MVC 这样的架构是一个描述重现的问题及其解决方案的设计范式,但每次问题重现时,解决方案都不会完全相同。

MVC 设计范式包括三种对象:模型( model )提供应用业务逻辑( Enterprise Beans 类);

视图(view )则是其在屏幕上的显示( HTML 页面、JSP 页面、Swing GUI ; 控制器则是

Servlet 、JavaBeans Session Beans 类,它用于管理用户与视图发生的交互。我们可以将控制

器想像成处在视图和数据之间,对视图如何与模型交互进行管理。通过使视图完全独立于控制

器和模型,就可以轻松替换前端客户程序。并且,通过将控制器和模型代码保持在视图之外,

那些不理解这些代码的人员就不能改变他们不应改变的东西。

将控制器和模型分开就可以在不影响模型的情况下改变控制器,也可以在不影响控制器的

情况下改变模型。例如,如果应用的前端是一个HTML 页面,HTML 专家就可以更新它。如果

使用一个JSP页面,将控制器的代码放到一个JavaBeans SessionBeans 类中,或使用动作标记(action tags ),这样,JSP 页面就仅包含JSP 代码了。