J2EE为开发企业级的多层应用程序和复杂的企业系统定义了一套API。针对各种各样的企业需求,本书试图通过J2EE解决所有的企业问题。全书共分六大部分30章,分别从企业面临的问题、企业数据的表示、企业通信、常见企业服务、企业Web支持和企业应用程序支持等几个方面阐述企业问题的J2EE解决方案。本书配套光盘中的附录还分别介绍了分布式应用程序开发的一些基本概念,如数据库与SQL、TCP/IP通信、HTPP通信、HTML、面向对象技术等,此外还包括在各种平台下进行J2EE开发所需的工具和实用程序。
本书内容丰富,是一本J2EE的系统性参考书。本书适合于用J2EE开发企业应用系统的中高级人员,也适合作为编程初学者的入门指南。
第1章 J2EE企业开发
1.1 企业系统概述
1.2 J2EE企业系统方案模型
1.3 J2EE体系结构
1.4 J2EE企业数据支持
1.5 J2EE企业通信支持
1.6 J2EE公共企业服务
1.7 J2EE企业Web支持
1.8 J2EE企业应用程序支持
1.9 小结
第二部分 企业数据支持
第2章 企业数据
2.1 企业数据概述
2.2 数据表示
2.3 数据库基础
2.4 关系型数据库
2.5 对象数据库
2.6 Java数据访问技术
2.7 小结
第3章 XML
3.1 XML概述
3.2 XML文档结构
3.3 文档类型定义(DTD)
3.4 XML模式
3.5 可扩展样式单语言(XSL)
3.6 XML链接
3.7 小结
第4章 JAXP
4.1 SAX与XML分析
4.2 核心SAX抽象
4.3 SAX事件处理器
4.4 SAX分析器接口
4.5 DOM与XML分析
4.6 DOM体系结构
4.7 通用的DOM节点
4.8 具体DOM节点类型
4.9 DOM分析
4.10 XML转换(XSLT)
4.11 小结
第5章 核心JDBC
5.1 JDBC体系结构
5.2 JDBC驱动器及其类型
5.3 JDBC驱动器配置
5.4 JDBC连接
5.5 JDBC语句
5.6 准备语句
5.7 结果集
5.8 SQL与Java映射
5.9 存储过程
5.10 JDBC元数据
5.11 小结
第6章 高级JDBC
6.1 可滚动结果集
6.2 基本事务接口
6.3 可更新结果集
6.4 批处理更新
6.5 高级数据类型
6.6 行集
6.7 基于容器的JDBC
6.8 数据源
6.9 连接池185
6.10 分布式事务
6.11 小结
第三部分 企业通信支持
第7章 企业通信
7.1 分布式系统
7.2 分布式机制
7.3 网络客户机
7.4 网络服务器
7.5 激活服务概述
7.6 JavaBeans激活框架(JAF)
7.7 小结
第8章 CORBA通信
8.1 CORBA概述
8.2 对象请求代理
8.3 GIOP与IIOP
8.4 服务、功能与业务对象
8.5 IDL
8.6 CORBA设计与开发
8.7 CORBA工具与Java IDL
8.8 CORBA接口
8.9 CORBA服务器与框架
8.10 ORB基础结构
8.11 CORBA客户机与残根
8.12 CORBA命名
8.13 按值对象
8.14 小结
第9章 RMI通信
9.1 RMI基础
9.2 JRMP
9.3 RMI与IIOP
9.4 Java-to-IDL映射
9.5 按值对象与RMI
9.6 RMI接口
9.7 RMI服务器与框架
9.8 RMI注册
9.9 RMI客户机、残根与查询
9.10 RMI对象激活
9.11 定制套接
9.12 小结
第10章 Web Service通信
10.1 Web服务与WS-I概述
10.2 SOAP
10.3 SAAJ
10.4 SOAP编码方式
10.5 WSDL与JWSDL
10.6 SOAP RPC
10.7 JAX-RPC
10.8 小结
第四部分 常见企业服务
第11章 命名服务与JNDI
11.1 命名服务概述
11.2 JNDI命名服务
11.3 命名文件
11.4 CORBA命名
11.5 RMI命名
11.6 Windows注册表命名
11.7 小结
第12章 目录服务与JNDI
12.1 目录与交易服务概述
12.2 JNDI目录服务
12.3 LDAP
12.4 DSML
12.5 DNS
12.6 NIS目录服务
12.7 NDS目录服务
12.8 Microsoft活动目录服务
12.9 CORBA交易服务
12.10 Jini交易服务
12.11 小结
第13章 Web服务查找与JAXR
13.1 Web服务注册表概述
13.2 JAXR概述
13.3 JAXR信息模型
13.4 JAXR连接
13.5 JAXR注册表服务
13.6 JAXR查询管理器
13.7 JAXR生命周期管理器
13.8 小结
第14章 事务服务与JTA和JTS
14.1 事务
14.2 事务服务概述
14.3 对象事务服务
14.4 Java事务API
14.5 JTA事务管理器接口
14.6 JTA应用程序接口
14.7 JTA与X/Open XA
14.8 Java事务服务
14.9 Web服务事务
14.10 小结
第15章 消息服务与JMS和JAXM
15.1 消息概述
15.2 MOM
15.3 Java消息服务概述
15.4 JMS核心体系结构
15.5 JMS点对点队列模型
15.6 JMS发布/订阅模型
15.7 JMS统一消息域模型
15.8 JAXM
15.9 小结
第16章 JavaMail
16.1 电子邮件消息系统
16.2 JavaMail体系结构概述
16.3 通用的电子邮件部分和消息
16.4 MIME部分与消息
16.5 JavaMail事件体系结构
16.6 建立邮件会话
16.7 消息库与文件夹
16.8 消息传输
16.9 JavaMail例子
16.10 小结
第17章 保险与安全服务
17.1 保险服务
17.2 安全服务
17.3 Java安全模型与基础结构
17.4 Java安全编程
17.5 CORBA安全性
17.6 小结
第五部分 企业Web支持
第18章 Web开发与服务
18.1 Web客户机
18.2 Web服务器
18.3 Web服务
18.4 Web开发
18.5 小结
第19章 Java Servlet
19.1 Servlet体系结构
19.2 Servlet接口
19.3 Servlet HTTP接口
19.4 请求处理
19.5 生成响应
19.6 会话管理
19.7 Servlet请求与响应过滤
19.8 Java Servlet部署
19.9 Servlet服务管理
19.10 小结
第20章 Java服务器页面
20.1 JSP概述
20.2 JSP语言基础
20.3 JSP对象
20.4 脚本元素
20.5 JSP指令
20.6 JSP例子
20.7 标准操作
20.8 JSP配置与部署
20.9 小结
第21章 JSP标志
21.1 标志扩展体系结构
21.2 标志生命周期
21.3 定制标志实现
21.4 标志元数据信息抽象
21.5 简单标志与JSP段
21.6 标志文件
21.7 JSP与标志检验
21.8 标志库
21.9 小结
第22章 Web服务与Web组件
22.1 Web组件作为Web服务
22.2 Web服务Web组件实现
22.3 Web组件部署配置(web.xml)
22.4 Web服务Web组件部署配置(webservices. xml)
22.5 Web服务类型映射部署配置(java-wsdl-mapping.xml)
22.6 Web服务Web组件引用
22.7 Web服务Web组件部署
22.8 小结
第六部分 企业应用程序支持
第23章 企业应用程序服务
23.1 企业应用程序平台
23.2 独立企业应用程序
23.3 基于应用程序服务器的企业应用程序
23.4 应用程序服务器体系结构提供者角色
23.5 应用程序服务器组件
23.6 应用程序服务器客户机接口
23.7 应用程序服务器客户机实现
23.8 企业应用程序配置与部署
23.9 应用程序服务管理
23.10 小结
第24章 EJB基础
24.1 EJB简介
24.2 EJB体系结构
24.3 EJB定时器服务
24.4 EJB类型
24.5 EJB开发
24.6 EJB配置与部署
24.7 小结
第25章 会话EJB
25.1 无状态会话Bean
25.2 有状态会话Bean
25.3 会话Bean远程客户机接口
25.4 会话Bean本地客户机接口
25.5 定时会话Bean对象
25.6 会话Bean配置与部署
25.7 小结
第26章 实体EJB
26.1 EJB数据库连接
26.2 实体Bean服务器组件
26.3 BMP实体Bean
26.4 CMP实体Bean
26.5 实体Bean远程客户机接口
26.6 实体Bean本地客户机接口
26.7 EJB QL
26.8 实体Bean配置与部署
26.9 小结
第27章 消息驱动EJB
27.1 消息驱动Bean概述
27.2 消息驱动Bean组件
27.3 消息驱动Bean客户机接口
27.4 定时消息驱动Bean对象
27.5 消息驱动Bean配置与部署
27.6 小结
第28章 EJB保险服务
28.1 EJB事务
28.2 J2EE与EJB可用性和伸缩性
28.3 EJB安全性
28.4 J2EE与EJB安全和JAAS
28.5 小结
第29章 EJB集成与管理
29.1 企业应用程序集成与管理概念
29.2 EJB Web客户机集成
29.3 EJB CORBA客户机集成
29.4 容器管理资源
29.5 EJB企业通信集成
29.6 J2EE接头体系结构
29.7 Java授权容器协议
29.8 J2EE管理与JMX
29.9 J2EE部署
29.10 小结
第30章 Web服务与EJB
30.1 EJB Web服务概述
30.2 Web服务EJB实现
30.3 EJB部署配置(ejb-jar.xml)
30.4 Web服务EJB部署配置(webservices.xml与java-wsdl-mapping.xml)
30.5 Web服务EJB引用
30.6 Web服务EJB部署
30.7 小结
现实世界中企业面临的问题
本书的读者也许已经知道或经历过,现实世界中,企业应用程序开发问题通常在项目进行中比项目开始时显得更复杂,更难处理。这些问题并非独有,财务服务行业也很相似。根据我的经验,大型财务服务机构出现的企业应用程序开发问题,几乎涉及了可能影响企业应用程序开发工作的每个方面。
事实上,财务服务行业的许多公司存在着将应用程序保持新鲜和竞争力的问题。应用程序的用户多种多样,通常会在某个时候要求供需信息链。导致的结果是机构必须支持花样繁多的应用程序,而应用程序的生命周期越来越短,用户群的变化速度和财务平均需求的变化速度一样快。
ING集团是财务服务行业的全球领导者,对这种需求非常了解。该集团是1990年由National-Nederlanden与NMB Postbank Group合并而成的。ING集团经历了10年雄心勃勃的业务扩张,主要是自身增长和国际并购。最近,ING集团并购了Reliastar与Aetna财务服务公司(美国)、Seguros Comercial America公司(墨西哥)、Zurich Financial公司(加拿大)之类的大型财务服务公司,包括美洲地区的经营组织。合并与并购的结果,使ING集团变成世界五十强之一。整个20世纪90年代的合并与并购活动,使ING集团的技术体系结构和资产组合变得相当复杂。
下面简要介绍我在ING集团等大型跨国企业中的角色,介绍J2EE技术、本书作者和本书如何帮你解决企业应用程序开发中的问题。
企业问题导航
过去几年,我一直是ING集团美洲技术管理办公室(TMO)的技术总监(CTO),负责领导ING美洲地区的企业体系结构、信息安全、共享应用程序基础结构与服务、信息管理和技术方向。作为技术总监,我要提供与支持业务和技术相适应的方法,要考虑上市时机的重要性。业务的关键是提供开放和适应性的体系结构,使不同企业的应用程序模块和第三方厂家的服务以及定制的开发项目能够在高度差异的企业级平台上做到即插即用。
对超常适应性企业体系结构的需求不是某个行业特有的,而是共同的企业需求,我在从事企业技术与顾问工作的经历中,深深体会到这一点。我在全球范围内积极参与各种组织的活动,是ING集团IT体系结构委员会、IT标准委员会、基础结构委员会和信息安全战略委员会成员,信息安全战略委员会是全球IT领导论坛的成员。2001年进入ING集团之前,我领导Cyberian Outpost的信息技术组织。在担任这个职务的两年中,我负责领导世界级企业技术服务供应基础结构的开发。在此之前,我是Meta集团的副总裁,也是几家专业服务公司的管理合伙人。在从事管理合伙人工作期间,我开发的顾问模型、产品和方案提供给沃尔玛、惠普公司、AT&T公司、Total Fina Elf S.A公司、大众汽车公司、可口可乐公司、Delta航空公司、Kroger公司、AOL时代华纳公司、国际货币基金组织、ABN Amro公司等。利用一流的和最新的行业经验、过程与原理,这些技术方案标识、评估和转移他们的业务。
用J2EE解决企业问题
在完成这些工作时,成功的关键是以高效和全局方式解决企业应用程序的开发问题,得到可适应的体系结构。Java与J2EE技术可以保证这种成功,最近几年甚至可以用J2EE实现这类问题的解决方案。在ING集团,J2EE软件平台上移植与开发了所有关键任务的企业应用程序,而且还将继续移植与开发更多的企业应用程序。 J2EE的模块化和适应企业相互操作的特性,使我们能够在整个机构中集成不同数据结构和历史遗留的应用程序,很容易就能开发和部署J2EE应用程序。J2EE不仅特性丰富,而且可以方便地伸缩和适应不同平台与企业环境,这在财务服务行业中是前所未有的。J2EE的模块化、开放性和广泛支持的体系结构,使应用程序模块、服务和服务器之间具有良好的适应性,解决了过去和目前任何其他方案都无法解决的适应性体系结构问题。因此,我们可以在J2EE平台上开发和部署所有应用程序,而且应用程序也得到优化,适应性得到增强,这对ING集团在财务服务行业的成功是至关重要的。
此外,J2EE技术是在行业中经过证明的、具有光辉历史的技术。事实上,在ING集团之前,我所在的Cyberian Outpost公司也得益于J2EE技术。此外,J2EE技术还能在不同Web站点之间提供适应性和复用性,能进行快速开发,并且支持多个电子商业前端。除了这种应用程序间的适应性与复用性之外,应用程序内的适应性与复用性,还能使新特性更好地加进现有的主要Web站点中。
用本书解决企业问题
我首次遇到本书的第一作者Paul Perrone是在2000年,当时正拜读他与Krishna Chaganti合著的“Building Java Enterprise Systems with J2EE”一书。Paul最终成为我在Cyberian Outpost时的技术小组的软件主任,他的职责是建立前面介绍的J2EE基础结构和部署J2EE应用程序。Paul和他的Assured技术公司人员一起在Cyberian Outpost采用基于J2EE的技术和企业级J2EE厂家产品。后来,我把Paul和他的Assured技术公司请到ING集团,负责确定整个机构的J2EE体系结构基础结构。
根据这些情况和他过去的著作,我可以用亲身经历证明Paul能够用流畅的文字介绍如何用J2EE建立Java企业系统,而且能在工作中很好地进行沟通。正是这种文字能力和实践经验的结合,使本书变得如此精彩和独特。作为实践工作者,我发现Paul关注每个技术细节,具有丰富的J2EE与Java技术知识;作为作者,我发现Paul熟悉J2EE与Java技术的妙处,能够明确而全面地进行介绍,把丰富的实践经验总结到作品中,这是许多其他书籍中看不到的。
我很荣幸能与本书的另外两位作者Tom Schwenk和Krishna Chaganti共事,前者先后在Cyberian Outpost和ING工作,后者在ING工作。他们高超的软件开发技巧和丰富的软件开发知识,进一步保证了本书提供优秀的代码例子。事实上,我至今记得,曾经多次请Tom迅速解决了J2EE服务器中的技术问题,使我避免了周末的加班之苦。Paul、Tom与Krishna是属于所谓的硬核体系结构和开发类型的人,直率的个性保证了他们能胜任工作,把他们的专业知识与个性融入著作中。
第一次听说他们要撰写《J2EE开发使用手册》,写成用J2EE建立企业应用程序的综合性、内聚性、实用性指南时,我就坚信他们一定能取得成功。我有幸阅读过他们过去的J2EE著作,和他们一起在ING与Cyberian Outpost之类的公司共过事。他们的写作经历使他们有机会探索和了解J2EE技术的每个方面。作为J2EE架构师和开发人员,他们能够从实践出发,把不同的J2EE开发方法运用到实践中。
最后,从他们的艰苦工作中,我看到他们对J2EE有深刻的了解,而他们在写作本书时,不仅有益于对J2EE的详细了解,而且有益于实际运用J2EE。书中丰富的材料、演示框图和实际代码例子,使本书不仅信息丰富,而且读起来充满乐趣。
Raymond Karrenbauer
ING技术管理办公室 技术总监
如果你准备阅读本书,就已经很接近J2EE所包含的丰富而精彩的技术了!
本书从基础开始介绍Java与XML企业技术,用它们建立企业中的各种应用程序,包括简单应用程序和复杂应用程序,包括很实用的应用程序和很精彩的应用程序。本书的例子包括访问数据库中的数据、分析与操纵XML数据与消息、在大多数常见分布式通信网络上发送与接收消息、在网络或Internet上查找与发现服务、保证数据的完整性与安全性、在Web上放置与部署应用程序、建立可伸缩性的企业核心应用程序和集成各种应用程序与系统等。
在介绍这些内容之前,最好先了解要解决的问题,这样就能更好地保证本书满足你的需求。此外,还要知道解决这些问题涉及的课题,保证书中的材料与你的技术兴趣有关。本前言介绍本书要解决的问题、概述涉及的课题、本书的目标读者和组织材料的基本方法。
企业的咖啡因
首先要概述本书涉及的范围与问题。和任何软件架构师与开发人员一样,我们也经常遇到这样的情形:要满足紧张的交货期或生产稳定的软件版本。我们是软件开发专业人员,提供了多种企业系统解决方案,习惯于在交货期和时间压力下使用这些技术,与你有过同样的烦恼,早就盼望有这样一本书。当然,这种书还要反映建立企业系统的最新技术。因此,我们认为本书是市场驱动和技术驱动的,要满足企业系统开发人员的需求。本节首先定义本书的任务与目标,这些任务与目标是写作本书的源动力。最后具体介绍本书要解决的问题类型,介绍企业如何利用信息技术和Java企业方案。
本书的任务与目标
本书是用J2EE建立企业应用程序的综合性、内聚性、实用性指南。利用本书介绍的技术,可以迅速建立任何企业系统和集成方案。本书从基础开始介绍这些企业技术,使读者全面深入地了解大量的Java企业应用程序。
要解决的问题
企业系统包括分布式、可伸缩、多用户和业务关键的系统,其目的是通过信息技术提高公司或机构的生产率。我们深处在信息与知识技术革命之中,信息技术将比工业革命对经济和生活带来更大的影响。在这场革命中,自动化与提高生产率的主要引擎是企业系统。公司和机构越来越多地卷入复杂的信息网络,以便进一步提高生产率,增加竞争力和减少成本。企业系统设计要满足许多要求,包括电子商务、支持Internet/Web、B2B连接、企业应用程序集成(EAI)和数据挖掘等。
因此,企业系统开发小组总是在寻找更有效的方式来建立企业系统,解决企业系统的独特问题,满足企业系统开发效率的高要求。公司和机构越来越多地需要企业级的开发人员和工程师来解决各种各样的企业系统问题。Java企业技术、Web服务和J2EE提供了更快捷、更有效地建立企业系统的方法,可以使得到的企业软件可复用、可伸缩、可分布、可维护、安全和可靠。
本书能满足你的需求
本书分六个部分和一组附录(限于篇幅,本书的附录全部放在光盘中)。本书及各个部分的结构如下,读者可以从中了解每个部分的内容,便于确定阅读方法,迅速翻到最感兴趣的章节。此外还介绍书中使用和涉及到的一些软件,使读者能更具体地了解需要的企业软件类型,还可以在阅读过程中建立自己的企业软件类型。最后,还要介绍本书使用的设计规则。
第一部分:企业系统
本书第一部分定义和描述下列概念与技术。
● 企业系统问题:开发企业系统时要解决的问题与范围(第1章)。
● 企业系统体系结构:了解企业系统方案的基本参考体系结构(第1章)。
● Java企业系统体系结构:了解企业系统方案的Java结构与Web服务(第1章)。
● J2EE:概述J2EE技术的体系结构(第1章)。
● Java企业技术:概述其他非J2EE Java企业技术的地位与作用(第1章)。
● Web服务:概述J2EE所包含的Web服务技术(第1章)。
第二部分:企业数据支持
本书第二部分通过例子定义和描述下列概念与技术。
● 企业数据表示:数据如何表示、分析、操纵与检验(第2章~第4章)。
● XML:介绍如何以标准方式表示数据(第3章)。
● XML DTD:介绍如何描述XML文档结构(第3章)。
● XML模式:介绍如何描述XML文档结构与语义(第3章)。
● XSL变换:介绍XML文档如何从一种形式自动变成另一种形式(第3章)。
● SAX:分析XML文档的标准(第4章)。
● DOM:读取与写入XML文档的标准(第4章)。
● JAXP:分析、读取、写入、检验与变换XML文档的API(第4章)。
● 企业数据访问:如何在数据库中读取、写入、更新与删除数据(第2章,第5章,第6章)。
● JDBC:访问数据库数据的API(第5章,第6章)。
第三部分:企业通信支持
本书第三部分通过例子定义和描述下列概念与技术。
● 分布式对象通信:基于对象的计算平台如何在分布方式中通信(第7章~第9章)。
● CORBA:建立平台和语言无关的分布式对象客户机与服务器(第8章)。
● GIOP/IIOP:CORBA的基础通信传输协议(第8章)。
● IDL:描述CORBA接口标准语言无关的方法(第8章)。
● Java IDL:Java平台提供的API,用于建立CORBA应用程序(第8章)。
● RMI:建立Java分布式对象客户机与服务器的API(第9章)。
● RMI/IIOP:RMI的适应版本,用IIOP作为基础通信传输协议(第9章)。
● Web服务通信:XML消息如何通过Web以传统方式在客户机与服务器之间通信(第7章,第10章)。
● SOAP:Web服务通信机制中表示请求与响应的标准方法(第10章)。
● SAAJ:分析与操纵SOAP消息的API,这种消息可带附件(第10章)。
● WSDL:通过XML描述Web服务接口的标准方法(第10章)。
● JWSDL:分析与操纵WSDL文档的API(第10章)。
● JAX-RPC:建立Web服务客户机与服务器的API(第10章)。
● WS-I:这个标准将各个Web服务标准集中到一个内聚配置文件中(第10章)。
第四部分:常见企业服务
本书第四部分通过例子定义和描述下列概念与技术。
● 命名服务:如何用名称注册和查找分布式对象(第11章)。
● 目录服务:如何用名称与属性来注册和查找分布式对象(第12章)。
● 交易服务:如何用名称、属性与类型来注册和查找分布式对象(第12章)。
● Web服务查找:如何用名称与属性来注册和查找Web服务(第13章)。
● JNDI:包装名称与目录服务的API(第11章,第12章)。
● CORBA名称:CORBA应用程序的标准名称服务方法(第11章)。
● RMI名称:RMI应用程序的标准名称服务方法(第11章)。
● LDAP:标准轻量级目录服务协议(第12章)。
● DSML:用XML数据格式的标准目录服务协议(第12章)。
● Jini:Java动态交易服务的API(第12章)。
● ebXML注册表:Web服务注册与查找标准(第13章)。
● UDDI:另一个Web服务注册与查找标准(第13章)。
● JAXR:包装Web服务注册与查找的API(第13章)。
● 事务服务:保证分布式计算操作原子性与可靠性的方法(第14章)。
● JTA:事务管理API(第14章)。
● JTS:低级相互可操作分布式事务管理API(第14章)。
● 消息服务:提供异步、松耦合、分布式通信的方法(第15章)。
● JMS:消息服务实施API(第15章)。
● JAXM:异步Web服务消息API(第15章)。
● JavaMail:发送与接收电子邮件的API(第16章)。
● 保险服务:这个服务提供系统的可靠性、可用性、可维护性、安全性和安全(第17章)。
● 安全服务:这个服务提供系统的保密性、隐私、完整性、用户标识、验证、访问控制、监察与安全关键操作相关的不可反悔性(第17章)。
● Java安全性:保证Java应用程序安全的各种API(第17章)。
第五部分:企业Web支持
本书第五部分通过例子定义和描述下列概念与技术。
● Web组件与服务器:描述管理环境中如何通过Web提供与访问应用程序(第18章)。
● Java 小服务:这个API包装通过Web的请求与响应的服务器端处理(第19章)。
● Java服务器页面(JSP):用HTML内容中混合的元素与标志包装通过Web的请求与响应的服务器端处理(第20章)。
● JSP标志:标准与定制标志,与HTML混合,在服务器端包装基于软件的操作(第20章,第21章)。
● JSTL:描述JSP中变量与流程的标准表达式语言(第20章)。
● Web服务与Web组件:用Web服务部署J2EE Web组件的标准方法(第22章)。
第六部分:企业应用程序支持
本书第六部分通过例子定义和描述下列概念与技术。
● 企业应用程序组件与服务器:描述管理环境中如何构建和部署大型企业应用程序(第23章)。
● Enterprise JavaBeans (EJB):这个API建立的组件用于标准应用程序服务器环境,用标准XML部署描述项的方式配置和部署(第24章~第28章)。
● 无状态会话EJB:这个API和部署标准建立的组件包装以无状态方式和客户端的粗粒业务交互(第25章)。
● 有状态会话EJB:这个API和部署标准建立的组件包装以有状态方式和客户端的粗粒业务交互(第25章)。
● BMP实体EJB:这个API和部署标准建立的组件包装与持久存储的硬编码对象/关系型映射(第26章)。
● CMP实体EJB:这个API和部署标准建立的组件包装与持久存储的容器生成的对象/关系型映射(第26章)。
● EJB QL:标准语言,描述使用CMP实体EJB时容器如何查询持久存储中的对象(第26章)。
● 消息驱动EJB:这个API和部署标准建立的组件包装消息的异步使用者(第27章)。
● EJB事务:通过程序或声明定义EJB的事务管理(第28章)。
● EJB安全性:通过程序或声明保护EJB(第28章)。
● JAAS:API包装验证与授权机制(第28章)。
● EJB群集:在冗余服务器上部署EJB,实现负荷平衡和故障切换功能(第28章)。
● EAI:企业应用程序集成的方法,用J2EE组件与容器集成遗留和辅助应用程序的客户机与服务器(第29章)。
● J2EE接头体系结构:集成J2EE应用程序与外部企业信息系统的API和系统接口(第29章)。
● JACC:集成J2EE容器与第三方安全服务提供者的标准接口(第29章)。
● J2EE管理与JMX:集成J2EE容器与J2EE组件用于观察与管理的工具的标准接口(第29章)。
● J2EE部署:集成J2EE容器与J2EE组件用于配置与部署的工具的标准接口(第29章)。
● Web服务与EJB:用Web服务部署EJB组件的标准方法(第30章)。
附录
附录放在本书所附光盘上,包括参考材料和书中概念的展开介绍。书中的许多概念要求对附录中的内容有基本了解。附录包含下列内容。
A. 软件配置:到哪里取得、如何安装、如何配置和运行本书所用的第三方软件与例子。这个附录非常重要,要经常参考,因为其中介绍了许多例子软件的配置。另外,第三方软件推出新版本时会影响例子代码的运行,因此这个附录应经常更新。关于这个附录的更新和本书例子的软件配置信息,见Web站点www.assuredtech.com/j2eedev.htm。
B. JavaBeans:这个API包装的组件可以按标准接口模型检查和调用。许多J2EE API要求对JavaBeans API与接口标准有基本了解。
C. 数据库概念与SQL:标准数据库概念与SQL命令手册。JDBC开发通常要求开发人员知道如何建立SQL语句。
D. TCP/IP通信:标准TCP/IP通信堆栈和Java套接编程概念。许多J2EE和J2SE通信标准要求对TCP/IP和Java套接编程有基本了解。
E. HTTP通信:HTTP与Web通信标准。许多J2EE和J2SE Web通信标准要求对HTTP与Java HTTP抽象和Java套接编程有基本了解。
F. HTML:基本HTML语法手册。Java小服务与JSP开发通常要求开发人员对HTML有基本了解。
G. 企业软件开发:面向对象和基于组件开发的基本概念以及UML启蒙知识。本书介绍的J2EE API用UML框图迅速表达设计意图。
H. 其他资料:本书所涉及规范、标准与其他信息的参考资料和Web链接。
本书使用的软件
本书介绍的各种J2EE与Java企业技术带有支持例子。附录A介绍到哪里取得、如何安装、如何配置和运行本书所用的第三方软件与例子,此外还介绍了要下载哪些软件和如何下载。要运行某一章中的程序例子,可能不仅要下载、安装和配置第三方厂家的软件,还要下载、安装和配置本书其他章节中与这个例子相关的软件。
许多例子的运行平台是由企业级商业化厂家实现的,如BEA、Iona与Borland公司。事实上,本书介绍的J2EE容器例子已经在商业化BEA WebLogic Server和Oracle数据库中运行过。此外,我们还用Sun公司提供的J2EE参考版本和MySQL数据库运行了许多例子。
最后,有些例子还可在开放源代码产品配置中运行。除了运行本书例子的许多不同配置外,本书还有个ANT建立脚本,可以在Windows平台或UNIX与Linux平台上编译、包装、部署和运行例子。
这样,本书使用的许多不同配置演示了Java与J2EE真正的跨平台性。通过运行书中的例子,可以体验如何在UNIX上使用BEA WebLogic Server和Oracle数据库之类的商业级平台配置,也可以使用J2EE参考版本和Windows上的Cloudscape数据库之类的开发级配置,或使用MySQL数据库和Linux的开放源代码配置。我们提供了本书代码的商业级平台配置和开发级配置的配置文件,见附录A介绍,www.assuredtech.com/j2eedev.htm站点提供了附录更新、其他软件配置说明和运行本书代码的新配置。应该经常访问这个Web站点,了解和参与本书的支持社区,提供或下载其他平台配置以及与J2EE和支持技术相关的新信息和更新资源。
设计规则
本书用UML描述各种J2EE API的设计。UML框图以图形方式方便地显示各种J2EE API类结构、方法签名和类关系。有些书籍包括整个API,而我们则把这些API描述成更容易理解的各种J2EE API类的关系以及这些类中定义的方法。这些框图还可以作为阅读某章之后的复习参考图。
为此,我们在UML框图中尽量放进更多J2EE API及其方法签名。遇到J2EE的新内容时,我们首先用一个UML框图演示其设计,然后在正文中按UML框图描述这个API,最后用例子说明和巩固这个设计概念。附录G介绍了本书采用的特定UML设计规则。
目标读者及组织方式
介绍本书要解决的问题和解决这些问题所涉及的内容后,下面介绍本书的目标读者,告诉读者能从书中学到什么知识,还要介绍表述材料的特定方法。
读者对象
本书可以帮助专业软件工程师承担软件开发人员、设计人员和架构师的角色。本书的主要目标读者是经过正式培训的软件开发人员、设计人员和架构师,他们具有面向对象软件开发的知识和基本的Java知识,希望获得使用Java企业级开发的技巧。本书附录中的一些背景材料概述了建立企业级Java技术的一些基础核心概念与技术。这个概述不仅可以作为复习材料,还可以让没有太多Java背景而需要用Java进行企业软件开发项目的软件工程师受益。
本书的组织方式
尽管本书使用的一些Java企业技术已经有一定的历史,但J2EE平台把这些技术集成到了一个内聚的平台上。事实上,J2EE本身已经扩展成相当综合的平台,可以只用J2EE技术生成几乎任何企业应用程序。尽管J2EE实际上是一种可扩展的中心技术,但目前单靠基于J2EE的容器无法解决所有的Java企业问题。为此,书中还介绍了其他几个基于Java的技术,从而全面介绍了基于Java的企业开发技术。
事实上,在本书介绍这些技术时,还引入了大量的实际和实践经验。因此,从实用的角度考虑,有时会转到描述实用企业开发方案。本书的目标是为使用J2EE平台建立可伸缩的、安全的、基于Web的分布式企业系统的人员提供全面且实用的指南,因此不仅详细介绍Java企业体系结构与设计概念,而且还介绍了许多实例和代码。本书的重点是通过演示如何使用核心API和如何配置Java企业系统应用程序而描述如何建立Java企业应用程序,但我们也经常简化某些例子,不完全按照面向对象抽象的方法和样式,目的是更快更直接地演示如何使用特定API。
由于J2EE和辅助Java企业API的特性非常丰富,因此本书首先从基础开始,以避免在内容编排上出现“年代倒置”的现象,即在书中尽量先介绍后续章节要用到的概念、技术与API。例如在介绍EJB之前,先介绍查找EJB句柄的JNDI;在介绍CORBA名称服务使用的JNDI和EJB的基于CORBA相互提供操作性之前,先介绍CORBA。这样,我们可以从头开始学习J2EE与Java企业技术,如果技术B要使用和依赖于技术A,则会在介绍技术B之前介绍技术A。
此外,从另一个角度看本书采用的方法时,可以从模型/视图/控制器(MVC)体系结构考虑本书的范围。由于我们最关心的是系统被中间层服务器端应用程序使用的部分,因此可以说,我们最感兴趣的是模型/视图/控制器(MVC)体系结构中的控制器方面。本书主要介绍如何实现视图(用户界面和Web支持),以及包装、表示和支持模型访问(数据支持)。
最后,有的著作可能专门介绍JMS、Web服务之类特定技术或其他J2EE API,也许你会认为,本书只能蜻蜓点水,因为J2EE中的内容如此丰富。但是,只要看看这本书的厚度,你就能体会到其中有多少内容了。本书的每一页都非常紧凑,具有丰富的J2EE信息和例子。
此外,其他介绍EJB之类技术的书籍通常花大半篇幅介绍JNDI、JDBC、JMS、Web服务和其他技术,以便了解如何建立EJB应用程序,最后甚至可能只是建立了一个简单应用程序。之所以介绍这些技术,只是为了说明这些技术需要以内聚方式介绍,以便读者能在实际中采用这些技术。此外,有些书籍还花大量篇幅列出API的JavaDoc文档。本书采用的自下而上方法、浩大的篇幅和UML设计框图,互为补充,使本书能以内聚方式综合而实用地按例子介绍J2EE。
最终结果
阅读本书之后,你就可以深入了解如何运用J2EE和Java企业技术实现企业数据支持、通信、快速开发、保险提供、Web支持、Web服务和可伸缩应用程序支持。你的知识自然是综合而实用的,这些J2EE和Java企业技术知识将成为你建立企业系统的主要工具库。