快捷搜索:

J2EE的13种核心技术(一)

Java最初是在浏览器和客户端机械中粉墨登场的。当时,很多人质疑它是否得当做办事器真个开拓。现在,跟着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛回收为开拓企业级办事器端办理规划的首选平台之一。

J2EE平台由一整套办事(Services)、利用法度榜样接口(APIs)和协议构成,它对开拓基于Web的多层利用供给了功能支持。

在本文中我将解释支撑J2EE的13种核心技巧:JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF,同时还将描述在何时、何处必要应用这些技巧。当然,我还要先容这些不合的技巧之间是若何交互的。

此外,为了让您更好地感想熏染J2EE的真实利用,我将在WebLogic利用办事器,来自BEA Systems公司的一种广为利用的产品情况下来先容这些技巧。不论对付WebLogic利用办事器和J2EE的新手,照样那些想懂得J2EE能带来什么好处的项目治理者和系统阐发员,信托本文必然很有参考代价。

宏不雅印象: 散播式布局和J2EE

以前,二层化利用 -- 平日被称为client/server利用 -- 是大年夜家讨论的最多的。在很多环境下,办事器供给的惟一办事便是数据库办事。在这种办理规划中,客户端法度榜样认真数据造访、实现营业逻辑、用相宜的样式显示结果、弹出预设的用户界面、吸收用户输入等。client/server布局平日在第一次支配的时刻对照轻易,但难于进级或改进,而且常常基于某种专有的协议,平日是某种数据库协议。它使得重用营业逻辑和界面逻辑异常艰苦。更紧张的是,在Web期间,二层化利用平日不能表现出很好的伸缩性,因而很难适应Internet的要求。

Sun设计J2EE的部分原由便是想办理二层化布局的缺陷。于是,J2EE定义了一套标准来简化N层企业级利用的开拓。它定义了一套标准化的组件,并为这些组件供给了完备的办事。J2EE还自动为利用法度榜样处置惩罚了很多实现细节,如安然、多线程等。

用J2EE开拓N层利用包括将二层化布局中的不合层面切分成许多层。一个N层化利用A能够为以下的每种办事供给一个分开的层:

显示:在一个范例的Web利用中,客户端机械上运行的浏览器认真实现用户界面。

动态天生显示: 只管浏览器可以完成某些动态内容显示,但为了兼容不合的浏览器,这些动态天肇事情应该放在Web办事器端进行,应用JSP、Servlets,或者XML(可扩展标记说话)和(可扩展样式表说话)。

营业逻辑:营业逻辑得当用Session EJBs(后面将先容)来实现。

数据造访:数据造访得当用Entity EJBs(后面将先容)和JDBC来实现。

后台系统集成: 同后台系统的集成可能必要用到许多不合的技巧,至于何种最佳必要根据后台系统的特性而定。

您可能开始诧异:为什么有这么多的层?事实上,多层要领可以使企业级利器具有很强的伸缩性,它容许每层专注于特定的角色。例如,让Web办事器认真供给页面,利用办事器处置惩罚利用逻辑,而数据库办事器供给数据库办事。

因为J2EE建立在Java2平台标准版(J2SE)的根基上,以是具备了J2SE的所有优点和功能。包括“编写一次,到处可用”的可移植性、经由过程JDBC造访数据库、同原有企业资本进行交互的CORBA技巧,以及一个颠末验证的安然模型。在这些根基上,J2EE又增添了对EJB(企业级Java组件)、Java servlets、Java办事器页面(JSPs)和XML技巧的支持。

散播式布局与WebLogic利用办事器

J2EE供给了一个框架--一套标准API--用于开拓散播式布局的利用,这个框架的实际实现留给了第三方厂商。部分厂商只是专注于全部J2EE架构中的的特定组件,例如Apache的Tomcat供给了对JSP和servlets的支持,BEA系统公司则经由过程其WebLogic利用办事器产品为全部J2EE规范供给了一个较为完备的实现。

WebLogic办事器已使建立和支配伸缩性较好的散播式利用的历程大年夜为简化。WebLogic和J2EE代你处置惩罚了大年夜量老例的编程义务,包括供给事务办事、安然领域、靠得住的消息、名字和目录办事、数据库造访和连接池、线程池、负载平衡和容错处置惩罚等。

经由过程以一种标准、易用的要领供给这些公共办事,象WebLogic办事器这样的产品培育了具有更好伸缩性和可掩护性的利用系统,使其为大年夜量的用户供给了增长的可用性。

J2EE技巧

在接下来的部分里,我们将描述构成J2EE的各类技巧,并且懂得WebLogic办事器是若何在一个散播式利用中对它们进行支持的。最常用的J2EE技巧应该是JDBC、JNDI、EJB、JSP和servlets,对这些我们将作更仔细的考察。

Java Database Connectivity (JDBC)

JDBC API以一种统一的要领来对各类各样的数据库进行存取。和ODBC一样,JDBC为开拓职员暗藏了不合数据库的不合特点。别的,因为JDBC建立在Java的根基上,是以还供给了数据库存取的平台自力性。

JDBC定义了4种不合的驱动法度榜样,现分述如下:

类型 1: JDBC-ODBC Bridge

在JDBC呈现的初期,JDBC-ODBC桥显然是异常有实用意义的,经由过程JDBC-ODBC桥,开拓职员可以应用JDBC来存取ODBC数据源。不够的是,他必要在客户端安装ODBC驱动法度榜样,换句话说,必须安装Microsoft Windows的某个版本。应用这一类型你必要就义JDBC的平台自力性。别的,ODBC驱动法度榜样还必要具有客户真个节制权限。

类型 2: JDBC-native driver bridge

JDBC本地驱动法度榜样桥供给了一种JDBC接口,它建立在本地数据库驱动法度榜样的顶层,而不必要应用ODBC。 JDBC驱动法度榜样将对数据库的API从标准的JDBC调用转换为本地调用。应用此类型必要就义JDBC的平台自力性,还要求在客户端安装一些本地代码。

类型 3: JDBC-network bridge

JDBC收集桥驱动法度榜样不再必要客户端数据库驱动法度榜样。它应用收集上的中心办事器来存取数据库。这种利用使得以下技巧的实现有了可能,这些技巧包括负载均衡、连接缓冲池和数据缓存等。因为第3种类型每每只必要相对更少的下载光阴,具有平台自力性,而且不必要在客户端安装并取得节制权,以是很得当于Internet上的利用。

类型 4: Pure Java driver

第4种类型经由过程应用一个纯Java数据库驱动法度榜样来履行数据库的直接造访。此类型实际上在客户端实现了2层布局。要在N-层布局中利用,一个更好的做法是编写一个EJB,让它包孕存取代码并供给一个对客户端具稀有据库自力性的办事。

WebLogic办事器为一些平日的数据库供给了JDBC驱动法度榜样,包括Oracle, Sybase, Microsoft SQL Server以及Informix。它也带有一种JDBC驱动法度榜样用于Cloudscape,这是一种纯Java的DBMS,WebLogic办事器中带有该数据库的评估版本。

以下让我们看一个实例。

JDBC实例

在这个例子中我们假定你已经在Cloudscape中建立了一个PhoneBook数据库,并且包孕一个表,名为 CONTACT_TABLE ,它带有2个字段:NAME 和 PHONE。 开始的时刻先装载Cloudscape JDBC driver,并哀求 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();

}

}

}

OK。接着我们来看一看JDBC是若何在企业利用中的进行应用。

JDBC在企业级利用中的利用

以上实例着实是很基础的,可能有些微不够道。它假定了一个2层布局。在一个多层的企业级利用中,更大年夜的可能是在客户端和一个EJB进行通信,该EJB将建立数据库连接。为了实现和改进可伸缩性和系统机能, WebLogic办事器供给了对连接缓冲池connection pool的支持。

Connection pool削减了建立和开释数据库连接的耗损。在系统启动今后即可建立这样的缓冲池,此后如故再有对数据库的哀求,WebLogic办事器可以很简单地从缓冲池中掏出数据。数据缓冲池可以在WebLogic办事器的 weblogic.properties 文件中进行定义。(可参考 weblogic.properties 文件中的例子,WebLogic办事器的文档中还有更具体的参考信息)

在企业级利用的另一个常见的数据库特点是事务处置惩罚。事务是一组申明statement,它们必须做为同一个statement来处置惩罚以包管数据完备性。缺省环境下JDBC应用 auto-commit 事务模式。这可以经由过程应用Connection类的 setAutoCommit() 措施来实现。

现在我们已经对JDBC有了一些熟识,下面该转向JNDI了。

您可能还会对下面的文章感兴趣: