java最初是在浏览器和客户端机器中粉墨登场的。当时,很多人质疑它是否适合做服务器端的开发。现在,随着对java2平台企业版(j2ee)第三方支持的增多,java被广泛接纳为开发企业级服务器端解决方案的首选平台之一。
j2ee平台由一整套服务(services)、应用程序接口(apis)和协议构成,它对开发基于web的多层应用提供了功能支持。在本文中将解释支撑j2ee的13种核心技术:jdbc,jndi,ejbs,rmi,jsp,javaservlets,xml,jms,javaidl,jts,jta,javamail和jaf,同时还将描述在何时、何处需要使用这些技术。当然,我还要介绍这些不同的技术之间是如何交互的。此外,为了让您更好地感受j2ee的真实应用,将在weblogic应用服务器,来自bea systems公司的一种广为应用的产品环境下来介绍这些技术。不论对于web logic应用服务器和j2ee的新手,还是那些想了解j2ee能带来什么好处的项目管理者和系统分析员,相信本文一定很有参考价值。
宏观印象:分布式结构和j2ee
过去,二层化应用--通常被称为client/server应用--是大家谈论的最多的。在很多情况下,服务器提供的惟一服务就是数据库服务。在这种解决方案中,客户端程序负责数据访问、实现业务逻辑、用合适的样式显示结果、弹出预设的用户界面、接受用户输入等。client/server结构通常在第一次部署的时候比较容易,但难于升级或改进,而且经常基于某种专有的协议,通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。更重要的是,在web时代,二层化应用通常不能体现出很好的伸缩性,因而很难适应inte.net的要求。
sun设计j2ee的部分起因就是想解决二层化结构的缺陷。于是,j2ee定义了一套标准来简化n层企业级应用的开发。它定义了一套标准化的组件,并为这些组件提供了完整的服务。j2ee还自动为应用程序处理了很多实现细节,如安全、多线程等。
用j2ee开发n层应用包括将二层化结构中的不同层面切分成许多层。一个n层化应用a能够为以下的每种服务提供一个分开的层:
显示:在一个典型的web应用中,客户端机器上运行的浏览器负责实现用户界面。
动态生成显示:尽管浏览器可以完成某些动态内容显示,但为了兼容不同的浏览器,这些动态生成工作应该放在web服务器端进行,使用jsp、servlets,或者xml(可扩展标记语言)和(可扩展样式表语言)。
业务逻辑:业务逻辑适合用sessionejbs(后面将介绍)来实现。
数据访问:数据访问适合用entityejbs(后面将介绍)和jdbc来实现。
后台系统集成:同后台系统的集成可能需要用到许多不同的技术,至于何种最佳需要根据后台系统的特征而定。
您可能开始诧异:为什么有这么多的层?事实上,多层方式可以使企业级应用具有很强的伸缩性,它允许每层专注于特定的角色。例如,让web服务器负责提供页面,应用服务器处理应用逻辑,而数据库服务器提供数据库服务。
由于j2ee建立在java2平台标准版(j2se)的基础上,所以具备了j2se的所有优点和功能。包括“编写一次,到处可用”的可移植性、通过jdbc访问数据库、同原有企业资源进行交互的corba技术,以及一个经过验证的安全模型。在这些基础上,j2ee又增加了对ejb(企业级java组件)、javaservlets、java服务器页面(jsps)和xml技术的支持。
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)
jdbcapi以一种统一的方式来对各种各样的数据库进行存取。和odbc一样,jdbc为开发人员隐藏了不同数据库的不同特性。另外,由于jdbc建立在java的基础上,因此还提供了数据库存取的平台独立性。
jdbc定义了4种不同的驱动程序,现分述如下:
类型1:jdbc-odbcbridge
在jdbc出现的初期,jdbc-odbc桥显然是非常有实用意义的,通过jdbc-odbc桥,开发人员可以使用jdbc来存取odbc数据源。不足的是,他需要在客户端安装odbc驱动程序,换句话说,必须安装microsoftwindows的某个版本。使用这一类型你需要牺牲jdbc的平台独立性。另外,odbc驱动程序还需要具有客户端的控制权限。
类型2:jdbc-nativedriverbridge
jdbc本地驱动程序桥提供了一种jdbc接口,它建立在本地数据库驱动程序的顶层,而不需要使用odbc。jdbc驱动程序将对数据库的api从标准的jdbc调用转换为本地调用。使用此类型需要牺牲jdbc的平台独立性,还要求在客户端安装一些本地代码。
类型3:jdbc.networkbridge
jdbc网络桥驱动程序不再需要客户端数据库驱动程序。它使用网络上的中间服务器来存取数据库。这种应用使得以下技术的实现有了可能,这些技术包括负载均衡、连接缓冲池和数据缓存等。由于第3种类型往往只需要相对更少的下载时间,具有平台独立性,而且不需要在客户端安装并取得控制权,所以很适合于inte.net上的应用。
类型4:purejavadriver
第4种类型通过使用一个纯java数据库驱动程序来执行数据库的直接访问。此类型实际上在客户端实现了2层结构。要在n-层结构中应用,一个更好的做法是编写一个ejb,让它包含存取代码并提供一个对客户端具有数据库独立性的服务。
weblogic服务器为一些通常的数据库提供了jdbc驱动程序,包括oracle,sybase,microsoftsqlserver以及informix。它也带有一种jdbc驱动程序用于cloudscape,这是一种纯java的dbms,weblogic服务器中带有该数据库的评估版本。
以下让我们看一个jdbc实例:在这个例子中我们假定你已经在cloudscape中建立了一个phonebook数据库,并且包含一个表,名为contact_table,它带有2个字段:name和phone。开始的时候先装载cloudscapejdbcdriver,并请求drivermanager得到一个对phonebookcloudscape数据库的连接。通过这一连接,我们可以构造一个statement对象并用它来执行一个简单的sql查询。最后,用循环来遍历结果集的所有数据,并用标准输出将name和phone字段的内容进行输出。
import java.sql.*; |
ok。接着来看一看jdbc是如何在企业应用中的进行使用。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器