代码改变世界

J2EE学习笔记:第一天

2011-06-04 16:23  Aga.J  阅读(577)  评论(0编辑  收藏  举报

21天学通J2EE

第一天

挑战N层开发

1 单层应用程序的缺点:因为表示层,业务层,数据访问层都被放置在同一个应用程序中,所以一旦程序功能的任何部分发生了变化,都潜在的影响其他部分,需要重新编译代码中的很好多部分,增加了添加或者修改功能的开销。尤其是在多用户的情况下,软件新版本的推行会变得越来越复杂。

clip_image002

 

2 向二层开发进军

使用二层开发的主要目的是不同的机器上的多个应用程序可以共享数据,所以我们可以架设一个单独的数据库服务器。这样一来,数据访问层中的任何改动都不会影响应用程序中的表示层和业务层。

clip_image004

同时,使用这种分离方式,还可以让我们很简单的使用另一个不同的数据库和不同的代码来替代整个第二个物理层,只要和第一层的接口适配。

使用二层结构仍然有缺点:客户端充满了业务代码,客户端仍然要清楚地知道数据源的详细位置。

 

3 功能层详细

表达逻辑层:指示用户如何与应用程序进行交互,以及信息如何表达

逻辑层:装载应用程序的核心,用来控制内嵌的应用程序中的业务处理的规则

数据访问逻辑层:控制和程序所使用的数据源的连接,并从数据源中取得数据提供给业务逻辑层

 

4 三层方案

clip_image006

 

5 从 对象跨越对象的组件

组件是在一种特定框架中使用的功能单元。当使用组件框架时,容器提供给组件一些诸如通信和持久性之类的标准服务(分布式组件框架可以提供语言独立功能,例如使用CORBA时,C语言编写的组件可以和OO语言编写的组件进行通信。)

 

6 web服务允许使用分布于Internet的组件来创建应用程序,被视为是下一代n层开发体系结构。

 

7 现代分布式计算环境所需要的条件

(1)生命周期

分布式组件环境必须提供‘容器’来‘管理’组件的生命周期和辅助组件的部署等等。(例如根据运行环境决定用哪种方式删除不使用的组件,借助Java远程方法调用RMI,使用的是一种分布式租赁机制,而com和dcom则依赖对象控制其自身的生命周期)

(2)持久性

分布式应用程序开发环境必须能够提供一种简单而灵活的方式来访问和修改持久性数据。必要的是,可以支持不同类型的数据持久性,不同的访问数据方式。

(3)命名

分布式应用程序由不同机器上的组件构成,应用程序中使用其他机器上的组件的部分必须能够查找和调用这些组件,所以需要一个目录服务,组件或者服务可以在这个目录中进行注册,应用程序通过查找服务的位置,使用服务。例如域名服务系统DNS,装换主机名称和Internet地址。

(4)事务

 

8 J2EE平台

(1)组件和容器

J2EE规定,兼容J2EE应用程序的服务器必须定义一套容器来放置J2EE组件,容器为组件提供运行环境,由J2EE应用程序服务器的供应商提供,每种类型的J2EE组件都需要有一个可以使用的容器:

如 Applet容器,应用程序客户端容器,Web容器,EJB容器

组件:Web组件(Servlet组件和JSP组件), EJB组件

clip_image008

(2)J2EE标准服务

J2EE中容器必须为每种类型的组件定义一套服务:

连接性:容器必须支持其他组件和应用程序客户端的连接,例如RMI CORBA,HTTP,HTTPS

目录服务:这要求J2EE服务器提供命名服务,允许在服务器上注册组件和发现组件,Java命名和目录接口(JNDI)提供了一种访问这些服务的方式

(3)数据访问和持久性:通过java数据库连接API实现数据访问。

(4)遗留连接:Java连接器体系结构JCA支持企业消息服务器和遗留系统的基础,还支持开发适配器来连接J2EE企业体系结构和其他系统的服务提供商

(5)安全性:内建在J2EE模型中,帮助J2EE企业应用程序强制对用户进行认证和授权安全检查

(6)支持XML:JAXP DOM,XLST,

(7)事务:J2EE服务器必须为其组件提供事务服务,由容器或者应用程序指定事务边界。尽管java事务Api (JTA)运行组件控制自身事务,但通常容器仍服务事务划分。

(8)消息和Email:java消息服务JMS运行组件发送和接收异步消息。

clip_image010

 

9 jPetStore

 

10 资源:

Oracle 官方网站

http://www.oracle.com/index.html

Oracle Java EE网址

http://www.oracle.com/technetwork/java/javaee/overview/index.html