21天学通J2EE(第二版)

21天学通J2EE(第二版)
作 者: Martin Bond 周辉
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: J2EE
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《21天学通J2EE(第二版)》作者简介

内容简介

在短短21天的课程里,您能学到成为熟练的J2EE1.4开发人员所需的全部知识和技巧。通过对本书的学习,您将会使用JavaServerPages和Servlet创建JavaWeb站点,利用EnterpriseJavaBeans和Web服务来开发健壮的企业应用程序。立即开始创建企业应用程序。通过学习本书中精心组织的21天课程,您将学会使用J2EE1.4构建分布式系统。每次学习都会向J2EE深入一步。您可以一天学完一章课程,在不到一个月的时间里掌握J2EE的核心概念,进行Web服务开发。检验您对所学知识的掌握程度。每一章最后有很多问题、答案和练习,便于您进一步学习。●把Servlet和JSP结合使用,将Web表示与编程分离开来;●利用JSP表达式语言和JavaServerPages标准标记库;●使用EnterpriseJavaBeans2.1创建可重用组件;●使用JMS和消息驱动Bean实现通信;●在J2EE应用程序中合并Javamail、XML和XSLT;●使用JAX-RPC和SAAJ开发RPC型和消息型J2EEWeb服务。本书从J2EE的基础知识开始,全面介绍了EJB、CMP、JSP、XML、Web服务等相关知识。每天的课程都提供了一些练习,有助于读者巩固所学知识。书中还提供了一个完整的求职代理示例,读者可以结合本书内容,动手操作完成这个示例。本书共分为21课,每天一课,共三周时间可以完成全部内容的学习。第一周的课程讲述了J2EE和EJB的相关知识,内容包括N层开发、J2EE平台和角色、命名和目录服务、EJB简介、会话EJB、实体EJB、CMP和EJBQL等;第二周的课程介绍了异步交互和如何开发基于Web的组件,包括事务处理与持久性、Java消息服务、消息驱动Bean、JavaMail、Servlet、JSP、JSP标记库等;第三周的课程介绍了企业应用的安全性和完整性、XML文档转换、模式、整合外部资源、Web服务等。本书适合于有一定Java编程经验的程序员阅读。通过本书的学习,能将您的Java技能提高到一个新的水平。

图书目录

第一周课程 J2EE与EJB简介

第1天课程 挑战N层开发 2

1.1 单层程序的开发 2

1.2 向二层开发进军 3

1.3 开发三层体系结构 4

1.4 用模块简化复杂性 5

1.5 组件技术 5

1.6 现代的N层体系结构 6

1.7 企业计算模型 6

1.7.1 生命周期 7

1.7.2 持久性 7

1.7.3 命名 7

1.7.4 事务 7

1.7.5 安全性 8

1.8 Java 2企业版(J2EE) 8

1.8.1 组件和容器 8

1.8.2 J2EE标准服务 9

1.8.3 J2EE 1.4的新特性 10

1.8.4 J2EE蓝图 10

1.8.5 J2EE兼容性和Java验证 11

1.9 J2EE的发展前景 11

1.10 小结 11

1.11 问与答 11

1.12 练习 12

第2天课程 J2EE平台和角色 13

2.1 再谈J2EE平台 13

2.2 了解J2EE组件 14

2.3 企业JavaBean 14

2.3.1 会话Bean 15

2.3.2 实体Bean 16

2.3.3 消息驱动Bean 16

2.4 Web应用 16

2.4.1 Servlet 16

2.4.2 JSP 17

2.4.3 Web应用体系结构 17

2.4.4 Web服务 18

2.5 应用客户端 18

2.6 J2EE技术 18

2.6.1 超文本传输协议(HTTP) 19

2.6.2 基于安全套接层的HTTP(HTTPS) 19

2.6.3 Java数据库连接(JDBC) 19

2.6.4 Java事务API(JTA) 19

2.6.5 Java认证和授权服务(JAAS) 19

2.6.6 用于解析XML的Java API(JAXP) 19

2.6.7 用于基于XML的 RPC 的Java API (JAX-RPC) 19

2.6.8 用于XML注册表(JAXR)的Java API 20

2.6.9 带有附件的用于Java的SOAP API(SAAJ) 20

2.6.10 Java命名和目录接口(JNDI) 20

2.6.11 JavaBean激活框架(JAF) 20

2.6.12 JavaMail 20

2.6.13 Java消息服务(JMS) 20

2.6.14 Java接口定义语言(Java IDL) 20

2.6.15 基于IIOP协议的远程方法调用(RMI-IIOP) 20

2.6.16 连接器体系结构 21

2.7 J2EE平台角色 21

2.7.1 J2EE产品供应商 21

2.7.2 应用程序组件供应商 22

2.7.3 应用程序组装者 22

2.7.4 应用程序部署者 22

2.7.5 系统管理员 22

2.7.6 工具供应商 22

2.8 打包和部署J2EE应用程序 23

2.8.1 J2EE应用程序 23

2.8.2 EJB组件 24

2.8.3 Web组件 25

2.8.4 应用程序组件 25

2.8.5 连接器组件 25

2.9 小结 25

2.10 问与答 26

2.11 练习——Sun Microsystems的J2EE SDK 26

2.11.1 下载Sun Microsystems的J2EE SDK 1.4 26

2.11.2 安装Sun Microsystems的J2EE SDK 1.4 27

2.11.3 配置J2EE SDK 1.4开发环境 29

2.11.4 J2EE SDK包含的组件 29

2.11.5 启动J2EE服务器 30

2.11.6 J2EE和PointBase故障排除 33

2.11.7 本书中可选用的软件 34

2.12 练习——学习实例 34

2.12.1 求职代理 34

2.12.2 使用求职代理实例 35

2.12.3 熟能生巧 36

2.12.4 网站上的学习实例目录 37

2.12.5 使用asant编译文件 37

2.12.6 学习实例 38

2.12.7 对学习实例使用deploytool 38

2.12.8 运行独立的Java示例 38

2.12.9 安装学习实例数据库 38

第3天课程 命名和目录服务 42

3.1 命名和目录服务 42

3.1.1 为什么使用命名服务 43

3.1.2 JNDI是什么 43

3.1.3 常见命名服务 43

3.1.4 命名约定 44

3.2 借助J2EE RI来使用JNDI 45

3.2.1 绑定J2EE组件 45

3.2.2 查找J2EE组件 46

3.2.3 其他分布式J2EE组件 49

3.2.4 J2EE Java组件环境 49

3.3 在J2EE外部使用JNDI 50

3.3.1 定义JNDI服务 50

3.3.2 JNDI属性文件 51

3.3.3 应用程序属性 51

3.3.4 硬编码的属性 52

3.3.5 初始环境命名异常 52

3.4 使用JNDI功能 52

3.4.1 绑定和重命名对象 53

3.4.2 更改环境 53

3.4.3 环境参数列表 54

3.4.4 创建和销毁环境参数 56

3.4.5 使用多重名字服务 56

3.4.6 JNDI事件 56

3.5 目录服务 57

3.5.1 使用LDAP 57

3.5.2 使用目录服务 58

3.5.3 搜索目录服务 58

3.6 JNDI安全性 59

3.7 小结 60

3.8 问与答 61

3.9 练习 61

第4天课程 Enterprise Java Bean简介 62

4.1 什么是EJB 62

4.1.1 Bean、客户端、容器和服务器 62

4.1.2 EJB的类型 63

4.1.3 EJB的常见用途 63

4.2 为什么使用EJB 63

4.3 EJB中包括什么 64

4.3.1 业务接口 65

4.3.2 home接口 66

4.3.3 Bean实现 67

4.3.4 部署描述符 70

4.3.5 验证EJB 70

4.4 如何创建EJB 71

4.4.1 对EJB的限制 71

4.4.2 EJB部署描述符 71

4.4.3 EJB-JAR文件 72

4.4.4 EAR文件 73

4.5 如何部署EJB 73

4.6 如何使用EJB 74

4.6.1 发现EJB 75

4.6.2 检索与使用 76

4.6.3 除去EJB 76

4.6.4 运行客户端 77

4.6.5 客户端应用程序 77

4.7 使用J2EE引用实现(RI) 78

4.7.1 配置J2EE RI 78

4.7.2 打开学习实例的EAR文件 78

4.7.3 查看学习实例应用程序 79

4.7.4 验证学习实例应用程序 83

4.7.5 部署学习实例应用程序 85

4.7.6 运行应用程序客户端 85

4.7.7 管理J2EE RI应用程序 86

4.7.8 学习实例asant编译文件 88

4.7.9 学习实例应用程序的故障排除 89

4.8 小结 90

4.9 问与答 90

4.10 练习 91

第5天课程 会话EJB 92

5.1 概述 92

5.2 会话Bean的javax.ejb包 93

5.3 指定一个无状态会话Bean 93

5.4 无状态会话Bean的实现 96

5.4.1 无状态会话bean的生命周期 96

5.4.2 javax.ejb.SessionBean的实现 98

5.4.3 home接口方法的实现 98

5.4.4 远程接口方法的实现 99

5.4.5 异常 100

5.5 配置一个无状态会话Bean 101

5.6 使用J2EE RI deploytool配置会话bean 102

5.6.1 定义新的EJB会话bean 103

5.6.2 定义会话bean 104

5.6.3 定义JNDI名字 106

5.6.4 事务管理 107

5.6.5 环境条目 108

5.6.6 资源引用 109

5.6.7 EJB部署描述符 111

5.7 客户端应用程序 111

5.7.1 设计因素 111

5.7.2 异常处理 112

5.8 用deploytool来配置J2EE RI客户端应用程序 112

5.9 运行Agency学习实例 115

5.10 有状态会话Bean 116

5.10.1 指定有状态会话bean 116

5.10.2 有状态会话Bean的实现 118

5.10.3 配置有状态会话Bean 120

5.11 定时器服务 121

5.12 忠告 122

5.13 小结 122

5.14 问与答 123

5.15 练习 123

第6天课程 实体EJB 126

6.1 概述 126

6.2 实体Bean的javax.ejb包 128

6.3 远程接口与本地接口 129

6.4 BMP实体Bean的生命周期 130

6.5 指定BMP实体Bean 134

6.5.1 本地Home接口 134

6.5.2 本地接口 137

6.6 BMP实体Bean的实现 138

6.6.1 实现javax.ejb.EntityBean 138

6.6.2 实现本地Home接口方法 142

6.6.3 实现本地接口方法 148

6.6.4 生成ID号 149

6.6.5 再谈粒度 150

6.6.6 使用查找方法的注意事项 150

6.6.7 EJB容器性能调试 151

6.6.8 自我封装字段 152

6.7 配置和部署BMP实体Bean 153

6.8 客户端视图 157

6.9 忠告 161

6.10 小结 162

6.11 问与答 162

6.12 练习 163

第7天课程 CMP和EJB查询语言 164

7.1 容器管理的持久性概述 164

7.1.1 N层体系结构和CMP字段 165

7.2 CMP实体Bean的生命周期 167

7.3 容器管理的关联 169

7.3.1 关联类型 169

7.3.2 多重性 169

7.3.3 导航 170

7.3.4 CMR字段 170

7.4 EJB查询语言 171

7.5 选择方法 176

7.6 CMP实体Bean的实现 176

7.6.1 本地接口 176

7.6.2 实现javax.ejb.EntityBean 177

7.7 使用J2EE RI部署CMP实体Bean 180

7.7.1 捕获数据库模式 180

7.7.2 使用deploytool添加一个CMP实体bean 180

7.7.3 定义CMP实体bean的查找方法 184

7.7.4 定义实体bean CMR字段 185

7.7.5 使用J2EE RI映射实体bean CMP字段 189

7.7.6 使用J2EE RI映射实体bean CMR字段 191

7.7.7 使用J2EE RI部署实体bean学习实例 195

7.8 CMP实体bean设计注意事项 196

7.9 忠告 197

7.10 小结 198

7.11 问与答 198

7.12 练习 198

第二周课程 开发J2EE应用程序

第8天课程 事务处理和持久性 202

8.1 事务处理概述 202

8.2 容器管理的事务划分 204

8.3 Bean管理的事务划分 208

8.3.1 动机和限制 208

8.3.2 使用Java 事务API 209

8.3.3 部署BMTD Bean 211

8.3.4 客户端划分事务 212

8.3.5 再谈异常 213

8.4 扩展的有状态会话bean的生命周期 213

8.5 后台事务:事务实质 215

8.5.1 事务管理器、资源管理器和两阶段提交 215

8.5.2 JTA API 216

8.5.3 事务出错后应如何解决 217

8.5.4 JTA与JTS 219

8.6 持久性技术概述 220

8.7 JDBC 221

8.8 SQLj 222

8.8.1 SQLj Part 0 222

8.8.2 SQLj Part 1 224

8.8.3 SQLj Part 2 225

8.9 JDO 225

8.10 小结 227

8.11 问与答 228

8.12 练习 228

第9天课程 Java消息服务 229

9.1 消息 229

9.2 Java消息服务API 230

9.3 JMS API体系结构 231

9.4 借助于J2EE RI使用JMS 233

9.5 点对点消息示例 235

9.5.1 连接到队列 235

9.5.2 JMS消息 236

9.5.3 创建消息 237

9.5.4 发送消息 237

9.5.5 关闭连接 237

9.5.6 发送JMS文本消息示例 237

9.5.7 使用消息 239

9.6 简单同步接收器示例 239

9.6.1 接收JMS文本消息示例 240

9.6.2 异步消息 241

9.7 发布/订阅消息域 244

9.8 发布/订阅消息示例 244

9.8.1 电子公告牌发布程序 244

9.8.2 电子公告牌订阅程序 246

9.8.3 创建持久订阅 247

9.9 JMS的其他特点 249

9.9.1 消息选择器 249

9.9.2 会话确认模式 249

9.9.3 消息持久性 249

9.9.4 事务处理 250

9.9.5 多线程 251

9.10 小结 251

9.11 问与答 251

9.12 练习 252

第10天课程 消息驱动Bean 253

10.1 什么是MDB 253

10.1.1 消息产生器的观点 254

10.1.2 与其他EJB的异同

之处 254

10.2 MDB中的编程接口 254

10.3 MDB的生命周期 254

10.3.1 MDB环境 255

10.3.2 创建MDB 255

10.3.3 就绪方法池 256

10.3.4 删除Bean 256

10.3.5 使用消息 257

10.3.6 处理异常 257

10.3.7 MDB的事务处理 257

10.3.8 消息确认 258

10.3.9 使用MDB 258

10.4 向求职代理学习实例添加MDB 258

10.4.1 编写MessageSender Helper类 259

10.4.2 更新代理和注册会话Bean 260

10.4.3 编写ApplicantMatch MDB 261

10.4.4 使用J2EE RI部署MDB 266

10.4.5 利用J2EE RI添加JMS消息目的地 270

10.4.6 测试ApplicantMatch Bean 272

10.5 小结 273

10.6 问与答 273

10.7 练习 273

第11天课程 JavaMail 275

11.1 Email常识 275

11.1.1 简单邮件传输协议(SMTP) 276

11.1.2 邮局协议(POP3) 277

11.1.3 Internet消息访问协议(IMAP) 277

11.1.4 多用途Internet邮件扩展(MIME) 278

11.2 JavaMail API简介 278

11.3 安装开发环境 278

11.4 发送一封简单email 280

11.4.1 创建一个JavaMail会话 280

11.4.2 创建一个JavaMail消息 281

11.4.3 发送一个JavaMail消息 282

11.4.4 发送HTML Email 284

11.5 发送带附件的Email 286

11.5.1 发送内嵌图像的HTML Email 287

11.5.2 发送带文件附件的Email 290

11.6 检索Email消息 292

11.6.1 检索简单消息 292

11.6.2 删除消息 295

11.6.3 检索Email附件 296

11.6.4 认证用户和安全性 300

11.7 在J2EE组件中使用JavaMail 301

11.8 小结 305

11.9 问与答 306

11.10 练习 306

第12天课程 Servlet 307

12.1 Servlet的用途和使用 307

12.2 HTTP简介 308

12.2.1 HTTP请求结构 309

12.2.2 服务器响应结构 311

12.3 HTML简介 312

12.4 Servlet环境 315

12.5 Servlet类层次 315

12.6 简单的Servlet示例 316

12.7 向Servlet传递参数数据 320

12.7.1 如何访问参数 320

12.7.2 带有参数的Servlet示例 321

12.7.3 使用POST请求 322

12.7.4 Servlet生命周期 323

12.7.5 Servlet上下文 323

12.8 Web应用程序 324

12.8.1 Web应用程序的文件和目录结构 324

12.8.2 Web应用程序的部署描述符 324

12.9 处理错误 326

12.9.1 HTTP错误 326

12.9.2 产生HTTP状态码 327

12.9.3 发送重定向 327

12.9.4 Servlet异常处理 327

12.10 保留客户端信息和状态信息 328

12.10.1 使用会话对象 328

12.10.2 隐藏表单字段 330

12.10.3 Cookie 330

12.10.4 创建一个Cookie 330

12.10.5 检索cookie数据 331

12.10.6 URL重写 331

12.11 Servlet过滤 332

12.11.1 编程过滤器 332

12.11.2 审核过滤器示例 333

12.11.3 部署过滤器 334

12.12 事件监听 336

12.13 Servlet线程 338

12.14 安全性和Servlet沙箱 338

12.15 求职代理学习实例 339

12.15.1 AgencyTable Servlet代码 339

12.15.2 部署AgencyTable Servlet 341

12.16 小结 344

12.17 问与答 345

12.18 练习 345

第13天课程 Java Server Pages 346

13.1 JSP是什么 346

13.1.1 角色分离 347

13.1.2 转换和执行 348

13.2 JSP语法和结构 348

13.2.1 表达式语言元素 349

13.2.2 脚本元素(Scripting Element) 349

13.2.3 JSP注释 350

13.3 第一个JSP示例 350

13.4 JSP生命周期 352

13.4.1 转换错误 353

13.4.2 编译错误 355

13.4.3 Java运行时异常 356

13.4.4 HTML格式错误 356

13.4.5 JSP生命周期方法 357

13.5 JSP指令 357

13.5.1 include指令 357

13.5.2 page指令 358

13.6 访问HTTP Servlet变量 360

13.7 表达式语言(EL) 361

13.7.1 EL变量 361

13.7.2 隐含对象 361

13.7.3 EL操作符 362

13.8 用JavaBean简化JSP网页 363

13.8.1 什么是JavaBean 363

13.8.2 定义JavaBean 363

13.8.3 设置Bean属性 364

13.8.4 初始化Bean 365

13.8.5 取得Bean属性 365

13.8.6 在求职代理学习实例中使用Bean 365

13.9 向求职代理学习实例中添加Web接口 368

13.9.1 结构和导航 368

13.9.2 外观 370

13.9.3 错误页面的定义 376

13.9.4 部署JSP学习实例 378

13.10 Web应用程序体系结构 381

13.11 小结 382

13.12 问与答 382

13.13 练习 383

第14天课程 JSP标记库 384

14.1 标记库扮演的角色 384

14.2 JSP标准标记库(JSTL) 385

14.2.1 JSTL核心库 385

14.4.2 其他的JSTL库 388

14.3 开发简单的自定义标记 391

14.3.1 使用简单的标记 391

14.3.2 定义自定义Java标记 392

14.3.3 定义自定义标记“Hello World” 393

14.3.4 标记库描述符(TLD) 394

14.3.5 部署标记库Web应用程序 395

14.3.6 简单标记的用处 396

14.4 带属性的标记 396

14.5 定义EL变量的标记 403

14.6 迭代标记 408

14.7 协作标记 409

14.7.1 使用共享变量 409

14.7.2 分层的标记结构 409

14.8 小结 410

14.9 问与答 410

14.10 练习 411

第三周课程 将J2EE整合到企业应用程序中

第15天课程 安全 414

15.1 安全术语 414

15.1.1 认证 415

15.1.2 授权 415

15.1.3 机密性 415

15.1.4 完整性 415

15.1.5 不可否认性 416

15.1.6 审核 416

15.2 常用安全技术 416

15.2.1 对称加密 416

15.2.2 非对称加密 417

15.2.3 SSL和HTTPS 417

15.2.4 校验和与消息摘要 418

15.2.5 数字证书 419

15.3 J2EE中的安全 419

15.3.1 主体 419

15.3.2 角色 420

15.3.3 角色引用 420

15.4 使用J2EE RI安全 421

15.5 安全和EJB 422

15.5.1 定义EJB安全 422

15.5.2 定义角色 422

15.5.3 应用EJB授权 423

15.6 使用J2EE RI应用EJB安全 423

15.6.1 定义安全身份 425

15.6.2 定义方法权限 426

15.6.3 映射J2EE RI主体到角色 429

15.6.4 部署和测试安全EJB 431

15.6.5 使用角色作为安全身份 432

15.6.6 应用可编程EJB安全 433

15.6.7 部署和测试EJB可编程安全 436

15.7 Web应用程序和组件中的安全 436

15.7.1 Web 认证 436

15.7.2 声明性Web授权 437

15.7.3 可编程Web授权 437

15.8 使用J2EE RI应用Web安全 438

15.8.1 定义Web应用程序角色 438

15.8.2 配置J2EE RI声明性Web安全 439

15.8.3 使用安全的Web认证方案 440

15.8.4 应用Web应用程序安全约束 440

15.8.5 映射Web应用程序特定于平台的角色 445

15.8.6 部署和测试受保护的Web接口 446

15.8.7 应用可编程Web安全 446

15.8.8 部署和测试可编程Web安全 449

15.9 安全和JNDI 449

15.9.1 简单LDAP认证 450

15.9.2 SASL认证 450

15.10 小结 452

15.11 问与答 452

15.12 练习 453

第16天课程 整合XML和J2EE 454

16.1 平台无关数据交换的原因 454

16.2 XML起源 455

16.3 XML结构和语法 456

16.3.1 HTML和XML 456

16.3.2 XML文档结构 457

16.3.3 声明 457

16.3.4 元素 457

16.3.5 结构良好的XML文档 458

16.3.6 属性 459

16.3.7 注释 459

16.3.8 名字空间 460

16.4 创建有效XML文档 461

16.4.1 文档类型定义 461

16.4.2 XML Schema 464

16.5 J2EE对XML的支持 465

16.6 JAXP包 466

16.7 使用SAX解析XML 467

16.8 文档对象模型(DOM)解析器 470

16.8.1 构建DOM树 470

16.8.2 修改DOM树 472

16.8.3 输出DOM树 473

16.8.4 一个简单的DOM例子 473

16.9 支持XML绑定的Java体系结构 477

16.10 小结 478

16.11 问与答 478

16.12 练习 479

第17天课程 XML文档转换 480

17.1 在客户端表示XML文档 480

17.1.1 在浏览器上表示XML文档 481

17.1.2 XML样式表语言(XSL) 481

17.1.3 XSL格式化对象(XSL-FO) 481

17.2 可扩展样式表转换(XSLT) 482

17.3 在Java应用程序中使用XSLT 484

17.4 XSLT样式表 487

17.4.1 模板规则 488

17.4.2 XML元素的文本表示 492

17.4.3 通过XSLT使用Xpath 492

17.4.4 默认的样式表规则 494

17.4.5 处理属性 495

17.5 使用样式表元素 496

17.5.1 处理空格和文本 496

17.5.2 添加注释 498

17.5.3 属性值 498

17.5.4 创建和复制元素 500

17.5.5 属性和属性集 502

17.5.6 其他XSL元素 504

17.6 XSLT编译器 508

17.7 小结 508

17.8 问与答 508

17.9 练习 509

第18天课程 模式 513

18.1 J2EE模式 513

18.1.1 什么是模式 513

18.1.2 为什么使用模式 514

18.1.3 模式的类型 515

18.1.4 J2EE模式 515

18.1.5 模式目录 516

18.2 应用特定于J2EE的模式 516

18.2.1 在环境中应用模式 516

18.2.2 通用模式 517

18.2.3 J2EE表示层模式 518

18.2.4 J2EE业务层模式 518

18.2.5 J2EE集成层模式 519

18.2.6 J2EE中的模式 519

18.3 在环境中应用模式 519

18.3.1 分析学习实例 519

18.3.2 会话Facade和实体EJB 520

18.3.3 数据交换和值对象 520

18.3.4 非实体EJB的数据访问 524

18.3.5 消息和异步激活 529

18.3.6 组装实体 529

18.3.7 组装JSP 530

18.3.8 JSP和关注点分离 532

18.3.9 客户端代理和委托 535

18.3.10 定位服务 535

18.3.11 其他业务 535

18.3.12 重构学习实例 536

18.4 J2EE模式趋势 536

18.5 小结 537

18.6 问与答 537

18.7 练习 537

第19天课程 整合外部资源 539

19.1 考察外部资源和遗留系统 539

19.2 其他连接技术简介 540

19.3 连接器体系结构 540

19.3.1 体系结构概述 541

19.3.2 角色与职责 542

19.3.3 公共客户端接口 544

19.3.4 安装资源适配器 546

19.4 CORBA简介 546

19.5 使用RMI over IIOP 548

19.6 JNI简介 552

19.7 小结 555

19.8 问与答 555

19.9 练习 556

第20天课程 借助J2EE使用RPC样式

的Web服务 557

20.1 Web服务简介 558

20.1.1 什么是Web服务 558

20.1.2 为什么使用Web服务 558

20.1.3 Web服务技术和协议 559

20.1.4 Web服务体系结构 559

20.2 J2EE的Web服务 561

20.2.1 J2EE的Web服务体系结构 561

20.2.2 工具和技术 561

20.2.3 整合Web服务和J2EE 563

20.3 创建带有JAX-RPC的Web服务 563

20.3.1 面向RPC的Web服务 564

20.3.2 JAX-RPC API 565

20.4 创建一个简单服务 565

20.4.1 文件和工具 566

20.4.2 定义接口和实现 566

20.4.3 Web 服务编译器配置文件 567

20.4.4 WSDL文件 569

20.4.5 映射文件 571

20.5 使用J2EE RI deploytool打包和部署Simple Web Service 572

20.5.1 创建Web服务WAR 572

20.5.2 配置WAR和组件 575

20.5.3 Web服务部署描述符 576

20.5.4 部署服务 577

20.6 使用Simple Greeting Service 578

20.7 建立更为健壮的Web服务 580

20.8 通过Web服务协议暴露EJB 582

20.8.1 作为Web服务Facade的EJB 582

20.8.2 定义接口和实现 583

20.8.3 Web服务编译器配置文件 585

20.8.4 WSDL文件 586

20.8.5 映射文件 586

20.9 使用J2EE RI deploytool打包和部署Agency Web服务 587

20.9.1 创建Agency EAR 587

20.9.2 配置EJB组件 589

20.9.3 Web服务部署描述符 591

20.9.4 部署服务 591

20.10 使用Simple Greeting Service 592

20.11 Web服务的其他问题 593

20.11.1 Web服务错误和异常 594

20.11.2 JAX-RPC Web服务的环境和生命周期 594

20.11.3 Java和SOAP/WSDL类型间的映射 595

20.11.4 列集复杂类型 596

20.12 小结 597

20.13 问与答 597

20.14 练习 598

第21天课程 消息样式的Web服务和Web服务注册表 599

21.1 基于消息的SOAP服务 599

21.1.1 消息样式与RPC样式 599

21.1.2 创建客户 600

21.1.3 创建服务 600

21.1.4 使用SAAJ发送和接收SOAP消息 601

21.2 实现基于SAAJ的Web服务 601

21.2.1 使用SAAJ处理SOAP消息 601

21.2.2 使用SAAJ接收和访问SOAP消息 602

21.2.3 服务器端Java和XML间的列集 606

21.3 使用J2EE RI deploytool打包和部署简单Web服务 609

21.3.1 创建Web服务WAR 610

21.3.2 配置WAR和组件 611

21.3.3 部署服务 613

21.4 使用SAAJ Web服务 614

21.4.1 发送一个基本的SOAP消息 614

21.4.2 Java和XML之间的客户端列集 616

21.4.3 运行简单客户端 618

21.5 更为复杂的消息交换 618

21.6 Web服务注册表 619

21.6.1 什么是Web服务注册表 619

21.6.2 为什么我需要一个注册表 619

21.6.3 它们如何工作 620

21.6.4 注册表分类 620

21.6.5 ebXML Registry和Repository 621

21.6.6 UDDI概述 622

21.7 访问UDDI注册表中的信息 622

21.8 使用针对注册表访问的JAXR 623

21.9 使用JAXR联系注册表 624

21.10 使用JAXR在注册表中存储信息 625

21.11 使用JAXR从注册表检索信息 626

21.12 小结 628

21.13 问与答 628

21.14 练习 628

附录A XML概述 630

A.1 什么是XML 630

A.1.1 元素 630

A.1.2 声明 631

A.1.3 注释 632

A.1.4 特殊字符 632

A.1.5 名字空间 632

A.2 强化XML文档结构 633

A.2.1 文档类型定义 633

A.2.2 XML Schema 636

A.3 在哪里获取更多相关信息 637

附录B Java Community Process 639

B.1 JCP简介 639

B.2 JCP相关组织 639

B.2.1 JCP成员 639

B.2.2 专家组 640

B.2.3 公共成员 640

B.2.4 过程管理办公室 640

B.2.5 执行委员会 640

B.3 了解JSR进程 640

B.4 进入下一步 641

术语表 642