本书展示了如何在UNIX、NT和AIX等多种平台上开发和部署功能强大的Web应用程序,介绍了开发人员和系统集成人员必须了解的一些信息和高级技术,帮助您全面掌握WebSphere的强大功能。本书涉及的核心Web技术包括EJB、J2EE和servlet,除此之外还提供了数百个程序的源代码。本书是每个WebSphere开发人员和系统集成人员必备的宝典!
第1部分 基础篇及学习目标
第1章 IBM WAS编程简介
1.1 WAS简介
1.2 IBM的WebSphere Application Server产品
1.2.1 WebSphere Application Server4.0版
1.2.2 WebSphere Application Server5.0版
1.3 本书内容简介
1.3.1 第1部分
1.3.2 第II部分
1.3.3 第III部分
1.3.4 第IV部分
1.3.5 第V部分
1.3.6 附录
1.4 WAS 5.0版的特别注意事项
1.5 实用程序脚本
1.6 Unicode字符.本地化和国际化
1.7 UNIX命令.shell.Perl和Lynx
1.7.1 在UNIX平台上编写WAS程序
1.7.2 使用Lynx
1.7.3 企业WAS编程中的Perl脚本
1.8 本书使用的应用程序
第2章 安装WAS储存库
2.1 安装数据库的基本原理
2.1.1 用作管理储存库的数据库
2.1.2 用作数据源的数据库
2.2 WAS和UDB的兼容性
2.3 UDB的二进制分布和基本安装
2.4 安装UDB组件
2.5 在AIX平台上安装UDB
2.6 通用UDB JDBC驱动程序类型分类
2.6.1 JDBC类型2:app驱动程序
2.6.2 JDBC类型3:net驱动程序
2.7 小结
第3章 设置开发环境的先决条件
3.1 HTTP月艮务器
3.1.1 安装HTTP服务器
3.1.2 启动/停止HTTP服务器
3.1.3 HTTP服务器日志文件
3.2 Java机
3.2.1 安装Java机
3.2.2 设置Java计算系统环境
3.3 Windows NT用户环境
3.3.1 Windows NT批处理命令刷新
3.3.2 设置Windows NT的用户环境
3.3.3 Windows NT的Shell解释程序
3.4 使用Java机
3.4.1 Hello World
3.4.2 使用Java程序包:简单观察
3.4.3 HelloURL示例
3.4.4 Hello World的CGI版本:Hello World.cgi
3.5 利用JDBC驱动器测试远程数据库连接
3.6 小结
第4章 在Linux.Windows NT和AIX平台上安装WAS
4.1 本书使用的约定
4.1.1 主目录约定
4.1.2 WAS进程约定
4.1.3 WebSphere域约定
4.2 产品相关性
4.3 要求
4.3.1 硬件要求
4.3.2 操作系统级要求
4.3.3 GUI接口相关性
4.3.4 数据库要求
4.4 预安装验证
4.4.1 成功的数据库连接
4.4.2 在WAS安装中加入HTTP Web服务器插件
4.4.3 Java机可用性
4.5 安装带有UDB配置储存库的WAS
4.6 取消prereq_checker
4.7 安装WAS AEs 4.0版
4.8 启动WAS和第一次安装
4.9 配置公共资源
4.10 设置JDBC驱动程序
4.11 虚拟主机
4.11.1 虚拟主机不是节点特有的
4.11.2 设置虚拟主机的理由
4.11.3 虚拟主机名解析
4.12 测试servlet:snoop
4.13 文件定位
4.14 设置WAS开发环境
4.14.1 设置命令
4.14.2 设置桌面
4.15 测试WAS安装的未在文档中记录的快捷方式
4.16 卸载产品
4.17 在多台计算机上复制安装
4.18 小结
第5章 定义WebSphere域
5.1 了解WebSphere区域
5.2 了解WebSphere域
5.2.1 WebSphere域的背景
5.2.2 WebSphere域的优点
5.2.3 定义WebSphere域名
5.2.4 管理WebSphere域
5.2.5 WebSphere域的结构
5.2.6 WAS使用的端口
5.3 比较WAS 3.5版和4.0版
5.3.1 取消Servlet转向器
5.3.2 取消增强的datasources.xml配置
5.3.3 WAS支持JSP Levels 1.0和1.1
5.3.4 EJB Level 1.1是WAS 4.0版惟一支持的标准
5.3.5 仅用于WAS 4.0版应用服务器的模型和克隆
5.4 小结
第6章 安装测试:WAS工具和示例
6.1 WAS系统工具
6.1.1 应用服务器启动/停止命令
6.1.2 WebSphere管理控制台
6.1.3 WebSphere控制程序:WSCP
6.1.4 DrAdmin:生成线程转储
6.1.5 企业应用程序存档文件(EAR)
6.2 WAS测试工具
6.3 剖析EAR示例文件:sampleApp.ear
6.4 Petstore示例
6.4.1 安装Petstore示例
6.4.2 手动更改
6.5 各种WAS工具
6.5.1 Log Analyzer
6.5.2 Resource Analyzer
6.6 小结
第II部分 Web开发人员必备的管理指南
第7章 利用Perl/WSCP进行WAS报表推断
7.1 WSCP简介
7.2 启动WSCP
7.2.1 WSCP属性文件
7.2.2 与WSCP进行的会话
7.3 WSCP和Tcl
7.4 在工作站上单独安装WSCP
7.5 WscpCommand界面
7.6 利用Perl/WSCP提取报表
7.6.1 从Perl运行WSCP
7.6.2 分析WSCP输出
7.7 WSCP消息代码
7.8 小结
第8章 WAS管理快速入门
9.1 启动.终止和测试WAS
9.1.1 启动WAS
9.1.2 终止WAS
9.t.3 启动/终止/测试HTTP服务器
9.1.4 测试WAS
9.2 检查WAS版本和发布级别/日期
9.3 日志文件和启动消息
9.3.1 查找WAS启动失败原因
9.3.2 设置日志文件格式
9.3.3 activity.log文件
9.4 处理WAS进程
9.4.1 WAS进程揭密
9.4.2 操作进程组
9.5 /etc/services端口
9.5.1 WAS默认使用的端口
9.5.2 调试默认端口
9.6 监控端口
9.7 管理性配置文件
9.8 WAS启动Java机
9.8.1 Java机参数调整
9.8.2 关闭JIT编译器
9.8.3 管理WAS储存库
9.9 公共管理实践
9.9.1 WAS快速诊断:调用showCfg
9.9.2 检查WAS数据库储存库
9.9.3 监控应用程序存档文件
9.9.4 保存WAS目录
9.9.5 在Windows NT平台中保存WAS目录
9.10 小结
第III部分 WAS编程
第9章 数据库的准备
9.1 简介
9.2 UNIX平台上的UDB授权
9.3 创建数据库
9.4 填充数据库
9.4.1 Java和JDBC
9.4.2 利用DBD::DB2模块
9.5 小结
第10章 在Java中访问数据库:DataAccessComponent
10.1 定义DataAccessComponent
10.2 检查DataAccessComponent的特性
10.2.1 DataAccessComponent中的文本替换
10.2.2 利用DataSet检索数据
10.2.3 检索EmpAccnt表和CliAccnt表中的数据
10.3 理解构建过程
10.3.1 创建Java包树
10.3.2 Java包的普通编译
10.3.3 集中编译.java程序:jall脚本
10.4 小结
第11章 在WAS中开发J2EE Web应用程序
11.1 加载J2EE Web应用程序
11.1.1 创建第一个J2EE树
11.1.2 创建Web应用程序
11.1.3 创建更完整的J2EE树
11.2 向已加载Web应用程序中添加新的Build脚本
11.3 了解j2tree脚本
11.4 小结
第12章 HTTP servlet编程
12.1 从CGI编程到Java servlet
12.1.1 利用DumpEnv servlet来转储CGI环境变量
12.1.2 利用DumpEnv servlet:service()方法
12.2 开发人员的servlet编程策略
12.2.1 了解HTTPD日志记录
12.2.2 WAS重定向到标准输入/输出
12.2.3 利用Lynx检查HTTP请求
12.2.4 利用svlbuild脚本重新编译servlet
12.2.5 将HTML内容转变为Java字符串
12.3 理解servlet编程需求
12.3.1 使用servlet显示HTML内容
12.3.2 利用servlet访问UDB
12.3.3 利用servlet显示文件内容
12.4 在出纳员/客户示例中使用servlet
12.4.1 出纳员登录servlet:LoginScreen
12.4.2 出纳员身份验证:TellerLogged
12.4.3 出纳员对客户账户的收支操作:CreditDebit
12.5 利用Iynx进行批处理
12.6 小结
第13章 Java Server Pages(JSP)
13.1 JSP编程:第一个示例
13.2 第二个示例:使用请求调度程序
13.3 servlet通信
13.3.1 servlet内部通信
13.3.2 servlet间通信
13.4 自定义标签:JSP标签库
13.5 自动进行JSP标签库编程
13.5.1 在Web应用程序描述符中注册标签库
13.5.2 JSP标签库编程的步骤总结
13.6 自定义标签库以显示典型消息
13.7 小结
第14章 WAS中的J2EE Web应用程序
14.1 IBM特有的部署描述符
14.1.1 IBM扩展文件
14.1.2 获取IBM扩展文件
14.1.3 使用EARExpander
14.1.4 IBM扩展属性总结
14.2 web.xml的WAS分析
14.3 小结
第15章 WAS中的类:加载顺序及可见性顺序
15.1 类路径和WAS的类加载器
15.1.1 类路径的树形层次结构
15.1.2 WAS启动类路径
15.1.3 向WAS启动类加载器中添加Jar存档文件
15.1.4 从servlet中获取应用程序类路径
15.2 初始化和重新加载servlet
15.3 模块可见性和类重新加载
15.3.1 模块可见性
15.3.2 模块可见性和重载模拟:Hey-Yo
15.4 热部署和动态重加载
15.5 小结
第16章 会话标识与HTTP协议
16.1 标识用户登录
16.2 获取mime header
16.3 cookie
16.3.1 CGI的cookie
16.3.2 通过HTTP Java servlet使用cookie
16.3.3 cookies的限制和命名约束
16.4 会话管理
16.4.1 使用JSESSIONID cookie标识会话
16.4.2 WAS会话标识符对CGI程序的可见性
16.5 SessionFairy
16.5.1 从会话标识符收集信息
16.5.2 生成SessionFairy.jsp
16.6 URL重写和隐式参数
16.6.1 URL重写
16.6.2 表单的隐式字段
16.7 小结
第17章 会话作用域和IBM会话持久性
17.1 检验会话作用域和类似性
17.1.1 理解会话作用域
17.1.2 理解会话类似性
17.2 检验会话持久性:安装.配置以及测试
17.2.1 安装和配置会话
17.2.2 在持续会话时使用WAS组件
17.2.3 测试会话持久性
17.3 编程考虑事项
17.3.1 串行化持久HTTP会话对象
17.3.2 使Logoff上的会话失效
17.3.3 提交持久会话中的更改
17.3.4 理解重新加载servlet或.jsp时的会话影响
17.3.5 写入持久性数据库:sync()
17.4 用Teller Login方案测试会话持久性
17.4.1 用浏览器检验Teller Login方案
17.4.2 用Lynx检验Teller Login方案
17.4.3 为一个Web容器使用多个会话
17.5 调整会话管理
17.6 考虑大于4K的页面
17.7 理解持久性背后的推理
17.8 小结
第18章 企业JavaBean编程
18.1 WASDG应用程序的企业JavaBean
18.2 将程序转化成会话Bean
18.3 用作会话Bean的数据访问组件:DataAccessComponentBean
18.4 扩展BeanBase来传递返回的对象
18.5 利用更大的Bean:MapRequest.set Operation()来优化EJB容器
18.6 调整Bean指定
18.7 部署EJB模块WasdgBeans.jar
18.7.1 生成EJB模块:WasdgBeans.jar
18.7.2 验证EJB模块
18.7.3 生成和注册企业应用程序:WasdgBeans.ear
18.7.4 用ejbdeploy.sh生成部署代码
18.8 测试EJB模块WasdgBeans.jar的Bean
18.8.1 安装WASDG应用程序
18.8.2 使用显式复制将EJB合并到WASDG开发树中
18.8.3 使用符号链接将EJB链接到WASDG开发树中
18.9 修改和校验EJB模块代码
18.10 测试方案
18.11 汇编EJB模块WasdgBeans.jar:使用AAT
18.11.1 使用AAT生成WasdgBean.jar
18.11.2 修改已汇编EJB模块的代码
18.12 小结
第19章 WAS中的Apache SOAP编程
19.1 部署SOAP应用程序:wasdgsoap.ear
19.1.1 Web应用程序soap.war
19.1.2 测试wasdgsoap.ear并阐明SOAP消息
19.1.3 卸载和安装wasdgsoap.ear
19.2 WAS使用的Apache SOAP部署描述符
19.3 用gensoap-ejb生成Apache SOAP部署描述符
19.4 传递参数,
19.4.1 在SOAP客户端限定名称:Qname
19.4.2 在SOAP部署描述符中指定类型映射
19.4.3 编写DataSetSerializer程序
19.4.4 将客户程序的QName()与其服务器映射相匹配
19.5 使用SOAP客户程序访问Bean
19.5.1 设置SOAP客户程序环境
19.5.2 测试SOAP客户程序
19.5.3 在Nutshell中调试SOAP客户程序
19.6 小结
第20章 安全编程基础:应用JAAS
20.1 安装JAAS
20.2 JAAS编程
20.3 一个JAAS示例: FetchFile和PrivilegedFetchFile
20.4 确保Teller安全登录和退出
20.4.1 JAAS支持的WASDG应用程序退出
20.4.2 分离开发人员的角色
20.5 JAAS前景
20.6 密码
20.7 小结
第21章 企业应用程序开发
21.1 使用make实用程序重新考虑创建过程
21.1.1 利用make实用程序编译代码
21.1.2 自动处理
21.1.3 BASE DEV的初始Makefile
21.1.4 创建并部署一个二合一脚本:AppBuild
21.2 并行开发:源代码控制.编译和测试
21.2.1 一个用户特有的开发树:holding树
21.2.2 在同一服务器上安装WebSphere域的多个实例
21.3 考虑并行编程人员的环境
21.4 文档规范
21.5 小结
第IV部分 应力测试.跟踪和调试
第22章 应力测试
22.1 HTTP请求的基本计时
22.2 编写应力测试器
22.2.1 对于HTTP方法的特殊考虑事项
22.2.2 分支并发用户的并发进程
22.2.3 在每个进程中重复发出多个请求
22.2.4 ZappUrl脚本
22.3 利用SharkUrl对WASDG应用程序进行应力测试
22.3.1 SharkUrl脚本预处理的文件
22.3.2 运行SharkUrl
22.3.3 生成并解释报表
22.3.4 嗅闻网络以评测WAS的性能
22.3.5 有关预处理include文件的最后说明
22.4 小结
第23章 编写异常处理程序.记录和调试
23.1 记录.跟踪和利用异常处理进行调试
23.2 记录信息:Log.log()
23.3 利用BundleManager捆绑信息
23.3.1 log.properties文件
23.3.2 考虑异常处理属性文件
23.4 异常处理
23.5 测试程序
23.6 IBM OLT和OLD
23.7 小结
第V部分 监控.调整和风险管理
第24章 用WASLED和WASMON监控WAS
24.1 监控目标
24.2 作为IED的组件消息编号
24.3 WASLED的安装和启动
24.3.1 第一个面板:用户输入面板
24.3.2 第二个面板:WASLED活动面板
24.3.3 第三个面板:WASMON活动面板
24.4 激活并连接WASMON服务器
24.5 监控WAS容器
24.6 过滤WAS事件并利用WASMON激发操作
24.7 通过e-mail发送警报
24.7.1 e-mail:标题对话框和发送e-mail按钮
24.7.2 过滤事件并向用户发送e-mail
24.7.3 触发脚本
24.8 利用逻辑警告指令进行条件监控
24.9 小结
第25章 监控并调整系统资源
25.1 为性能命令进行系统设置
25.1.1 AIX和Linux平台上的性能命令
25.1.2 在AIX平台上安装系统代理
25.1.3 Windows NT的要求
25.2 基本监控命令:ps.sar以及vmstat
25.2.1 利用ps命令监控进程
25.2.2 利用sar和vmstat监控内存和CPU
25.3 考虑Windows NT的内存使用情况
25.4 考虑Windows NT的网络使用情况
25.5 线程与进程
25.5.1 AIX平台上的线程信息统计
25.5.2 利用MrThread监控线程
25.6 利用MrTop监控Linux进程
25.7 考虑交换页面调度空间
25.8 考虑EJB缓存
25.9 考虑SESSION数据库的性能
25.10 小结
第26章 利用WASMON进行风险管理
26.1 利用WASMON进行风险管理
26.1.1 将WASMON设置为管理模式
26.1.2 将管理模式设为活动状态
26.2 利用管理模式获得假释
26.3 WASMON的四种内部变量类型
26.3.1 静态变量:s-var
26.3.2 布尔变量:b-var
26.3.3 差异变量:d-var
26.3.4 全局变量:g-var
26.4 准备内部变量
26.5 具有帮助程序的WASMON委托:wasmonhelper
26.6 在wasmon.conf中使用内部变量
26.7 关于WASMON帮助程序:wasmonhelper
26.8 理解差异变量:d-var
26.9 利用WASMON进行普通监控
26.10 利用WASLED/WASMON监控Web应用程序
26.11 运行WASMON的特殊考虑事项
26.12 小结
第VI部分 附录
附录A 检索信息和代码分布
A.1 必需的代码分布Web站点
A.2 安装分布代码
A.3 安装Gramercy Toolkit
A.3.1 设置GRAMERCY DIR环境变量
A.3.2 获取工具的版本号
A.4 安装WASLED/WASMON
A.5 本书在各学科中的应用
A.6 在WAS AEs下如何配置J2EE应用程序部署
附录B 备份与恢复
B.1 备份WAS配置数据
B.1.1 备份和恢复WAS AEs
B.1.2 备份WAS AE
B.1.3 恢复WAS AE
B.2 移植考虑事项
附录C 利用MrUnicode 解释Java 2的国际化
C.1 使用MrUnicode实现国际化和统一编码
C.2 显示有关转换器和字符集合的信息
C.3 Sun Microsystems和IBM在Java 2编码中的命名规则
C.4 用MrUnicode显示语言编码
附录D Gramercy Toolkit脚本和WASDG环境
D.1 检查WASDG环境
D.2 Gramercy Toolkit脚本
D.2.1 BwjSort
D.2.2 cpfl
D.2.3 modjar
附录E WASLED/WASMON快速参考
E.1 启动和配置WASMON
E.1.1 使用逻辑表达式
E.1.2 WASMON内部变量
E.2 快速监控方案
附录F 对于WAS 5.0版的支持
F.1 通过DTD判断WAS支持
F.2 WAS 5.0版本支持J2EE API2.3
F.3 重新考虑WAS 5.0版本的脚本
本书是介绍WebSphere Application Server(WAS)功能和编程的基础教程, 这些内容对希望应用该软件进行编程或管理的读者来说十分重要. 本书旨在帮助读者从计算机系统角度来理解WAS的基本功能. 在介绍每种实用方法之后, 都对该方法进行补充说明, 以帮助读者理解独立于特定版本的WAS信息. 本书介绍的编程方法不仅适用于WAS 3. 5版和4. 0版, 而且适用于即将发布的WAS 5. 0版.
在学习本书之前, 读者应具有利用某种高级语言进行编程的能力, 应全面学习Java编程, 以及Peri和shell脚本编程等基础知识. WAS编程并不完全局限于Java编程. 因为J2EE应用服务器和J2EE应用程序编程需要编辑很多元文件和描述符文件, 所以可选择使用Peri. shell. UNIX make实用程序以及其他UNIX工具进行代码的文本预处理. 编译和部署. UNIX是企业中惟一促进应用程序开发的系统, 所以将其选作开发环境.
在讲解基本应用服务器编程时, 需结合各种分布式系统, 而这些系统又取决于各种操作平台, 因此本书要考虑到多种操作系统. 虽然Java机适用于所有的平台, 但线程管理与操作系统相关, 并且对应用服务器的性能影响巨大. 本书选择AIX和Linux作为操作平台, 以突出显示两者的差异.
在大多数情况下, WebSphere Application Server结构的解释适用于大多数产品, 并不特别面向特定的产品版本. 本书讨论了WAS编程和集成的基础知识, 提供了大量实用程序脚本, 在使用这些脚本时, 可不考虑产品的版本问题. WAS AE代表WAS Advanced Edition. 术语WAS AE代表的版本为3. 5版或者4. 0版. WAS AEs代表WAS Advanced Edition Single Server 4. 0版. 这里使用的代码和实用程序都与即将发布的WAS 5. 0版兼容.
在绝大多数编程中(即第III部分中), 读者将使用WAS AEs, 该版本可编写基于IBM J2EE应用服务器的J2EE应用程序, 并且还是免费的.
本书并未将J2EE作为一个单独主题进行介绍:而是在WAS中进行Web应用程序编程和部署的过程中介绍之. 这种安排十分妥当, 当然, 前提是大多数读者已经在其他课程中(或者通过参考联机文档帮助)对J2EE有了完整的了解.
喜欢在WAS中编写并测试Web应用程序的读者可从本书第Ⅲ部分开始阅读. 惟一的要求是具有Linux系统, 并需要和Internet连接, 以下载WAS AEs测试版. IBM UDB 7. 2测试版和本书用到的代码. 本书不需要其他软件.
第III部分可单独使用, 前提是系统管理员已经为读者准备好了开发环境, 如第3章. 第4章或附录A所述.
本书的编排细致精心, 避免前向引用, 并列出了详细操作步骤, 使用户可在家用计算机上利用WAS AEs免费测试版(但功能并不完整)进行编程. 这里所用的方法旨在演示用IBM的J2EE应用服务器(Web Sphere Application Server)来创建Web应用程序的机制, 而不涉及任何其他WebSphere产品, 以帮助读者准确理解WAS, 使IBM应用服务器成为公开产品.
本书还打破了利用图形界面进行编程. 调试. 部署和管理的依赖性. 通过使用Peri脚本, 以及Lynx和WebSphere Control Language(即WSCL, 在WAS 5. 0版中被wsadmin替代)等应用程序可实现上述操作. 另外还使用了很多其他常用的UNIX标准命令. Lynx提供了对HTML标题的快速浏览. Peri语言简单明了, 允许进行自动文本处理, 因此适于自动生成J2EE应用程序的部署描述符.
本书资源共分六部分, 可用作WAS教材. 第1部分主要讨论开发环境的准备, 第II部分主要讨论管理WAS必备的知识, 第III部分主要讨论WAS编程, 第IV部分主要讨论应力测试和代码调试, 第V部分主要讨论WAS监控. 调整和风险管理, 第VI部分是附录.
本书的手稿是在纽约的Total Computing & Network Design(TCND)公司完成的, 并经多位IBM专家认真审核. TCND提供了编程和代码测试所需的计算工具, 以及帮助生成代码清单的工具和应用程序.
Gramercy Toolkit和WASLED/WASMON应用程序通过Project-9创作完成, 同样归功于TCND. 在购买本书时, 可免费获取该工具包和应用程序, 它们只能用于教学目的(非商业用途):这就是说, 仅限于得到授权的计算机科学部门或者家庭计算机用户使用.
在www. tcnd. com上可获取Gramercy Toolkit和WASLED/WASMON的最新更新情况. 欢迎读者对本书提出宝贵意见, 如有问题, 可发送电子邮件到wasbook@tcnd. com询问.
Bassem W. Jamaleddine
Total Computing & Network Design, Inc