第1章 根据项目需求选择合适的技术 1
1.1 项目需求 1
1.1.1 访问用户 1
1.1.2 拍卖行需求 1
1.1.3 用户需求 1
1.1.4 建立项目模型 2
1.1.5 活动图 4
1.2 选择软件 4
1.3 Duke的拍卖行示例 5
1.3.1 主页 5
1.3.2 注册页面 6
1.3.3 今日新拍卖项目页面 6
1.3.4 今日结束拍卖项目页面 6
1.3.5 所有项目页面 7
1.3.6 搜索项目页面 7
1.3.7 拍卖项目发布页面 8
第2章 拍卖行应用程序 9
2.1 基于Enterprise Bean的多层应用程序 9
2.1.1 客户端程序和多层体系结构 10
2.1.2 实体bean和会话bean的区别 11
2.1.3 拍卖行的工作流图 11
2.1.4 开发和运行应用程序 13
2.1.5 多层应用程序应如何工作 13
2.2 在示例程序中是如何使用Enterprise Bean的 14
2.3 Auctionservlet 14
2.4 实体bean类 15
2.4.1 AuctionItemBean 15
2.4.2 拍卖项目表 17
2.4.3 RegistrationBean 17
2.4.4 注册表 17
2.5 会话bean类 18
2.5.1 Bidder会话bean 18
2.5.2 Seller会话bean 19
2.6 容器类 19
2.7 检查由容器管理的bean 19
2.7.1 成员变量 19
2.7.2 Create方法 20
2.7.3 Entity Context方法 20
2.7.4 Load方法 20
2.7.5 Store方法 20
2.7.6 连接池 21
2.7.7 调度描述符 21
2.7.8 XML调度描述符 21
2.8 由容器管理的finder方法 22
2.8.1 基于finder方法的搜索 22
2.8.2 Auctionservlet.SearchItems 23
2.8.3 Bidderbean.getMatchingItemsList 23
2.8.4 AuctionItemHome.findAll MatchingItems 24
2.8.5 AuctionItemBean调度描述符 24
2.9 AuctionItemBean 24
2.10 BidderBean 27
第3章 数据和事务管理 30
3.1 bean管理的连续性和JDBC平台 30
3.1.1 连接数据库 30
3.1.2 Create方法 31
3.1.3 Load方法 31
3.1.4 Refresh方法 32
3.1.5 Store方法 33
3.1.6 Find方法 33
3.2 管理事务 34
3.2.1 为什么要管理事务 34
3.2.2 会话同步 34
3.2.3 容器管理示例 34
3.2.4 会话同步代码 35
3.2.5 事务提交模式 36
3.3 bean管理的Finder方法 39
3.3.1 Anctionservlets.searchItems 40
3.3.2 SearchBean 41
3.3.3 数据库连接 41
3.3.4 GetMatchingItemsList方法 42
3.3.5 Create方法 43
3.4 Search Bean 43
第4章 分布式计算 45
4.1 查找服务 45
4.2 Java名字和目录接口 46
4.2.1 CORBA名服务 47
4.2.2 可互操作的对象引用 50
4.3 RMI查找服务 50
4.3.1 Internet Inter-ORB协议上的RMI 51
4.3.2 提高查找性能 52
4.4 RMI注册服务器 53
4.4.1 关于RMI 53
4.4.2 拍卖行应用程序中的RMI 53
4.4.3 建立远程连接 56
4.4.4 RegistrationServer类 57
4.4.5 Registration接口 62
4.4.6 RegistrationHome接口 62
4.4.7 ReturnResults接口 63
4.4.8 SellerBean类 63
4.5 公共对象请求代理体系结构(CORBA) 65
4.5.1 IDL映射策略 66
4.5.2 快速参考 66
4.5.3 其他IDL关键字和类型 68
4.5.4 拍卖行应用程序中的CORBA 70
4.5.5 对象请求代理程序 72
4.5.6 Helper和Holder类 75
4.5.7 无用空间回收 75
4.5.8 CORBA的回调 75
4.5.9 使用Any类型 78
4.5.10 小结 82
4.6 JDBC技术 82
4.6.1 JDBC驱动程序 82
4.6.2 数据库连接 83
4.6.3 语句 83
4.6.4 将数据库结果保存在Cache中 85
4.6.5 结果集 85
4.6.6 滚动结果集 85
4.6.7 控制事务 90
4.6.8 转义字符 92
4.6.9 映射数据库类型 93
4.6.10 映射数据类型 94
4.7 servlet 94
4.7.1 HttpServlet 94
4.7.2 Init方法 95
4.7.3 destroy方法 95
4.7.4 service方法 96
4.7.5 HTTP请求 97
4.7.6 在servlet中使用Cookie 97
4.7.7 HTTP错误代码 101
4.7.8 读取GET和POST值 101
4.7.9 线程 105
4.7.10 HTTPS 106
第5章 JNI技术 107
5.1 JNI实例 107
5.1.1 关于这个例子 107
5.1.2 生成头文件 108
5.1.3 方法标记 108
5.1.4 实现native方法 109
5.1.5 编译动态或共享对象库 110
5.1.6 运行实例 110
5.2 字符串和数组 111
5.2.1 传递字符串 111
5.2.2 传递数组 112
5.2.3 打印数组 113
5.2.4 对象数组 114
5.2.5 多维数组 114
5.3 程序设计中的其他问题 117
5.3.1 语言问题 117
5.3.2 调用方法 119
5.3.3 访问域 121
5.3.4 线程和同步 122
5.3.5 内存问题 123
5.3.6 调用 124
5.3.7 附加线程 125
第6章 Project Swing:建立用户界面 127
6.1 组件和数据模型 127
6.1.1 轻量级组件 128
6.1.2 组件排序 128
6.1.3 专门事件处理 144
6.1.4 Project Swing说明 144
6.2 打印API 144
6.2.1 java.awt.print包中的内容 145
6.2.2 打印一个AWT组件 145
6.2.3 打印一个Project Swing组件 147
6.2.4 打印Project Swing图形 147
6.2.5 Print对话框 147
6.2.6 页面设置对话框 149
6.2.7 打印页集合 149
6.3 高级打印 150
6.3.1 每一页上多个组件 150
6.3.2 大于一页的组件 151
6.3.3 打印一个JTable组件 153
6.3.4 打印一个销售报表 153
6.4 AuctionClient 154
6.5 Report 163
6.6 ScaleReport 165
第7章 调试applet、应用程序和servlet 170
7.1 快速查找急需解决的问题所对应的节 170
7.2 收集例证 170
7.2.1 安装与环境 171
7.2.2 CLASSPATH 171
7.2.3 类装载 172
7.2.4 包含调试代码 172
7.2.5 在运行时打开调试信息 172
7.2.6 在运行时创建调试和产品的版本 173
7.2.7 使用诊断方法 173
7.2.8 加入调试信息 174
7.3 运行测试和分析 175
7.3.1 了解Jdb 175
7.3.2 简单的jdb检测驱动 175
7.3.3 远程调试 179
7.3.4 使用自动设置的调试 181
7.3.5 创建一个会话日志 182
7.4 servlet调试 182
7.4.1 在调试模式下运行Servletrunner 183
7.4.2 在调试模式下运行Java Web Server 184
7.5 抽象窗口工具箱的调试 185
7.6 分析栈轨迹 187
7.6.1 向Java虚拟机发送一个信号 187
7.6.2 Java虚拟机产生一个栈轨迹 187
7.6.3 核心文件 187
7.6.4 使用调试工具或API调用 187
7.6.5 哪个版本产生栈轨迹? 188
7.6.6 哪个平台产生了栈轨迹? 188
7.6.7 使用的是哪个线程包? 188
7.6.8 线程的状态 188
7.6.9 考查监视器 189
7.6.10 应用实例 191
7.6.11 小结 193
7.6.12 栈轨迹的实例 193
7.7 版本问题 197
7.7.1 JDK1.0.2配置 197
7.7.2 JDK1.1配置 197
7.7.3 Java 2平台的配置 197
7.7.4 Netscape的配置 198
7.7.5 Internet Explorer的配置 198
第8章 性能技术 199
8.1 提高applet的下载速度 199
8.1.1 将图像封装在一个类中 199
8.1.2 使用JAR文件 200
8.2 线程池 201
8.3 连接池 203
8.3.1 外罩类 203
8.3.2 死锁和挂起 208
8.3.3 关闭连接 208
8.3.4 程序示例 209
8.4 性能特征和工具 212
8.4.1 Java虚拟机特性 212
8.4.2 Just-In-Time编译器 215
8.4.3 第三方工具 217
8.5 性能分析 217
8.5.1 分析和记录 217
8.5.2 分析一个程序 217
8.5.3 操作系统性能工具 221
8.6 缓存的客户/服务器应用程序 223
8.6.1 缓存一个对象 223
9.6.2 缓存多个对象 225
第9章 配置拍卖应用程序 233
9.1 JAR文件格式 233
9.1.1 捆绑和配置HTML文件 233
9.1.2 捆绑和配置Enterprise Bean 234
9.1.3 捆绑和配置applet 237
9.2 Solaris操作系统上的配置 238
9.2.1 下载软件 238
9.2.2 解压下载文件 238
9.2.3 安装Java Plug-In 238
9.2.4 安装Java Plug-In补丁 239
9.2.5 安装Netscape Communicator 239
9.2.6 检查安装 240
9.2.7 安装HTML Converter 240
9.2.8 安全策略文件 240
9.2.9 运行Administration applet 241
9.3 在Win32平台上配置 242
9.3.1 获得下载文件 242
9.3.2 安装带有Java Plug-In的JRE 242
9.3.3 安装HTMLConverter 242
9.3.4 安全策略文件 242
9.3.5 运行Administration applet 243
9.3.6 工作原理 244
第10章 带签名的applet和安全管理器 245
10.1 本章内容 245
10.2 带有签名的applet 245
10.2.1 带有签名的applet的例子 245
10.2.2 Intranet开发者 247
10.2.3 最终用户 248
10.2.4 使用策略文件运行一个应用程序 249
10.2.5 在JDK1.1中进行applet签名 249
10.3 编写一个安全管理器 249
10.3.1 FileIO程序 249
10.3.2 PasswordSecurityManager类 251
10.3.3 参考信息 254
附录A 安全和权限 255
附录B 类、方法和权限 267
附录C 安全管理器方法 281
附录D API参考 283