第Ⅰ部分 基础篇及学习目标 1
第1章 IBM WAS编程简介 1
1.1 WAS简介 1
目录 1
1.2 IBM的WebSphere Application Server产品 2
1.2.1 WebSphereApplication Server4.0版 2
1.2.2 WebSphere Application Server 5.0版 3
1.3 本书内容简介 3
1.3.1 第Ⅰ部分 3
1.3.2 第Ⅱ部分 4
1.3.3 第Ⅲ部分 4
1.3.4 第Ⅳ部分 5
1.3.6 附录 6
1.3.5 第Ⅴ部分 6
1.4 WAS 5.0 版的特别注意事项 7
1.5 实用程序脚本 7
1.6 Unicode 字符、本地化和国际化 8
1.7 UNIX命令、shell、Perl和Lynx 9
1.7.1 在UNIX平台上编写WAS程序 9
1.7.2 使用Lynx 10
1.7.3 企业WAS编程中的Perl脚本 10
1.8 本书使用的应用程序 12
第2章 安装WAS储存库 13
2.1 安装数据库的基本原理 13
2.1.1 用作管理储存库的数据库 13
2.3 UDB的二进制分布和基本安装 14
2.2 WAS和UDB的兼容性 14
2.1.2 用作数据源的数据库 14
2.4 安装UDB组件 16
2.5 在AIX平台上安装UDB 20
2.6 通用UDB JDBC驱动程序类型分类 23
2.6.1 JDBC类型2:app驱动程序 23
2.6.2 JDBC类型3:net驱动程序 24
2.7 小结 24
第3章 设置开发环境的先决条件 25
3.1 HTTP服务器 25
3.1.1 安装HTTP服务器 25
3.1.2 启动/停止HTTP服务器 28
3.1.3 HTTP服务器日志文件 29
3.2 Java机 30
3.2.1 安装Java机 31
3.2.2 设置Java计算系统环境 33
3.3 Windows NT用户环境 46
3.3.1 Windows NT批处理命令刷新 46
3.3.2 设置Windows NT的用户环境 47
3.3.3 Windows NT的Shell解释程序 48
3.4 使用Java机 49
3.4.1 Hello World 49
3.4.2 使用Java程序包:简单观察 50
3.4.3 HelloURL示例 53
3.4.4 Hello World的CGI版本:HelloWorld.cgi 54
3.5 利用JDBC驱动器测试远程数据库连接 55
3.6 小结 57
4.1 本书使用的约定 58
4.1.1 主目录约定 58
第4章 在Linux、Windows NT和AIX平台上安装WAS 58
4.1.2 WAS进程约定 60
4.1.3 WebSphere域约定 60
4.2 产品相关性 60
4.3 要求 61
4.3.1 硬件要求 61
4.3.2 操作系统级要求 61
4.3.3 GUI接口相关性 62
4.3.4 数据库要求 64
4.4 预安装验证 64
4.4.1 成功的数据库连接 65
4.4.2 在WAS安装中加入HTTP Web服务器插件 65
4.5 安装带有UDB配置储存库的WAS 66
4.4.3 Java机可用性 66
4.6 取消prereq checker 68
4.7 安装WAS AEs 4.0版 69
4.8 启动WAS和第一次安装 70
4.9 配置公共资源 71
4.10 设置JDBC驱动程序 72
4.11 虚拟主机 73
4.11.1 虚拟主机不是节点特有的 74
4.11.2 设置虚拟主机的理由 74
4.11.3 虚拟主机名解析 78
4.12 测试servlet:snoop 78
4.13 文件定位 80
4.14 设置WAS开发环境 81
4.14.1 设置命令 81
4.14.2 设置桌面 83
4.15 测试WAS安装的未在文档中记录的快捷方式 84
4.16 卸载产品 86
4.17 在多台计算机上复制安装 86
4.18 小结 86
第5章 定义WebSphere域 87
5.1 了解WebSplere区域 87
5.2 了解WebSphere域 88
5.2.1 WebSphere域的背景 89
5.2.2 WebSphere域的优点 90
5.2.3 定义WebSphere域名 93
5.2.4 管理WebSphere域 94
5.2.5 WebSphere域的结构 97
5.2.6 WAS使用的端口 99
5.3.1 取消Servlet转向器 100
5.3 比较WAS 3.5版和4.0版 100
5.3.2 取消增强的datasources.xml配置 101
5.3.3 WAS支持JSP Levels 1.0和1.1 101
5.3.4 EJB Level1.1是WAS 4.0版惟一支持的标准 102
5.3.5 仅用于WAS 4.0版应用服务器的模型和克隆 102
5.4 小结 103
第6章 安装测试:WAS工具和示例 104
6.1 WAS系统工具 104
6.1.1 应用服务器启动/停止命令 104
6.1.2 WebSphere管理控制台 105
6.1.3 WebSphere控制程序:WSCP 105
6.1.4 DrAdmin:生成线程转储 106
6.1.5 企业应用程序存档文件(EAR) 106
6.2 WAS测试工具 110
6.3 剖析EAR示例文件:sampleApp.ear 113
6.4.1 安装Petstore示例 116
6.4 Petstore示例 116
6.4.2 手动更改 123
6.5 各种WAS工具 124
6.5.1 Log Analyzer 124
6.5.2 Resource Analyzer 125
6.6 小结 128
第Ⅱ部分 Web开发人员必备的管理指南 129
第7章 利用Perl/WSCP进行WAS报表推断 129
7.1 WSCP简介 129
7.2 启动WSCP 130
7.2.1 WSCP属性文件 131
7.2.2 与WSCP进行的会话 132
7.3 WSCP和Tcl 133
7.5 WscpCommand界面 135
7.4 在工作站上单独安装WSCP 135
7.6 利用Perl/WSCP提取报表 136
7.6.1 从Perl运行WSCP 137
7.6.2 分析WSCP输出 138
7.7 WSCP消息代码 145
7.8 小结 145
第8章 WAS管理快速入门 146
8.1 启动、终止和测试WAS 146
8.1.1 启动WAS 146
8.1.2 终止WAS 147
8.1.3 启动/终止/测试HTTP服务器 148
8.1.4 测试WAS 148
8.2 检查WAS版本和发布级别/日期 151
8.3.1 查找WAS启动失败原因 153
8.3 日志文件和启动消息 153
8.3.2 设置日志文件格式 154
8.3.3 activity.log文件 156
8.4 处理WAS进程 158
8.4.1 WAS进程揭密 158
8.4.2 操作进程组 160
8.5 /etc/services端口 160
8.5.1 WAS默认使用的端口 161
8.5.2 调试默认端口 161
8.6 监控端口 162
8.7 管理性配置文件 164
8.8 WAS启动Java机 166
8.8.1 Java机参数调整 166
8.8.3 管理WAS储存库 167
8.8.2 关闭JIT编译器 167
8.9 公共管理实践 169
8.9.1 WAS快速诊断:调用showCfg 169
8.9.2 检查WAS数据库储存库 170
8.9.3 监控应用程序存档文件 170
8.9.4 保存WAS目录 171
8.9.5 在WindowsNT平台中保存WAS目录 171
8.10 小结 172
第Ⅲ部分 WAS编程 173
第9章 数据库的准备 173
9.1 简介 173
9.2 UNIX平台上的UDB授权 173
9.3 创建数据库 174
9.4.1 Java和JDBC 177
9.4 填充数据库 177
9.4.2 利用DBD::DB2模块 181
9.5 小结 189
第10章 在Java中访问数据库:DataAccessComponent 190
10.1 定义DataAccessComponent 190
10.2 检查DataAccessComponent的特性 195
10.2.1 DataAccessComponent中的文本替换 195
10.2.2 利用DataSet检索数据 196
10.2.3 检索EmpAccnt表和CliAccnt表中的数据 198
10.3 理解构建过程 203
10.3.1 创建Java包树 204
10.3.2 Java包的普通编译 204
10.3.3 集中编译java程序:jall脚本 204
10.4 小结 205
11.1.1 创建第一个J2EE树 206
第11章 在WAS中开发J2EE Web应用程序 206
11.1 加载J2EE Web应用程序 206
11.1.2 创建Web应用程序 209
11.1.3 创建更完整的J2EE树 217
11.2 向已加载Web应用程序中添加新的Build脚本 218
11.3 了解j2tree脚本 220
11.4 小结 223
第12章 HTTP servlet编程 225
12.1 从CGI编程到Java servlet 225
12.1.1 利用DumpEnv servlet来转储CGI环境变量 227
12.1.2 利用DumpEnv servlet:service()方法 229
12.2 开发人员的servlet编程策略 229
12.2.1 了解HTTPD日志记录 229
12.2.3 利用Lynx检查HTTP请求 230
12.2.2 WAS重定向到标准输入/输出 230
12.2.4 利用svlbuild脚本重新编译servlet 231
12.2.5 将HTML内容转变为Java字符串 231
12.3 理解servlet编程需求 232
12.3.1 使用servlet显示HTML内容 233
12.3.2 利用servlet访问UDB 233
12.3.3 利用servlet显示文件内容 239
12.4 在出纳员/客户示例中使用servlet 245
12.4.1 出纳员登录servlet:LoginScreen 245
12.4.2 出纳员身份验证:TellerLogged 249
12.4.3 出纳员对客户账户的收支操作:CreditDebit 251
12.5 利用Lynx进行批处理 257
12.6 小结 258
第13章 Java Server Pages(JSP) 259
13.1 JSP编程:第一个示例 260
13.2 第二个示例:使用请求调度程序 263
13.3 servlet通信 266
13.3.1 servlet内部通信 266
13.3.2 servlet间通信 267
13.4 自定义标签:JSP标签库 267
13.5 自动进行JSP标签库编程 270
13.5.1 在Web应用程序描述符中注册标签库 272
13.5.2 JSP标签库编程的步骤总结 273
13.6 自定义标签库以显示典型消息 273
13.7 小结 276
第14章 WAS中的J2EE Web应用程序 277
14.1 IBM特有的部署描述符 277
14.1.1 IBM扩展文件 277
14.1.2 获取IBM扩展文件 280
14.1.4 IBM扩展属性总结 285
14.1.3 使用EARExpander 285
14.2 web.xml的WAS分析 286
14.3 小结 289
第15章 WAS中的类:加载顺序及可见性顺序 290
15.1 类路径和WAS的类加载器 290
15.1.1 类路径的树形层次结构 291
15.1.2 WAS启动类路径 293
15.1.3 向WAS启动类加载器中添加Jar存档文件 294
15.1.4 从servlet中获取应用程序类路径 295
15.2 初始化和重新加载servlet 296
15.3 模块可见性和类重新加载 297
15.3.1 模块可见性 298
15.3.2 模块可见性和重载模拟:Hey-Yo 300
15.4 热部署和动态重加载 307
15.5 小结 311
第16章 会话标识与HTTP协议 313
16.1 标识用户登录 313
16.2 获取mime_header 314
16.3 cookie 315
16.3.1 CGI的cookie 315
16.3.2 通过HTTP Java servlet使用cookie 319
16.3.3 cookies的限制和命名约束 327
16.4 会话管理 327
16.4.1 使用JSESSIONID cookie标识会话 328
16.4.2 WAS会话标识符对CGI程序的可见性 335
16.5 SessionFairy 337
16.5.1 从会话标识符收集信息 337
16.5.2 生成SessionFairy.jsp 340
16.6 URL重写和隐式参数 344
16.6.1 URL重写 344
16.6.2 表单的隐式字段 346
16.7 小结 347
第17章 会话作用域和IBM会话持久性 348
17.1 检验会话作用域和类似性 348
17.1.1 理解会话作用域 348
17.1.2 理解会话类似性 349
17.2 检验会话持久性:安装、配置以及测试 350
17.2.1 安装和配置会话 350
17.2.2 在持续会话时使用WAS组件 355
17.2.3 测试会话持久性 355
17.3.1 串行化持久HTTP会话对象 358
17.3 编程考虑事项 358
17.3.2 使Logoff上的会话失效 359
17.3.3 提交持久会话中的更改 360
17.3.4 理解重新加载servlet或jsp时的会话影响 361
17.3.5 写入持久性数据库:sync() 361
17.4 用Teller Login方案测试会话持久性 361
17.4.1 用浏览器检验Teller Login方案 361
17.4.2 用Lynx检验Teller Login方案 365
17.4.3 为一个Web容器使用多个会话 368
17.5 调整会话管理 368
17.6 考虑大于4K的页面 370
17.7 理解持久性背后的推理 371
17.8 小结 372
第18章 企业JavaBean编程 373
18.1 WASDG应用程序的企业JavaBean 374
18.2 将程序转化成会话Bean 382
18.3 用作会话Bean的数据访问组件DataAccessComponentBean 385
18.4 扩展BeanBase来传递返回的对象 388
18.5 利用更大的Bean:MapRequest.set Operation()来优化EJB容器 389
18.6 调整Bean指定 395
18.7 部署EJB模块WasdgBeansjar 396
18.7.1 生成EJB模块:WasdgBeans.jar 396
18.7.2 验证EJB模块 397
18.7.3 生成和注册企业应用程序:WasdgBeans.ear 398
18.7.4 用ejbdeploy.sh生成部署代码 402
18.8 测试EJB模块WasdgBeans.jar的Bean 403
18.8.1 安装WASDG应用程序 404
18.8.2 使用显式复制将EJB合并到WASDG开发树中 404
18.8.3 使用符号链接将EJB链接到WASDG开发树中 405
18.9 修改和校验EJB模块代码 406
18.10 测试方案 407
18.11 汇编EJB模块WasdgBeans.jar:使用AAT 409
18.11.1 使用AAT生成WasdgBean.jar 410
18.11.2 修改已汇编EJB模块的代码 410
18.12 小结 411
第19章 WAS中的Apache SOAP编程 412
19.1 部署SOAP应用程序:wasdgsoap.ear 412
19.1.1 Web应用程序soap.war 414
19.1.2 测试wasdgsoap.ear并阐明SOAP消息 416
19.1.3 卸载和安装wasdgsoap.ear 417
19.2 WAS使用的Apache SOAP部署描述符 417
19.3 用gensoap-ejb生成Apache SOAP部署描述符 419
19.4 传递参数 422
19.4.1 在SOAP客户端限定名称:Qname 423
19.4.2 在SOAP部署描述符中指定类型映射 424
19.4.3 编写DataSetSerializer程序 425
19.4.4 将客户程序的QName()与其服务器映射相匹配 429
19.5 使用SOAP客户程序访问Bean 430
19.5.1 设置SOAP客户程序环境 430
19.5.2 测试SOAP客户程序 431
19.5.3 在Nutshell中调试SOAP客户程序 432
19.6 小结 432
第20章 安全编程基础:应用JAAS 433
20.1 安装JAAS 433
20.2 JAAS编程 435
20.3 一个JAAS示例:FetchFile和PrivilegedFetchFile 435
20.4 确保Teller安全登录和退出 450
20.4.2 分离开发人员的角色 451
20.4.1 JAAS支持的WASDG应用程序退出 451
20.5 JAAS前景 459
20.6 密码 460
20.7 小结 467
第21章 企业应用程序开发 468
21.1 使用make实用程序重新考虑创建过程 469
21.1.1 利用make实用程序编译代码 470
21.1.2 自动处理 471
21.1.3 BASE DEV的初始Makefile. 475
21.1.4 创建并部署一个二合一脚本:AppBuild 480
21.2 并行开发:源代码控制、编译和测试 481
21.2.1 一个用户特有的开发树:holding树 481
21.2.2 在同一服务器上安装WebSphere域的多个实例 484
21.3 考虑并行编程人员的环境 487
21.4 文档规范 490
21.5 小结 491
第Ⅳ部分 应力测试、跟踪和调试 492
第22章 应力测试 492
22.1 HTTP请求的基本计时 492
22.2 编写应力测试器 494
22.2.1 对于HTTP方法的特殊考虑事项 495
22.2.2 分支并发用户的并发进程 495
22.2.3 在每个进程中重复发出多个请求 496
22.2.4 ZappUrl脚本 496
22.3 利用SharkUrl对WASDG应用程序进行应力测试 503
22.3.1 SharkUrl脚本预处理的文件 503
22.3.2 运行SharkUrl 505
22.3.3 生成并解释报表 507
22.3.4 嗅闻网络以评测WAS的性能 510
22.3.5 有关预处理include文件的最后说明 512
22.4 小结 512
第23章 编写异常处理程序、记录和调试 514
23.1 记录、跟踪和利用异常处理进行调试 514
23.2 记录信息:Log.log() 516
23.3 利用BundleManager捆绑信息 521
23.3.1 log.properties文件 524
23.3.2 考虑异常处理属性文件 524
23.4 异常处理 526
23.5 测试程序 532
23.6 IBM OLT和OLD 533
23.7 小结 534
24.2 作为LED的组件消息编号 535
24.1 监控目标 535
第24章 用WASLED和WASMON监控WAS 535
第Ⅴ部分 监控、调整和风险管理 535
24.3 WASLED的安装和启动 537
24.3.1 第一个面板:用户输入面板 539
24.3.2 第二个面板:WASLED活动面板 540
24.3.3 第三个面板:WASMON活动面板 541
24.4 激活并连接WASMON服务器 541
24.5 监控WAS容器 542
24.6 过滤WAS事件并利用WASMON激发操作 542
24.7 通过e-mail发送警报 546
24.7.1 e-mail:标题对话框和发送email按钮 546
24.7.2 过滤事件并向用户发送e-mail 547
24.7.3 触发脚本 547
24.8 利用逻辑警告指令进行条件监控 549
24.9 小结 550
第25章 监控并调整系统资源 552
25.1 为性能命令进行系统设置 552
25.1.1 AIX和Linux平台上的性能命令 552
25.1.2 在AIX平台上安装系统代理 553
25.1.3 Windows NT的要求 553
25.2 基本监控命令:ps、sar以及vmstat 553
25.2.1 利用ps命令监控进程 554
25.2.2 利用sar和vmstat监控内存和CPU 556
25.3 考虑Windows NT的内存使用情况 558
25.4 考虑Windows NT的网络使用情况 560
25.5 线程与进程 563
25.5.1 AIX平台上的线程信息统计 563
25.5.2 利用MrThread监控线程 565
25.6 利用MrTop监控Linux进程 568
25.8 考虑EJB缓存 570
25.7 考虑交换页面调度空间 570
25.9 考虑SESSION数据库的性能 572
25.10 小结 574
第26章 利用WASMON进行风险管理 575
26.1 利用WASMON进行风险管理 576
26.1.1 将WASMON设置为管理模式 576
26.1.2 将管理模式设为活动状态 578
26.2 利用管理模式获得假释 579
26.3 WASMON的四种内部变量类型 585
26.3.1 静态变量:s-var 586
26.3.2 布尔变量:b-var 587
26.3.3 差异变量:d-var 588
26.4 准备内部变量 589
26.3.4 全局变量:gvar 589
26.5 具有帮助程序的WASMON委托:wasmonhelper 590
26.6 在wasmon.conf中使用内部变量 592
26.7 关于WASMON帮助程序:wasmonhelper 594
26.8 理解差异变量:dvar 595
26.9 利用WASMON进行普通监控 595
26.10 利用WASLED/WASMON监控Web应用程序 596
26.11 运行WASMON的特殊考虑事项 598
26.12 小结 598
第Ⅵ部分 附录 600
附录A 检索信息和代码分布 600
A.1 必需的代码分布Web站点 600
A.2 安装分布代码 602
A.3 安装Gramercy Toolkit 602
A.4 安装WASLED/WASMON 603
A.3.2 获取工具的版本号 603
A.3.1 设置GRAMERCY DIR环境变量 603
A.5 本书在各学科中的应用 604
A.6 在WAS AEs下如何配置J2EE应用程序部署 604
附录B 备份与恢复 605
B.1 备份WAS配置数据 605
B.1.1 备份和恢复WAS AEs 605
B.1.2 备份WAS AE 606
B.1.3 恢复WAS AE 606
B.2 移植考虑事项 607
附录C 利用MrUnicode解释Java 2的国际化 609
C.1 使用MrUnicode实现国际化和统一编码 609
C.2 显示有关转换器和字符集合的信息 612
C.3 Sun Microsystems和IBM在Java 2编码中的命名规则 613
C.4 用MrUnicode显示语言编码 614
D.1 检查WASDG环境 616
附录D Gramercy Tooldit脚本和WASDG环境 616
D.2 Gramercy Toolkit脚本 618
D.2.1 BwjSort 618
D.2.2 cpfl 619
D.2.3 modjar 619
附录E WASLED/WASMON快速参考 620
E.1 启动和配置WASMON 620
E.1.1 使用逻辑表达式 622
E.1.2 WASMON内部变量 623
E.2 快速监控方案 625
附录F 对于WAS 5.0版的支持 627
F.1 通过DTD判断WAS支持 627
F.2 WAS 5.0版本支持J2EE API 2.3 629
F.3 重新考虑WAS 5.0版本的脚本 629