基础篇 3
第1章 Java EE 5和GlassFish 3
1.1 Java EE 5概述 3
1.2 Java EE 5架构 4
1.2.1 容器(Container) 6
1.2.2 应用组件(Application Component) 6
1.2.3 Java EE 5的标准服务 7
1.3 Java EE 5的新特性 9
1.3.1 标注 9
1.3.2 依赖性注入 10
1.3.3 EJB 3.0和JPA 10
1.3.4 Web服务 11
1.3.5 JSF 11
1.4 Java EE 5相关的JSR 11
1.4.1 JCP介绍 12
1.4.2 Java EE 5相关的JSR 13
1.5 关于GlassFish 14
1.5.1 GlassFish项目概述 15
1.5.2 GlassFish生态 15
1.5.3 GlassFish的技术特性 17
1.6 GlassFish和Java EE 5 SDK 18
1.6.1 Java EE 5 SDK 18
1.6.2 基于GlassFish代码构建的3个产品 20
1.7 小结 21
第2章 开源和社区 22
2.1 开源概述 22
2.1.1 FOSS 22
2.1.2 开源带来的变革 23
2.1.3 开源软件许可类型 24
2.2 Java开源与GlassFish开源 24
2.2.1 Java的GPL v2开源 24
2.2.2 GlassFish的双开源许可 25
2.3 GlassFish社区 26
2.3.1 参与GlassFish社区 26
2.3.2 FishEye 27
2.3.3 Issue Tracker 28
2.3.4 GlassFish子社区 28
2.4 java.net社区 29
2.4.1 参与java.net社区 30
2.4.2 java.net指导原则 32
2.5 SDN和SDN China 33
2.5.1 SDN 33
2.5.2 Sun中国技术社区(SDN China) 34
2.6 小结 35
第3章 安装和构建GlassFish 36
3.1 基于二进制文件安装GlassFish 36
3.1.1 预备条件 36
3.1.2 安装二进制存档 37
3.1.3 启动服务器 37
3.2 基于源代码构建GlassFish 38
3.2.1 构建预备工作 38
3.2.2 构建步骤 39
3.2.3 快速测试 43
3.3 使用NetBeans(IDE)构建模块 43
3.4 小结 45
应用篇 49
第4章 管理控制台 49
4.1 管理控制台概述 49
4.1.1 启动和登录 49
4.1.2 域的管理 50
4.1.3 管理控制台的组成 50
4.2 应用部署 52
4.2.1 部署应用程序 52
4.2.2 部署Web服务 53
4.2.3 部署MBean 54
4.3 资源管理 55
4.3.1 JDBC资源 56
4.3.2 JMS资源 56
4.3.3 JavaMail会话 58
4.3.4 JNDI资源 58
4.3.5 连接器 59
4.4 系统配置 60
4.4.1 Java EE容器 60
4.4.2 设置HTTP服务 63
4.4.3 ORB(对象请求代理) 66
4.4.4 线程池(Thread Pool) 67
4.4.5 系统JMX连接器 67
4.5 系统监控 67
4.5.1 日志管理 68
4.5.2 监控组件和服务 69
4.5.3 诊断服务 71
4.5.4 JVM和高级设置 71
4.6 小结 72
第5章 GlassFish命令行 73
5.1 命令行工具asadmin的应用 73
5.1.1 语法 73
5.1.2 asadmin子命令 74
5.1.3 域(domain)子命令 75
5.1.4 本地命令和远程命令 78
5.1.5 asadmin执行方式 79
5.2 asant介绍 80
5.2.1 asant的配置 80
5.2.2 asant扩充的Ant任务 80
5.3 命令行架构 82
5.3.1 命令的定义 83
5.3.2 命令的实现 84
5.3.3 命令的交互 85
5.4 命令定制 86
5.4.1 增加命令 86
5.4.2 定制远程命令 89
5.5 小结 92
第6章 Web应用程序基础和Servlet 93
6.1 HTTP简介 93
6.1.1 HTTP的特点 93
6.1.2 URL(统一资源定位符) 94
6.1.3 HTTP请求(Request) 94
6.1.4 POST和GET方法 96
6.1.5 HTTP响应(Response) 97
6.2 Web应用程序基础 98
6.2.1 Web应用程序分类 98
6.2.2 Web容器(Web Container) 98
6.2.3 Web模块(Web Module) 99
6.2.4 在GlassFish上打包、部署、配置和运行 100
6.2.5 动态重载 101
6.3 Servlet基本概念 102
6.3.1 什么是Servlet 102
6.3.2 Servlet的常用接口 102
6.3.3 Servlet的生命周期 104
6.4 Servlet中的对象 105
6.4.1 请求对象 105
6.4.2 响应对象 106
6.4.3 Session对象 107
6.5 Filter(过滤器) 109
6.5.1 定制Filter 109
6.5.2 Filter声明 111
6.5.3 Filter的生命周期 113
6.6 请求转发 114
6.6.1 include方法 114
6.6.2 forward方法 115
6.7 生命周期事件 115
6.7.1 监听器类型 116
6.7.2 部署监听器 116
6.8 Servlet 2.5规范的新特性 117
6.8.1 Servlet 2.5中的标注 117
6.8.2 web.xml的改变 118
6.8.3 其他 119
6.9 小结 119
第7章 JSP编程 120
7.1 JSP概述 120
7.1.1 JSP发展历史 120
7.1.2 JSP的由来 120
7.1.3 JSP与Servlet的转换 120
7.1.4 JSP的生命周期 123
7.1.5 架构中的应用 123
7.1.6 JSP页面的构成 124
7.2 JSP指令 124
7.2.1 page指令 124
7.2.2 taglib指令 125
7.2.3 include指令 126
7.3 JSP动作 126
7.3.1 〈jsp:useBean〉动作 127
7.3.2 〈jsp:setProperty〉和〈jsp:getProperty〉动作 128
7.3.3 〈jsp:include〉动作 129
7.3.4 〈jsp:forward〉动作 129
7.3.5 其他JSP动作 130
7.4 统一表达式语言(Unified Expression Language) 130
7.4.1 隐含对象(Implicit Objects) 131
7.4.2 对象的访问及其操作 132
7.5 表达式 133
7.5.1 立即表达式和延迟表达式 133
7.5.2 值表达式和方法表达式 134
7.5.3 自定义标记属性类型 135
7.5.4 禁用表达式 136
7.6 JSP标准标记库 137
7.6.1 Core标记库 138
7.6.2 XML标记库 140
7.6.3 SQL标记库 141
7.7 小结 142
第8章 JSF编程 143
8.1 JSF概述 143
8.1.1 RAD与Web应用 143
8.1.2 什么是JSF 144
8.1.3 开发工具对JSF的支持 144
8.2 创建JSF应用程序 145
8.2.1 创建一个使用JSF框架的Web应用程序 146
8.2.2 创建页面 147
8.2.3 页面导航 148
8.2.4 受管Bean 149
8.2.5 部署运行 150
8.3 完善JSF应用程序 151
8.3.1 示例分析 151
8.3.2 创建验证器(Validator) 151
8.3.3 创建转换器(Converter) 152
8.3.4 错误信息处理 152
8.3.5 自定义错误信息 153
8.3.6 自定义验证器 154
8.4 JSF中的重要组件 156
8.4.1 UI组件(UI Component) 156
8.4.2 绘制器(Renderer) 156
8.4.3 验证器(Validator) 156
8.4.4 受管Bean(Managed Bean) 156
8.4.5 转换器(Convertor) 157
8.4.6 事件(Event)和监听器(Listener) 157
8.4.7 消息(Message) 157
8.4.8 导航(Navigation) 157
8.5 JSF的工作方式 158
8.5.1 配置JSF应用 158
8.5.2 JSF的生命周期 159
8.6 重要的类和接口 162
8.6.1 FacesContext类 162
8.6.2 ExternalContext类 162
8.6.3 Application类 162
8.6.4 UIComponent接口 163
8.7 JSF组件的层次结构和标识 163
8.7.1 JSF组件的层次结构 163
8.7.2 用标识符标识组件 165
8.8 小结 166
第9章 AJAX技术 167
9.1 AJAX概述 167
9.1.1 为什么会出现AJAX 167
9.1.2 一个简单的AJAX验证的例子 167
9.1.3 AJAX技术的优势 175
9.1.4 AJAX技术的一些限制 176
9.2 Dojo Toolkit 176
9.2.1 用Dojo Toolkit实现AJAX验证 176
9.2.2 AJAX Widget 178
9.2.3 用Dojo实现的Fisheye List 178
9.2.4 Dojo的包 181
9.3 jMaki 182
9.3.1 包容器——jMaki 182
9.3.2 jMaki在NetBeans IDE中的安装和使用 182
9.3.3 用jMaki实现Fisheye 183
9.4 AJAX与JSF 184
9.4.1 实例:自动完成文本字段 184
9.4.2 Sun BluePrints AJAX组件 188
9.5 AJAX与GlassFish 189
9.5.1 Phobos 189
9.5.2 Woodstock 190
9.6 小结 191
第10章 Web服务 192
10.1 Web服务原理 192
10.1.1 Web服务体系结构 192
10.1.2 Web服务的实现技术 193
10.1.3 一个使用天气预报Web服务的实例 196
10.1.4 用JAX-WS实现Web服务 199
10.1.5 SAAJ 202
10.2 安全的Web服务 204
10.2.1 在GlassFish上实现全局的WSS 205
10.2.2 在GlassFish上实现局部的WSS 206
10.3 JAXB 207
10.3.1 JAXB历史 207
10.3.2 XML与Web服务 208
10.3.3 JAXB所描述的绑定 209
10.3.4 JAXB命令行工具 210
10.3.5 JAXB应用开发 210
10.4 StAX 212
10.4.1 拉式解析和推式解析 212
10.4.2 StAX接口 212
10.5 小结 217
第11章 EJB 3.0和JPA开发 218
11.1 EJB 3.0特点综述 218
11.1.1 为什么要EJB 3.0 218
11.1.2 EJB 3.0特点综述 218
11.2 Session Bean开发示例 219
11.2.1 定义业务接口 219
11.2.2 实现业务接口 220
11.2.3 打包 221
11.2.4 发布 221
11.2.5 查找和调用EJB 3.0 222
11.3 依赖注入示例 224
11.3.1 引用EJB 224
11.3.2 引用Resource 225
11.4 Entity与Java Persistence示例 226
11.4.1 定义EJB 3.0 Entity 226
11.4.2 使用和管理EJB 3.0 Entity 230
11.4.3 Entity Manager事务控制 232
11.4.4 Persistence.xml 234
11.5 小结 234
第12章 GlassFish的安全性 235
12.1 GlassFish安全性基本概念 235
12.2 密码安全的管理 236
12.2.1 密码文件权限 236
12.2.2 主密码管理 237
12.2.3 用户和资源密码管理 237
12.3 身份认证和授权 238
12.3.1 身份认证 238
12.3.2 身份授权 238
12.3.3 管理控制台对授权的管理 239
12.3.4 自定义的认证和授权模块 242
12.4 数字证书及工具 243
12.4.1 数字证书的基本概念 243
12.4.2 GlassFish证书文件 244
12.4.3 更改GlassFish证书文件的位置 244
12.4.4 keytool工具概述 245
12.4.5 使用keytool生成GlassFish证书 246
12.4.6 使用keytool为数字证书签名 246
12.5 单点登录 247
12.6 Web服务安全性 248
12.6.1 Web服务安全性规范 248
12.6.2 GlassFish消息安全提供者 249
12.6.3 GlassFish消息保护策略 249
12.6.4 GlassFish消息加密 252
12.6.5 WSS消息安全实例 253
12.7 GlassFish应用程序安全设置 256
12.7.1 了解应用程序和系统安全性 256
12.7.2 角色、主体以及主体到角色的映射 257
12.7.3 领域设置 259
12.7.4 设置server.policy文件 260
12.8 小结 261
第13章 国际化和本地化 262
13.1 Java国际化/本地化基本概念 262
13.1.1 本地化环境(Locale) 263
13.1.2 字符编码(Character Encoding) 265
13.1.3 资源包(Resource Bundle) 267
13.2 Java EE应用开发中的国际化 270
13.2.1 Servlet的国际化 270
13.2.2 JSTL中的国际化标记 271
13.2.3 JSF应用的国际化 276
13.3 GlassFish的国际化特性 282
13.4 小结 282
第14章 Java EE应用性能调优 283
14.1 Java EE应用的性能调优简介 284
14.1.1 什么是Java应用的性能 284
14.1.2 Java EE应用性能调优的复杂程度 286
14.1.3 Java EE应用性能调优的方法论 287
14.2 被动的性能调优 288
14.2.1 硬件层和操作系统层次的监控 288
14.2.2 Java虚拟机层次的监控 294
14.2.3 应用服务器层次的监控 298
14.2.4 应用代码的跟踪 298
14.2.5 被动性能调优的案例分析 299
14.3 主动的性能调优 302
14.3.1 应用层的性能调优 302
14.3.2 应用服务器的性能调优 305
14.3.3 Java虚拟机的性能调优 308
14.3.4 操作系统的性能调优 308
14.4 小结 309
开源篇 313
第15章 JMX在GlassFish中的应用 313
15.1 JMX概述 313
15.1.1 JMX的背景 313
15.1.2 选择JMX的理由 314
15.2 JMX的基本概念 314
15.2.1 JMX的3层架构 314
15.2.2 MBean组件 315
15.2.3 MBean服务器 317
15.2.4 JMX消息模型 319
15.2.5 代理服务(Agent Service) 320
15.2.6 连接器(Connector) 320
15.3 JMX整合实例 321
15.3.1 运用JMX技术管理Java样例ArcTest 321
15.3.2 MBean的实现 322
15.3.3 JMX代理的实现 324
15.3.4 运行实例 325
15.3.5 分布式管理应用的实现 326
15.4 Java EE中的JMX应用 328
15.4.1 Java EE管理模型(Management Model) 328
15.4.2 可管理对象 329
15.4.3 监控接口 329
15.4.4 MEJB 330
15.5 GlassFish对JMX的应用 331
15.5.1 GlassFish中的MBean 331
15.5.2 AMX概述 332
15.5.3 动态客户代理(Dynamic Client Proxy) 333
15.5.4 AMX对JMX的扩展 337
15.5.5 AMX实现 338
15.6 开发User MBean 343
15.6.1 User MBean的生命周期 343
15.6.2 GlassFish中MBean相关的操作 343
15.7 小结 345
第16章 自管理和CallFlow 346
16.1 自管理 346
16.1.1 自管理概述 346
16.1.2 管理规则与JMX消息机制 347
16.1.3 管理规则的定义和实例 347
16.1.4 自管理的事件(Event) 349
16.1.5 创建管理规则 350
16.1.6 自管理的实现代码 351
16.2 自管理应用开发实例 351
16.2.1 创建自管理应用 353
16.2.2 运行所创建的自管理应用 359
16.3 CallFlow(调用流程监控) 363
16.3.1 CallFlow功能概述 363
16.3.2 CallFlow架构 364
16.3.3 CallFlow应用 365
16.3.4 CallFlow开发 368
16.4 小结 371
第17章 高性能的HTTP引擎——Grizzly 372
17.1 NIO简介 372
17.1.1 NIO的基本概念 373
17.1.2 NIO之前的Server程序的架构 375
17.1.3 使用NIO来提高系统扩展性 376
17.1.4 使用NIO来制作HTTP引擎的最大挑战 378
17.2 Grizzly简介 379
17.2.1 Grizzly的基本架构 379
17.2.2 源码阅读指南 381
17.3 Grizzly的特点 383
17.3.1 如何处理慢速的连接 383
17.3.2 如何避免内存泄漏 387
17.3.3 使用多个Selector 393
17.3.4 Grizzly其他的特点 396
17.3.5 Grizzly的性能 398
17.4 小结 398
第18章 异步请求处理和服务器推送技术 399
18.1 异步请求处理 399
18.1.1 Grizzly异步请求处理的实现 401
18.1.2 “新邮件提醒”异步请求处理 407
18.1.3 Grizzly异步请求处理的特点 411
18.2 服务器推送技术 411
18.2.1 Comet实现的分析 413
18.2.2 Comet实例讲解——“聊天室”应用 416
18.3 小结 419
第19章 EJB容器实现 420
19.1 GlassFish EJB容器 420
19.1.1 EJB远程视图 420
19.1.2 EJB容器的实现 422
19.1.3 EJB远程方法调用过程分析 425
19.2 GlassFish EJB 3.0实现 429
19.2.1 EJB 3.0中Home接口和Component接口的实现 429
19.2.2 EJB 3.0远程对象的查找过程分析 432
19.2.3 EJB 3.0业务方法的调用过程分析 434
19.2.4 依赖注入的实现 434
19.2.5 回调和拦截器实现的分析 436
19.3 小结 438
第20章 内部持久性实现和Java DB 439
20.1 基于文件的持久性实现 439
20.1.1 域配置文件domain.xml 439
20.1.2 读写domain.xml 440
20.2 基于数据库的持久性实现 441
20.2.1 Java DB的来源 441
20.2.2 Java DB的特点 442
20.2.3 使用Java DB 443
20.2.4 Java DB工具 444
20.2.5 GlassFish管理控制台有关Java DB的配置 445
20.2.6 GlassFish中利用Java DB的持久性实现 448
20.2.7 Java DB的应用 451
20.3 小结 457
结束语 459
附录 参考资源 461
参考文献 462