分享
 
 
 

J2EE开发n层应用

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

摘要:在这篇文章中,我们将介绍13种J2EE(java 2平台企业版)的核心技术:JDBC,JNDI,EJBs,RMI,jsp,Java servlets,xml,JMS,Java IDL,JTS,JTA,JavaMail和JAF。为了更好地说明这些技术在实际中的应用,本文将通过BEA System的WebLogic Server来介绍。

Java起初是运用在浏览器和客户计算机上的,当时,很多人都怀疑它是否适合用作服务端的开发。现今,随着越来越多的第三方对Java 2平台企业版(J2EE)的支持,Java已经被广泛用来开发企业级的服务器端应用。

J2EE平台包含有一整套的服务、应用编程接口(API)和协议,可用于开发多层的基于Web的应用。

在这篇文章中,我们将讨论构成J2EE的13种核心技术:JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail和JAF。我们将介绍每种技术适合用在哪里;我们还将介绍每种不同的技术之间是如何通信的。

为了更好地说明J2EE在现实中的应用,我们将通过WebLogic Server来介绍其中主要的技术,WebLogic Server来自BEA Syetem,它是一个广泛使用的J2EE工具。要注重的是,这篇介绍性文章的阅读对象是对WebLogic Server和J2EE不熟悉的开发者、以及对J2EE感爱好的项目经理和商业分析者。

分布式体系和J2EE

以前,两层的应用--也称为客户/服务器应用是很常见的。图1表示的就是一个典型的两层体系。在一些情况下,服务器提供的唯一服务就是数据库服务。在这种情形下,客户端负责数据访问、应用商业逻辑、将结果转换为一个格式以便显示,为用户显示内部的接口,以及接受用户的输入。客户/服务器的体系在开始的时候很轻易配置,不过难于升级或者扩展,而且通常基于私有的协议--典型的是私有的数据库协议。商业和表现逻辑的重新使用也很难。在Web领域中,可能最重要的就是扩展,而两层的应用不便于升级扩展,因此不适合用在Internet。

**图1***************

(两层的应用体系)

为了解决这个两层体系的不足,Sun设计了J2EE。J2EE定义了一套标准,可轻松地开发n层的企业应用。它定义了一套标准化、模块化的组件;并为这些组件提供了一整套完整的服务;以及自动处理应用行为的许多细节---例如安全和多线程。

使用J2EE来开发n层的应用,要将原来的2层体系细分为多个不同的层。一个n层的应用能够为以下的每个服务提供独立的层:

表现:在一个典型的Web应用中,运行在客户机器上的浏览器负责处理表现

动态产生表现:虽然浏览器可以处理一些动态产生的表现,不过为了支持多种不同的浏览器,大部分的动态产生都应该在Web服务器进行,通过使用JSP,servlet或者XML(Extensible Markup Language,扩展标记语言)和XSL(Extensible Stylesheet Language,扩展样式表语言)。

商业逻辑:实现商业逻辑的最佳方法是通过session EJB(下文将会提及)。

数据访问:实现数据访问的最佳方法是在Entity EJB(下文将会提及),以及使用JDBC。

Backend系统集成:可使用各种不同的技术来与backend系统集成。最佳的选择在于backend系统的确切种类。

你也许会问:为什么要这么多层呢?这是由于分层的方法可得到一个更便于扩展的企业应用。它可让每个层集中在一个特定的角色上--例如,让一个Web服务器提供网页服务,一个应用服务器来提供给用服务,以及一个数据库服务器来提供数据库服务。

由于J2EE构建在Java 2平台标准版本上(J2SE),因此它可提供与J2SE一样的所有优点和特色。包括有“写一次,到处运行”的便利、用作数据库访问的JDBC,与现有企业资源交互的CORBA技术,以及一个经过验证的安全模型。在这个基础上,J2EE还加入了对企业JavaBean(EJB)组件、Java servlets, JavaServer Pages (JSPs)和XML技术的支持。

WebLogic Server的分布式体系

J2EE提供了一个框架--一个标准的API--用作开发分布式的体系。实现这个框架的引擎工具留给第三方厂商完成。一些厂商将着重于实现J2EE体系中的某些组件。例如,Apache的Tomcat为JSP和servlet提供支持。BEA System通过它的WebLogic Server产品实现了J2EE的全部特性。

通过提供J2EE规范的一个完整实现,WebLogic Server可用来建立及配置易于扩展和分布式的应用。WebLogic Server和J2EE为你处理一些常见的编程任务。包括有提供事务服务,安全领域、认证信息、命名和目录服务、数据库访问和连接池、线程池、负载均衡和容错。

通过以一种易于使用和标准的方式提供这些常见的服务,类似WebLogic Server的产品可提供更富扩展性和便于维护的应用。结果是可为大量的用户提供可用性更强的应用。

J2EE技术

在以下的部分中,我们将讨论构成J2EE的每一种技术,并且看看WebLogic Server如何在一个分布式的应用中支持它们。最常用的J2EE技术可能是:JDBC, JNDI, EJB, JSPs和servlets,因此我们也着重讨论这些方面。

图2表示了在一个分布式的应用中,每项J2EE技术最常用在哪里。

****图2************

(n层应用体系的一个例子)

Java数据库连接(JDBC)

JDBC API以一个统一的方式访问各种数据库。与ODBC类似,JDBC将开发者和私有数据库之间的问题隔离开来。由于它建立在Java上,因此JDBC可以提供平台无关的数据库访问。

JDBC定义了4种不同的驱动,具体来说,包括有:

类型1:JDBC-ODBC桥

在JDBC刚产生时,JDBC-ODBC桥是非常有用的。通过它,开发者可以使用JDBC来访问一个ODBC数据源。缺点是,它需要在客户机器上安装有一个ODBC驱动,该机器通常是应该运行微软Windows系统的。使用这一类的驱动器,你就会失去JDBC平台无关的好处。此外,ODBV驱动器需要客户端的治理。

类型2:JDBC-native驱动桥

JDBC-native驱动桥提供了一个建筑在本地数据库驱动上的JDBC接口--没有使用ODBC。JDBC驱动将标准的JDBC调用转变为对数据库API的本地调用。使用类型2的驱动也会失去JDBC平台无关性的好处,并且需要安装客户端的本地代码。

类型3:JDBC-network桥

JDBC-network桥不需要客户端的数据库驱动。它们使用网络-服务器中层来访问一个数据库。这会引出诸如负载均衡、连接池等技术,数据缓冲也是可能的。由于类型3的驱动通常可带来相对小的下载时间,它是平台无关的,并且不需要客户端的安装和治理,因此很适合用作Internet的应用。

类型4:纯Java驱动

类型4使用纯Java数据库驱动来提供直接的数据库访问。由于类型4驱动运行在客户端,并且直接访问数据库,因此运行在这个模式暗示要使用一个两层的体系。要在一个n层的体系中使用类型4的驱动,可以通过一个包含有数据访问代码的EJB,并且让该EJB为它的客户提供一个数据库无关的服务。

WebLogic Server为一些很常用的数据库提供了JDBC驱动器,包括有Oracle、Sybase、Microsoft SQL Server, 和Informix。它还带有一个Cloudscape的JDBC驱动,这是一个纯Java DBMS,不过WebLogic Server自带的是一个评估版本。

接着我们来看一个例子。

JDBC例子

在例子中,我们假设你已经在Cloudscape中设置了一个PhoneBook数据库,该数据库包含有一个CONTACT_TABLE表,里面有NAME和PHONE字段。我们首先载入Cloudscape的JDBC驱动,接着向driver manager请求获得一个到PhoneBook Cloudscape数据库的一个连接。使用这个连接,我们建立了一个Statement对象,并且使用它来执行一个简单的SQL查询。最后,循环得到结果集的所有项目,将NAME和PHONE字段的内容写入到标准的输出中。

import java.sql.*;

public class JDBCExample

{

public static void main( String args[] )

{

try

{

Class.forName("COM.cloudscape.core.JDBCDriver");

Connection conn = DriverManager.getConnection("jdbc:cloudscape:PhoneBook");

Statement stmt = conn.createStatement();

String sql = "SELECT name, phone FROM CONTACT_TABLE ORDER BY name";

ResultSet resultSet = stmt.executeQuery( sql );

String name;

String phone;

while ( resultSet.next() )

{

name = resultSet.getString(1).trim();

phone = resultSet.getString(2).trim();

System.out.PRintln( name + ", " + phone );

}

}

catch ( Exception e )

{

// Handle exception here

e.printStackTrace();

}

}

}

接着,我们将介绍JDBC在企业应用中的使用。

企业应用中的JDBC

上面的例子是很简单的。它使用的仍然是一个两层的体系。在一个n层的企业应用中,客户将与一个EJB通信,并且会进行数据库的连接。为了提高扩展性和性能,WebLogic Server提供连接池(connection pools)的支持。

通过在服务器启动的时候建立一个数据库的连接池,连接池可减少建立和中断数据库连接时的系统开销。假如有数据库连接的需求,WebLogic Server可从池中选择一个,而不是创建一个。WebLogic Server的连接池在weblogic.properties中定义(具体可参考你的weblogic.properties中的例子和Weblogic Server中的文档)。

另一个企业应用中经常用到的数据库特性是支持事务。事务是一组语句,不过为了保持数据的完整性,这组语句都被看成是一个单一的语句。默认的情况下,JDBC工作在自动提交(auto-commit)的事务模式。你可以使用Connection类的setAutoCommit()方法来覆盖它。

现在我们对JDBC已经有一个了解了。接着我们将介绍JNDI。

Java命名和目录接口(Java Naming and Directory Interface,JNDI)

JN

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有