《JAVA EE 5权威指南 原书第3版》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)ERIC JENDROCK JENNIFER BALL DEBBIE CARSON LAN EVANS SCOTT FORDIN KIM HAASE著;廖铮等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2008
  • ISBN:9787111228868
  • 页数:748 页
图书介绍:本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材。

第1章 概述 1

1.1 Java EE应用模型 1

1.2 分布式多层应用 2

1.2.1 安全性 2

1.2.2 Java EE组件 3

1.2.3 Java EE客户端 3

1.2.4 Web组件 4

1.2.5 业务组件 5

1.2.6 企业信息系统层 5

1.3 Java EE容器 6

1.3.1 容器服务 6

1.3.2 容器类型 6

1.4 Web服务支持 7

1.4.1 XML 7

1.4.2 SOAP传输协议 8

1.4.3 WSDL标准格式 8

1.4.4 UDDI和ebXML标准格式 8

1.5 Java EE应用组装和部署 8

1.6 打包应用 9

1.7 制定角色 10

1.7.1 Java EE产品供应者 10

1.7.2 工具供应者 10

1.7.3 应用组件供应者 10

1.7.4 应用组装者 11

1.7.5 应用部署者和管理员 11

1.8 Java EE 5 API 11

1.8.1 企业JavaBeans技术 11

1.8.2 Java servlet技术 12

1.8.3 JavaServer页面技术 12

1.8.4 JavaServer页面标准标签库 12

1.8.5 JavaServer Faces 13

1.8.6 Java消息服务API 13

1.8.7 Java事务API 13

1.8.8 JavaMail API 13

1.8.9 JavaBeans激活框架 13

1.8.10 针对XML处理的Java API 14

1.8.11 针对XML Web服务的Java API(JAX-WS) 14

1.8.12 针对XML绑定的Java体系结构(JAXB) 14

1.8.13 带附件API的Java SOAP 14

1.8.14 针对XML注册表的JavaAPI 14

1.8.15 J2EE连接器体系结构 15

1.8.16 Java数据库连接API 15

1.8.17 Java持久化API 15

1.8.18 Java命名和目录接口 15

1.8.19 Java验证和授权服务 16

1.8.20 简化的系统集成 16

1.9 Sun Java系统应用服务器平台第9版 16

1.9.1 工具 16

1.9.2 启动和停止应用服务器 17

1.9.3 启动Admin Console 18

1.9.4 启动和停止Java DB数据库服务器 18

1.9.5 调试Java EE应用 18

第一部分 网页层 21

第2章 Web应用起步 21

2.1 Web应用生命周期 22

2.2 Web模块 24

2.2.1 打包Web模块 25

2.2.2 部署WAR文件 25

2.2.3 测试已部署的Web模块 27

2.2.4 列出已部署的Web模块 27

2.2.5 更新Web模块 27

2.2.6 取消部署Web模块 29

2.3 配置Web应用 29

2.3.1 将URL映射到Web组件 29

2.3.2 声明欢迎文件 31

2.3.3 设置初始化参数 31

2.3.4 将错误映射到错误屏幕 32

2.3.5 声明资源引用 33

2.4 Duke's Bookstore示例 35

2.5 从Web应用访问数据库 35

2.5.1 填充示例数据库 35

2.5.2 在应用服务器中创建数据源 36

2.6 更多内容 36

第3章 Java Servlet技术 37

3.1 什么是Servlet 37

3.2 示例Servlets 37

3.3 Servlet生命周期 39

3.3.1 处理Servlet生命周期事件 39

3.3.2 处理错误 41

3.4 共享信息 41

3.4.1 使用作用域对象 41

3.4.2 控制对共享资源的并发访问 42

3.4.3 访问数据库 43

3.5 初始化Servlet 44

3.6 编写服务方法 44

3.6.1 获取来自请求的信息 44

3.6.2 构建响应 45

3.7 过滤请求和响应 48

3.7.1 编写过滤器 48

3.7.2 编写自定义请求和响应 49

3.7.3 指定过滤器映射 50

3.8 调用其他Web资源 52

3.8.1 在响应中包括其他资源 53

3.8.2 将控制转移到其他的Web资源 54

3.9 访问Web上下文 54

3.10 维护客户端状态 55

3.10.1 访问会话 55

3.10.2 将对象与会话相关联 55

3.10.3 会话管理 56

3.10.4 会话追踪 56

3.11 终结Servlet 57

3.11.1 追踪服务请求 57

3.11.2 通知方法关闭 58

3.11.3 创建友好的长时间运行的方法 59

3.12 更多内容 59

第4章 JSP技术 60

4.1 什么是JSP页面 60

4.2 JSP页面示例 62

4.3 JSP页面的生命周期 66

4.3.1 转换和编译 66

4.3.2 执行 67

4.4 创建静态内容 68

4.5 创建动态内容 68

4.6 统一表达式语言 69

4.6.1 立即求值和延迟求值语法 70

4.6.2 值表达式和方法表达式 71

4.6.3 定义标签属性类型 76

4.6.4 去活表达式求值 76

4.6.5 直接量表达式 77

4.6.6 解析表达式 78

4.6.7 隐式对象 79

4.6.8 运算符 80

4.6.9 保留字 81

4.6.10 示例 81

4.6.11 函数 82

4.7 JavaBeans组件 83

4.7.1 JavaBeans组件设计约定 83

4.7.2 创建和使用JavaBeans组件 84

4.7.3 设置JavaBeans组件特性 84

4.7.4 获取JavaBeans组件特性 86

4.8 使用自定义标签 86

4.8.1 声明标签库 87

4.8.2 引入标签库实现 88

4.9 在JSP页面中复用内容 88

4.10 将控制转移到其他Web组件 89

4.11 加入小应用程序 89

4.12 为一组JSP页面设置特性 91

4.13 更多内容 94

第5章 JSP文档 95

5.1 JSP文档示例 95

5.2 创建JSP文档 97

5.2.1 声明标签库 98

5.2.2 在JSP文档中加入指令 99

5.2.3 创建静态和动态内容 100

5.2.4 使用jsp:root元素 102

5.2.5 使用jsp:output元素 103

5.3 向容器标识JSP文档 105

第6章 JavaServer Pages标准标签库 106

6.1 JSP页面示例 106

6.2 使用JSTL 107

6.3 核心标签库 108

6.3.1 变量支持标签 109

6.3.2 流程控制标签 110

6.3.3 URL标签 112

6.3.4 杂项标签 113

6.4 XML标签库 113

6.4.1 核心标签 114

6.4.2 流程控制标签 115

6.4.3 转换标签 115

6.5 国际化标签库 116

6.5.1 设置地区 116

6.5.2 消息标签 116

6.5.3 Formatting标签 117

6.6 SQL标签库 117

6.7 函数 120

6.8 更多内容 121

第7章 JSP页面中的自定义标签 122

7.1 什么是自定义标签 122

7.2 JSP页面示例 122

7.3 标签类型 124

7.3.1 带属性的标签 124

7.3.2 带有正文的标签 126

7.3.3 定义变量的标签 127

7.3.4 标签之间的通信 127

7.4 使用标签文件来封装可重用内容 127

7.4.1 标签文件位置 129

7.4.2 标签文件指令 129

7.4.3 对传递给标签文件的片断进行求值 134

7.4.4 示例 134

7.5 标签库描述符 137

7.5.1 顶级的标签库描述符元素 137

7.5.2 声明标签文件 138

7.5.3 声明标签处理器 139

7.5.4 针对标签处理器声明标签属性 140

7.5.5 针对标签处理器声明标签变量 141

7.6 编写简单标签处理器 142

7.6.1 在Web应用中加入标签处理器 143

7.6.2 简单标签处理器如何调用 143

7.6.3 基本标签的标签处理器 143

7.6.4 带属性标签的标签处理器 143

7.6.5 带正文标签的标签处理器 145

7.6.6 定义变量的标签的标签处理器 146

7.6.7 标签协同操作 148

7.6.8 示例 149

第8章 JSP页面中的脚本编程 155

8.1 JSP页面示例 155

8.2 使用脚本编程 156

8.3 禁用脚本编程 156

8.4 声明 156

8.5 Scriptlet 157

8.6 表达式 158

8.7 编写可接受脚本编程元素的标签 158

8.7.1 TLD元素 158

8.7.2 标签处理器 158

8.7.3 带正文的标签 160

8.7.4 协同操作 161

8.7.5 定义变量的标签 162

第9章 JavaServer Faces技术 163

9.1 JavaServer Faces技术的好处 164

9.2 什么是JavaServer Faces应用 164

9.3 一个简单的JavaServer Faces应用 164

9.3.1 开发过程中的步骤 165

9.3.2 映射FacesServlet实例 166

9.3.3 创建页面 166

9.3.4 定义页面导航 170

9.3.5 配置错误消息 171

9.3.6 开发Bean 171

9.3.7 添加托管Bean声明 172

9.4 用户界面组件模型 173

9.4.1 用户界面组件类 173

9.4.2 组件呈现模型 174

9.4.3 转换模型 176

9.4.4 事件和监听器模型 177

9.4.5 验证模型 178

9.5 导航模型 178

9.6 后台Bean 180

9.7 JavaServer Faces页面的生命周期 183

9.8 更多内容 186

第10章 在JSP页面中使用JavaServer Faces技术 187

10.1 JavaServer Faces应用示例 187

10.2 设置页面 189

10.3 使用核心标签 191

10.4 使用HTML组件标签将UI组件添加到页面 192

10.4.1 UI组件标签属性 192

10.4.2 加入窗体组件 194

10.4.3 使用文本组件 194

10.4.4 使用命令组件来执行活动和导航 198

10.4.5 使用数据绑定表组件 199

10.4.6 使用graphicImage标签来加入图形和图像 201

10.4.7 使用UIPanel组件来布局组件 202

10.4.8 呈现选择一个值的组件 203

10.4.9 呈现选择多个值的组件 205

10.4.10 UISelectItem、UISelectItems和UISelectItemGroup组件 206

10.4.11 使用message和messages标签显示错误消息 208

10.5 使用本地化数据 208

10.5.1 加载资源包 209

10.5.2 引用本地化静态数据 209

10.5.3 引用错误消息 210

10.6 使用标准转换器 211

10.6.1 转换组件值 212

10.6.2 使用DateTimeConverter 212

10.6.3 使用NumberConverter 214

10.7 在组件上注册监听器 214

10.7.1 在组件上注册值变化监听器 215

10.7.2 在组件上注册活动组件 215

10.8 使用标准验证器 216

10.8.1 验证组件值 217

10.8.2 使用LongRangeValidator 217

10.9 绑定组件值和实例到外部数据源 218

10.9.1 绑定组件值到特性 219

10.9.2 绑定组件值到隐式对象 220

10.9.3 绑定组件实例到Bean特性 220

10.10 绑定转换器、监听器和验证器到后台Bean特性 221

10.11 引用后台Bean方法 222

10.11.1 引用执行导航的方法 222

10.11.2 引用处理活动事件的方法 223

10.11.3 引用执行验证的方法 223

10.11.4 引用处理值变化事件的方法 223

10.12 使用自定义对象 224

10.12.1 使用自定义转换器 224

10.12.2 使用自定义验证器 225

10.12.3 使用自定义组件 226

第11章 使用JavaServer Faces技术进行开发 228

11.1 编写Bean特性 228

11.1.1 编写绑定到组件值的特性 229

11.1.2 编写绑定到组件实例的特性 234

11.1.3 编写绑定到转换器、监听器或验证器的特性 235

11.2 执行本地化 235

11.2.1 创建资源包 235

11.2.2 本地化动态数据 236

11.2.3 本地化消息 236

11.3 创建自定义转换器 237

11.4 实现事件监听器 239

11.4.1 实现值变化监听器 239

11.4.2 实现活动监听器 240

11.5 创建自定义验证器 241

11.5.1 实现Validator接口 242

11.5.2 创建自定义标签 244

11.6 编写后台Bean方法 245

11.6.1 编写处理导航的方法 246

11.6.2 编写处理活动事件的方法 247

11.6.3 编写可执行验证的方法 247

11.6.4 编写处理值变化事件的方法 248

第12章 创建自定义UI组件 249

12.1 确定是否需要自定义组件或呈现器 249

12.1.1 何时使用自定义组件 249

12.1.2 何时使用自定义呈现器 250

12.1.3 组件、呈现器和标签组合 251

12.2 理解图像映射示例 251

12.2.1 为什么使用JavaServer Faces技术来实现图像映射 251

12.2.2 理解所呈现的HTML 252

12.2.3 理解JSP页面 252

12.2.4 配置模型数据 253

12.2.5 应用类总结 254

12.3 创建自定义组件的步骤 255

12.4 创建自定义组件类 256

12.4.1 指定组件家族 257

12.4.2 执行编码 258

12.4.3 执行解码 259

12.4.4 启用组件特性来接受表达式 260

12.4.5 保存和恢复状态 260

12.5 将呈现操作委托给呈现器 261

12.5.1 创建呈现器类 261

12.5.2 确定呈现器类型 263

12.6 处理针对自定义组件的事件 263

12.7 创建组件标签处理器 264

12.7.1 获取组件类型 264

12.7.2 设置组件特性值 264

12.7.3 提供呈现器类型 266

12.7.4 释放资源 266

12.8 在标签库描述符中定义自定义组件标签 267

第13章 配置JavaServer Faces应用 269

13.1 应用配置资源文件 269

13.2 配置Bean 270

13.2.1 使用managed-bean元素 270

13.2.2 使用managed-property元素初始化特性 272

13.2.3 初始化Map和List 276

13.3 注册自定义错误消息 276

13.4 注册自定义本地化静态文本 277

13.5 注册自定义验证器 278

13.6 注册自定义转换器 278

13.7 配置导航规则 279

13.8 使用呈现工具箱注册自定义呈现器 281

13.9 注册自定义组件 282

13.10 JavaServer Faces应用的基本需求 283

13.10.1 使用部署描述符来配置应用 284

13.10.2 加入所需要的JAR文件 289

13.10.3 加入类、页面和其他资源 289

第14章 国际化和本地化Web应用 290

14.1 Java平台本地化类 290

14.2 提供本地化消息和标记 290

14.2.1 确定区域设置 291

14.2.2 设置资源包 291

14.2.3 获取本地化消息 292

14.3 日期和数字格式化 293

14.4 字符集和编码 293

14.4.1 字符集 293

14.4.2 字符编码 294

14.5 更多内容 296

第二部分 Web服务第15章 使用JAX-WS来创建Web服务 297

15.1 设置端口 297

15.2 使用JAX-WS创建简单的Web服务和客户端 297

15.2.1 JAX-WS湍点的需求 298

15.2.2 编写服务端点实现类 299

15.2.3 创建、打包和部署服务 299

15.2.4 在不使用客户端的情况下测试服务 300

15.2.5 一个简单的JAX-WS客户端 300

15.3 JAX-WS所支持的类型 302

15.4 Web服务互操作性和JAX-WS 302

15.5 更多内容 302

第16章 XML模式和Java类之间的绑定 304

16.1 JAXB体系结构 304

16.1.1 体系结构概述 304

16.1.2 JAXB绑定过程 305

16.1.3 有关反编排的更多内容 306

16.1.4 有关编排的更多内容 306

16.1.5 有关验证的更多内容 306

16.2 表示XML内容 306

16.3 绑定XML模式 306

16.3.1 简单类型定义 306

16.3.2 默认数据类型绑定 307

16.4 自定义JAXB绑定 308

16.4.1 模式到Java 308

16.4.2 Java到模式 308

16.5 示例 312

16.5.1 JAXB编译器选项 314

16.5.2 JAXB模式生成器选项 315

16.5.3 关于模式到Java绑定 315

16.5.4 模式派生的JAXB类 318

16.6 Basic示例 320

16.6.1 Modify Marshal示例 320

16.6.2 Unmarshal Validate示例 321

16.7 自定义JAXB绑定 322

16.7.1 进行自定义的原因 322

16.7.2 自定义概述 323

16.7.3 Customize Inline示例 330

16.7.4 Datatype Converter示例 334

16.7.5 绑定声明文件 335

16.7.6 External Customize示例 337

16.8 Java-to-Schema示例 338

16.8.1 j2s-create-marshal示例 338

16.8.2 j2s-xmlAccessorOrder示例 338

16.8.3 j2s-xmlAdapter-field示例 340

16.8.4 j2s-xmlAttribute-field示例 343

16.8.5 j2s-xmlRootElement示例 344

16.8.6 j2s-xmlSchemaType-class示例 344

16.8.7 j2s-xmlType示例 345

16.9 更多内容 346

第17章 StAX 347

17.1 StAX诞生的原因 347

17.1.1 流和DOM 347

17.1.2 拉解析和推解析 348

17.1.3 StAX用例 348

17.1.4 比较StAX和其他JAXP API 349

17.2 StAX API 349

17.2.1 光标API 349

17.2.2 迭代器API 350

17.2.3 在光标API和迭代器API之间进行选择 353

17.3 使用StAX 354

17.3.1 StAX工厂类 354

17.3.2 资源、命名空间和错误 355

17.3.3 读取XML流 355

17.3.4 编写XML流 357

17.4 Sun的流式XML解析器实现 359

17.4.1 报告CDATA事件 359

17.4.2 流式XML解析器工厂实现 359

17.5 示例代码 360

17.5.1 示例代码组织 360

17.5.2 示例XML文档 361

17.5.3 Cursor示例 361

17.5.4 Cursor-to-Event示例 363

17.5.5 Event示例 364

17.5.6 Filter示例 366

17.5.7 Read-and-Write示例 368

17.5.8 Writer示例 370

17.6 更多内容 371

第18章 SAAJ 373

18.1 SAAJ概述 373

18.1.1 消息 373

18.1.2 连接 375

18.2 教程 376

18.2.1 创建和发送简单消息 376

18.2.2 添加内容到标题 382

18.2.3 添加内容到SOAPPart对象 383

18.2.4 添加文档到SOAP正文 383

18.2.5 使用SAAJ或DOM API来操作消息内容 384

18.2.6 添加附件 384

18.2.7 添加属性 386

18.2.8 使用SOAP Fault 390

18.3 代码示例 393

18.3.1 Request.java 393

18.3.2 MyUddiPing.java 394

18.3.3 HeaderExample.java 400

18.3.4 DOMExample.java和DOMSrcExample.java 402

18.3.5 Attachments.java 405

18.3.6 SOAPFaultTest.java 407

18.4 更多内容 409

第19章 JAXR 410

19.1 JAXR概述 410

19.1.1 什么是注册表 410

19.1.2 什么是JAXR 410

19.1.3 JAXR体系结构 411

19.2 实现JAXR客户端 412

19.2.1 建立连接 412

19.2.2 查询注册表 415

19.2.3 管理注册表数据 418

19.2.4 在JAXR客户端中使用分类法 423

19.3 运行客户端示例 427

19.3.1 在编译示例之前 428

19.3.2 编译示例 428

19.3.3 运行示例 429

19.4 在Java EE应用中使用JAXR客户端 435

19.4.1 编写应用客户端:MyAppClient.java 436

19.4.2 编写PubQuery会话Bean 436

19.4.3 编辑特性文件 436

19.4.4 启动应用服务器 436

19.4.5 创建JAXR资源 436

19.4.6 使用NetBeans 5.5创建、部署和运行应用 437

19.4.7 使用Ant创建、部署和运行应用 438

19.5 更多内容 439

第三部分 企业Bean第20章 企业Bean 441

20.1 什么是企业Bean 441

20.1.1 企业Bean的优点 441

20.1.2 何时使用企业Bean 441

20.1.3 企业Bean的类型 442

20.2 什么是会话Bean 442

20.2.1 状态管理模式 442

20.2.2 何时使用会话Bean 443

20.3 什么是消息驱动Bean 443

20.3.1 消息驱动Bean和会话Bean的区别 443

20.3.2 何时使用消息驱动Bean 444

20.4 使用接口定义客户端访问 444

20.4.1 远程客户端 445

20.4.2 本地客户端 445

20.4.3 决定远程访问或本地访问 446

20.4.4 Web服务客户端 446

20.4.5 方法参数和访问 447

20.5 企业Bean的内容 447

20.6 企业Bean的命名约定 448

20.7 企业Bean的生命周期 448

20.7.1 状态化会话Bean的生命周期 448

20.7.2 无状态会话Bean的生命周期 449

20.7.3 消息驱动Bean的生命周期 449

20.8 更多内容 449

第21章 企业Bean起步 450

21.1 创建企业Bean 450

21.1.1 编写企业Bean 450

21.1.2 编译和打包converter示例 451

21.2 创建应用客户端 452

21.2.1 编写应用客户端 452

21.2.2 编译应用客户端 453

21.3 创建Web客户端 453

21.3.1 编写Web客户端 453

21.3.2 编译Web客户端 455

21.4 部署Java EE应用 455

21.4.1 使用NetBeans 5.5部署converter示例 455

21.4.2 使用Ant部署converter示例 455

21.5 运行应用客户端 455

21.5.1 使用NetBeans 5.5运行应用客户端 455

21.5.2 使用Ant运行应用客户端 455

21.6 运行Web客户端 456

21.7 修改Java EE应用 456

第22章 会话Bean示例 458

22.1 cart示例 458

22.1.1 会话Bean类 459

22.1.2 remove方法 461

22.1.3 助手类 461

22.1.4 创建、打包、部署和运行cart示例 462

22.1.5 取消部署cart示例 463

22.2 一个Web服务示例:helloservice 463

22.2.1 Web服务端点实现类 463

22.2.2 无状态会话Bean实现类 464

22.2.3 创建、打包、部署和测试helloservice示例 464

22.3 使用定时器服务 465

22.3.1 Timeout方法 465

22.3.2 创建定时器 466

22.3.3 取消和保存定时器 466

22.3.4 获取定时器信息 466

22.3.5 事务和定时器 467

22.3.6 timersession示例 467

22.3.7 创建、打包、部署和运行timersession示例 468

22.4 处理异常 469

第23章 消息驱动Bean示例 470

23.1 示例应用概述 470

23.2 应用客户端 470

23.3 消息驱动Bean类 471

23.4 打包、部署和运行SimpleMessage示例 472

23.4.1 创建被管理对象 472

23.4.2 使用NetBeans 5.5创建、部署和运行应用 473

23.4.3 使用Ant创建、部署和运行应用 473

23.4.4 删除被管理的对象 474

23.5 为消息驱动Bean创建部署描述符 474

第四部分 持久化 475

第24章 Java持久化API介绍 475

24.1 实体 475

24.1.1 实体类的要求 475

24.1.2 实体类中的持久性字段和特性 475

24.1.3 实体中的主键 477

24.1.4 实体关系中的多样性 478

24.1.5 实体关系中的方向 478

24.1.6 实体继承性 479

24.2 管理实体 482

24.2.1 持久化上下文 482

24.2.2 EntityManager 483

24.2.3 持久化单元 486

第25章 Web层中的持久化 488

25.1 从Web应用访问数据库 488

25.1.1 定义持久化单元 489

25.1.2 创建实体类 489

25.1.3 获取对实体管理器的访问 490

25.1.4 从数据库访问数据 491

25.1.5 更新数据库中的数据 492

第26章 EJB层中的持久化 494

26.1 order应用 494

26.1.1 order应用中的实体关系 494

26.1.2 order应用中的主键 496

26.1.3 映射到多个表的实体 498

26.1.4 order应用中的级联操作 498

26.1.5 order应用中的BLOB和CLOB数据库类型 499

26.1.6 order应用中的临时类型 499

26.1.7 管理order应用的实体 500

26.1.8 创建和运行order应用 501

26.2 roster应用 504

26.2.1 roster应用中的关系 504

26.2.2 roster应用中的实体继承性 505

26.2.3 roster应用中的自动表生成 506

26.2.4 创建和运行roster应用 507

第27章 Java持久化查询语言 509

27.1 术语 509

27.2 简化语法 509

27.2.1 Select语句 509

27.2.2 Update和Delete语句 510

27.3 示例查询 510

27.3.1 简单查询 510

27.3.2 导航到相关实体的查询 511

27.3.3 使用其他条件表达式的查询 512

27.3.4 批量更新和删除 513

27.4 完整语法 514

27.4.1 BNF符号 514

27.4.2 Java持久化查询语言的BNF语法 514

27.4.3 FROM子句 518

27.4.4 Path表达式 520

27.4.5 WHERE子句 521

27.4.6 SELECT子句 526

27.4.7 ORDER BY子句 528

27.4.8 GROUP BY子句 528

第五部分 服务 529

第28章 Java EE中的安全性介绍 529

28.1 概述 529

28.1.1 一个简单示例 530

28.1.2 安全性功能 531

28.1.3 应用安全性的特性 532

28.2 安全性实现机制 532

28.2.1 Java SE安全性实现机制 533

28.2.2 Java EE安全性实现机制 533

28.3 保护容器 535

28.3.1 使用部署描述符来用于声明式安全性 535

28.3.2 使用注释 536

28.3.3 使用编程式安全性 536

28.4 保护应用服务器 537

28.5 使用领域、用户、组和角色 537

28.5.1 什么是领域、用户、组和角色 538

28.5.2 管理应用服务器上的用户和组 540

28.5.3 设置安全性角色 541

28.5.4 映射角色到用户和组 542

28.6 使用SSL建立安全连接 542

28.6.1 安装和配置SSL支持 543

28.6.2 在应用部署描述符文件中指定一个安全连接 543

28.6.3 核实SSL支持 544

28.6.4 使用数字证书 544

28.6.5 在SSL上启用双向认证 548

28.7 更多内容 550

第29章 保护Java EE应用 551

29.1 保护企业Bean 551

29.1.1 访问企业Bean调用者的安全性上下文 552

29.1.2 声明从企业Bean代码中所引用的安全性角色名 553

29.1.3 定义企业Bean的安全性视图 555

29.1.4 使用企业Bean安全性注释 563

29.1.5 使用企业Bean安全性部署描述符 563

29.1.6 配置IOR安全性 564

29.1.7 部署安全的企业Bean 566

29.2 企业Bean示例应用 567

29.2.1 示例:保护企业Bean 567

29.2.2 示例:使用isCallerInRole和getCallerPrincipal方法 571

29.2.3 讨论:保护Duke's Bank示例 575

29.3 保护应用客户端 575

29.3.1 使用登录模块 576

29.3.2 使用可编程式登录 576

29.4 保护EIS应用 576

29.4.1 容器托管登录 577

29.4.2 组件托管登录 577

29.4.3 配置资源适配器安全性 577

29.4.4 映射应用主体到ESI主体 578

29.5 在应用服务器中的示例应用 579

29.6 更多内容 579

第30章 保护Web应用 581

30.1 概述 581

30.2 使用安全性角色 582

30.2.1 声明安全性角色 582

30.2.2 映射安全性角色到应用服务器组 584

30.3 以编程方式检查调用者的标识 585

30.4 针对Web应用定义安全性需求 587

30.4.1 使用注释声明安全性需求 588

30.4.2 在部署描述符中声明安全性需求 589

30.4.3 指定安全连接 594

30.4.4 指定认证机制 595

30.5 示例:保护Web应用 600

30.5.1 示例:通过JSP页面使用基于窗体的认证 601

30.5.2 示例:通过Servlet使用基本认证 608

30.5.3 示例:通过JAX-WS使用基本认证 613

30.6 更多内容 618

第31章 Java消息服务API 619

31.1 概述 619

31.1.1 什么是消息传递 619

31.1.2 什么是JMS API 619

31.1.3 何时使用JMS API 620

31.1.4 JMS API如何与Java EE平台一起工作 621

31.2 基本的JMS API概念 621

31.2.1 JMS API体系结构 621

31.2.2 消息传递域 622

31.2.3 消息使用 624

31.3 JMS API编程模型 624

31.3.1 被管对象 625

31.3.2 连接 626

31.3.3 会话 626

31.3.4 消息生成者 627

31.3.5 消息使用者 627

31.3.6 消息 629

31.3.7 队列浏览器 630

31.3.8 异常处理 631

31.4 编写简单的JMS客户端应用 631

31.4.1 一个简单的同步消息接收示例 632

31.4.2 一个简单的异步消息使用示例 638

31.4.3 一个浏览队列中消息的简单示例 642

31.4.4 在多个系统上运行JMS客户端程序 646

31.5 创建强健的JMS应用 649

31.5.1 使用基本可靠性机制 649

31.5.2 使用高级可靠性机制 654

31.6 在Java EE应用中使用JMS API 662

31.6.1 在Java EE组件中使用@Resource注释 663

31.6.2 使用会话Bean生成和同步接收消息 663

31.6.3 使用消息驱动Bean 664

31.6.4 管理分布式事务 665

31.6.5 通过应用客户端和Web组件使用JMS API 666

31.7 更多内容 667

第32章 使用JMS API的Java EE示例 668

32.1 通过会话Bean使用JMS API的Java EE应用 668

32.1.1 编写应用组件 669

32.1.2 创建针对应用的资源 670

32.1.3 使用NetBeans 5.5创建、部署和运行应用 671

32.1.4 使用Ant创建、部署和运行应用 671

32.2 一个通过实体使用JMS API的Java EE应用 672

32.2.1 人力资源应用概述 673

32.2.2 编写应用组件 673

32.2.3 创建针对应用的资源 675

32.2.4 使用NetBeans 5.5创建、部署和运行应用 676

32.2.5 使用Ant创建、部署和运行应用 677

32.3 一个使用来自远程服务器消息的应用示例 679

32.3.1 模块概述 679

32.3.2 编写模块组件 680

32.3.3 创建针对模块的资源 680

32.3.4 使用两个应用服务器 680

32.3.5 使用NetBeans 5.5创建、部署和运行模块 681

32.3.6 使用Ant创建、部署和运行模块 682

32.4 一个在两个服务器上部署消息驱动Bean的应用示例 683

32.4.1 模块概述 684

32.4.2 编写模块组件 685

32.4.3 创建针对模块的资源 685

32.4.4 使用两个应用服务器 686

32.4.5 使用NetBeans 5.5创建、部署和运行模块 686

32.4.6 使用Ant创建、部署和运行模块 688

第33章 事务 691

33.1 什么是事务 691

33.2 容器托管事务 691

33.2.1 事务属性 692

33.2.2 回退容器托管事务 694

33.2.3 同步会话Bean的实例变量 694

33.2.4 容器托管事务中不允许的方法 695

33.3 Bean托管事务 695

33.3.1 JTA事务 695

33.3.2 在不提交的情况下返回 696

33.3.3 Bean托管事务中不允许的方法 696

33.4 事务超时 696

33.5 更新多个数据库 696

33.6 Web组件中的事务 697

第34章 资源连接 698

34.1 资源和JNDI命名 698

34.2 DataSource对象和连接池 699

34.3 资源注入 699

34.3.1 基于字段的注入 700

34.3.2 基于方法的注入 701

34.3.3 基于类的注入 701

34.4 confirmer示例应用 702

34.5 更多内容 704

第35章 连接器体系结构 705

35.1 关于资源适配器 705

35.2 资源适配器契约 706

35.2.1 管理契约 706

35.2.2 出站契约 707

35.2.3 入站契约 707

35.3 公共客户端接口 708

35.4 更多内容 709

第六部分 案例研究第36章 Coffee Break应用 711

36.1 公共代码 711

36.2 JAX-WS咖啡供应商服务 711

36.3 SAAJ咖啡供应商服务 713

36.3.1 SAAJ客户端 713

36.3.2 SAAJ服务 718

36.4 Coffee Break服务器 722

36.4.1 JSP页面 723

36.4.2 JavaBeans组件 724

36.4.3 RetailPriceListServlet 725

36.4.4 资源配置 726

36.5 创建、打包、部署和运行应用程序 726

36.5.1 设置端口 726

36.5.2 创建、打包和部署JAX-WS服务 727

36.5.3 创建、打包和部署SAAJ服务 727

36.5.4 创建、打包和部署Coffee Break服务器 728

36.5.5 运行Coffee Break客户端 728

36.5.6 删除Coffee Break应用程序 728

第37章 Duke's Bank应用 730

37.1 企业Bean 730

37.1.1 会话Bean 731

37.1.2 Java Persistence实体 732

37.1.3 助手类 733

37.1.4 数据库表 733

37.1.5 保护企业Bean 734

37.2 应用客户端 734

37.2.1 类和它们的关系 735

37.2.2 BankAdmin类 735

37.3 Web客户端 736

37.3.1 设计策略 737

37.3.2 客户端组件 738

37.3.3 请求处理 739

37.3.4 保护Web客户端资源 741

37.4 创建、打包、部署和运行应用 742

37.4.1 设置服务器 742

37.4.2 使用NetBeans 5.5创建、打包和部署Duke's Bank 743

37.4.3 使用Ant创建、打包和部署Duke's Bank 743

37.4.4 使用NetBeans 5.5运行应用客户端 743

37.4.5 使用Ant运行应用客户端 743

37.4.6 运行Web客户端 744

附录 745

附录A Java编码方案 745

附录B Java EE认证考试的准备 746