前言页 1
第一篇 入门篇 3
第1章 Jaguar CTS简介 3
1.1 Sybase企业应用服务器(Enterprise Application Server) 3
1.1.1 企业级的开发和提交 3
1.1.2 Enterprise Application Server 4
1.2 Jaguar CTS的基本概念 10
1.2.1 术语 10
1.2.2 概念 11
1.2.3 开发Jaguar 应用程序 11
1.2.4 Jaguar 运行环境 11
1.3 Jaguar CTS主要特性 12
1.3.1 Jaguar执行引擎 13
1.3.2 组件支持 13
1.3.3 网络协议支持 15
1.3.4 管理和开发工具 17
1.3.5 客户端会话和组件生命周期管理 19
1.3.6 命名服务 20
1.3.7 连接高速缓存 21
1.3.8 事务管理 21
1.3.9 线程安全特性 21
1.3.10 共享数据接口 22
1.3.11 结果集支持 22
1.3.12 声明安全性 23
1.4 本章小节 24
1.3.13 对继承过来的开放服务器应用程序的支持 24
第2章 安装和配置Jaguar 25
2.1 安装Jaguar CTS 25
2.1.1 安装Jaguar CTS 3.0 25
2.1.2 启动Jaguar 26
2.1.3 关闭Jaguar 27
2.2 Jaguar 管理器和安全管理器 28
2.2.1 启动Jaguar 管理器和安全管理器 28
2.2.2 Jaguar 管理器和安全管理器的单机版本 30
2.2.3 断开与Jaguar 的连接 30
2.3 配置Jaguar 30
2.3.1 校验用户环境 30
2.3.3 配置Jaguar服务器 31
2.3.2 添加或删除服务器 31
2.3.4 管理连接缓冲区 39
2.3.5 连接缓冲池的刷新 43
2.3.6 连接池的Ping功能 43
2.3.7 使用文件察看器和运行监视器 44
2.4 本章小结 46
第3章 创建一个Jaguar 应用程序 47
3.1 建立Jaguar 应用程序 47
3.1.1 应用程序的体系结构 47
3.1.2 设计Jaguar 应用程序 48
3.1.3 实现组件和客户端程序 53
3.1.4 提交应用程序 55
3.2 Jaguar 应用程序实例 58
3.2.1 启动Jaguar 服务器和Jaguar 管理器 58
3.2.2 定义包、组件和方法 59
3.2.4 编译stub源代码 63
3.2.5 编写服务器端代码 63
3.2.3 生成stub 63
3.2.6 编写客户端代码 64
3.2.7 创建HTML页并运行例子 68
3.3 本章小结 69
第二篇 基础篇 73
第4章 理解Jaguar 服务器的组件事务特性 73
4.1 Jaguar 的命名服务(naming service) 73
4.1.1 命名服务的运作方式 73
4.1.2 Jaguar CosNaming接口 76
4.1.3 配置Jaguar 的命名服务 79
4.1.4 在Jaguar 中使用LDAP服务器 79
4.2.1 集群的概念 80
4.2 Jaguar 群集与同步 80
4.2.2 配置一个集群 81
4.2.3 同步的概念 88
4.2.4 同步一个集群 89
4.3 负载平衡(Load balancing)和Failover 91
4.3.1 负载平衡 92
4.3.2 高可用性 92
4.3.3 自动故障处理(failover) 93
4.4 本章小结 95
第5章 安全配置 96
5.1 网络安全概述 96
5.1.1 公钥 96
5.3 信托集成 97
5.1.2 SSL、HTTPS和IIOPS 97
5.2 Jaguar 安全管理概述 97
5.4 使用Netscape在客户端管理证书 98
5.4.1 获取密钥对和证书 100
5.5 安全管理器的任务 100
5.5.1 安全管理器的管理 100
5.4.2 测试CA管理 101
5.5.3 密钥管理 104
5.5.4 证书管理 104
5.6 安全配置文件 108
5.6.1 什么是安全配置文件 108
5.6.2 配置安全配置文件 111
5.7.1 缺省配置的监听器 112
5.7 监听器 112
5.7.2 配置监听器 113
5.8 管理口令和操作系统认证 114
5.9 角色 115
5.9.1 定义新角色 116
5.9.2 删除角色 116
5.9.3 修改角色 116
5.9.4 给包添加角色 116
5.9.5 给角色指定用户和组 117
5.9.6 Jaguar 的Admin角色 119
5.9.7 刷新角色 119
5.10 安全配置示例 119
5.10.3 登录到Netscape token并装载测试CA 120
5.10.2 导出测试CA 120
5.10.1 安装证书的步骤 120
5.10.4 取得并安装一个私人证书 121
5.10.5 生成新的用户证书 123
5.10.6 生成一个安全配置文件并指定给一个监听器 124
5.10.7 将安全配置文件指定给监听器 124
5.10.8 运行SSL示例applet 125
5.10.9 调试SSL示例applet 127
5.11 本章小结 127
第三篇 建立组件 131
第6章 理解事务和组件的生命周期 131
6.1 组件的生命周期 131
6.1.1 组件生命周期中的状态 131
6.1.2 在组件中支持早期释放(Early Deactivation) 132
6.1.3 在组件中支持实例缓冲池(Instance Pooling) 133
6.1.4 Stateful和Stateless组件 133
6.2 Jaguar的事务处理模型 134
6.2.1 Jaguar事务如何工作 134
6.2.2 使用Jaguar事务的好处 135
6.2.3 定义事务的语法 135
6.2.4 举例 140
6.3 本章小结 141
第7章 定义包和组件 142
7.1 定义包 142
7.1.1 创建一个新的包 142
7.1.2 安装包到服务器 143
7.1.3 对包进行修改 144
7.1.4 配置包的属性 145
7.2 定义组件 146
7.2.1 安装组件 146
7.2.2 配置组件属性 148
7.3 本章小结 155
第8章 定义组件接口 156
8.1 在Jaguar管理器中定义接口 156
8.1.1 显示方法名 156
8.1.2 增加方法 157
8.1.3 改变方法 158
8.1.4 删除方法 158
8.1.5 方法属性 158
8.1.6 参数属性 159
8.1.7 参数和返回值的数据类型 160
8.2 从编译的Java文件中导入接口 161
8.2.1 为导入编写类、接口和JavaBeans代码 161
8.2.2 在Jaguar管理器中导入Java类或者接口* 163
8.3 从注册的ActiveX组件中导入接口 165
8.4 用IDL定义模块和接口 165
8.4.1 IDL 165
8.4.2 创建和编辑IDL模块 165
8.4.3 使用IDL编辑器窗口 167
8.4.4 创建和编辑接口 168
8.4.5 增添IDL文档注释 173
8.4.6 刷新HTML文档 173
8.4.8 导入现存的IDL模块 174
8.4.7 查看IDL模块的HTML文档 174
8.5 本章小结 175
第9章 创建Java组件 176
9.1 需求 176
9.1.1 开发 176
9.1.2 运行 176
9.2 创建Java组件的过程 176
9.2.1 定义组件接口和属性 176
9.2.2 选择实现的数据类型 177
9.2.3 编写Java源文件 180
9.2.4 提交Java组件 187
9.3 高级技术 189
9.3.1 在实例间共享数据 189
9.3.2 进行组件间调用 192
9.3.3 管理数据库连接 193
9.3.4 返回结果集 193
9.3.5 访问SSL客户端证书 193
9.3.6 设置事务状态 194
9.4 调试Java组件 194
9.4.1 开始之前 194
9.4.2 调试执行组件的步骤 195
9.4.3 调试类加载和卸载问题 196
9.5 本章小结 196
第10章 创建CORBA C++组件 198
10.1 创建C++组件的过程 198
10.2 定义C++组件 198
10.2.2 实例属性 199
10.2.1 事务属性 199
10.2.3 定义方法 200
10.3 生成需要的C++文件 202
10.3.1 生成需要的C++文件的过程 203
10.3.2 文件命名规范 203
10.3.3 C++组件文件实例 204
10.3.4 重新生成改变时C++组件文件 216
10.4 编写实现类 216
10.4.1 编写方法 216
10.5 编译源文件 218
10.5.1 Solaris SPARC 219
10.5.2 Windows NT 219
10.7 本章小结 220
10.6 调试C++组件 220
第11章 创建ActiveX组件 221
11.1 需求 221
11.2 创建ActiveX组件的一般过程 221
11.3 定义ActiveX组件 222
11.3.1 导入ActiveX组件 222
11.3.2 定义方法 224
11.3.3 定义返回值和参数类型 224
11.3.4 定义事务属性 226
11.3.5 定义实例属性 226
11.4 编写ActiveX组件 228
11.4.1 构造函数和析构函数 229
11.4.2 在组件之间共享数据 229
11.4.5 从ActiveX组件发送结果集 230
11.4.6 设置事务的状态 230
11.4.4 管理数据库连接 230
11.4.3 进行组件间调用 230
11.4.7 访问SSL客户证书 231
11.4.8 增加错误处理代码 231
11.5 提交ActiveX组件 231
11.6 本章小结 232
第12间 创建C组件 233
12.1 创建C组件的过程 233
12.2 定义组件接口和属性 233
12.2.1 定义组件接口 233
12.2.2 事务属性 233
12.3.1 生成C组件文件的过程 234
12.3 生成C组件文件 234
12.2.3 实例的属性 234
12.3.2 文件命名规范 235
12.3.3 示例 235
12.3.4 重新生成改变的C组件文件 239
12.4 编写C组件 239
12.4.1 定义实现函数 239
12.4.2 实现方法方式 242
12.4.3 需要特殊实例数据的组件 243
12.4.4 作为C++类的Wrappers的C组件 243
12.4.5 同远程数据库服务器交互的方法 244
12.4.6 返回结果集的方法 244
12.4.7 在C或C++组件间共享数据 245
12.4.9 自定义组件的创建和破坏 248
12.4.8 设置事务状态的方法 248
12.5 编译C组件 249
12.5.1 在Solaris SPARC上建立组件 249
12.4.10 在C组件中处理错误 249
12.5.2 在Windows NT建立组件 251
12.6 调试C组件 254
12.6.1 运行服务器的调试版本 254
12.6.2 调试组件 255
12.6.3 决定方法实际的函数名 255
12.7 本章小结 256
13.1.1 服务组件的概念 257
13.1.2 GenericService接口 257
13.1 简介 257
第13章 创建服务组件 257
13.1.3 实现其他接口 258
13.2 创建服务组件 258
13.2.1 定义组件接口和属性 258
13.2.2 实现GenericService接口方法 259
13.2.3 实现其他需要的方法 261
13.2.4 作为Jaguar服务安装组件 261
13.3 刷新服务组件 263
13.4 本章小结 263
第四篇 建立客户应用 267
第14章 建立与CORBA兼容的Java客户应用 267
14.1 需求 267
14.2.2 Jaguar Java ORB运行 268
14.3 创建与CORBA兼容的Java客户应用的过程 268
14.2.1 关于CORBA Java语言绑定 268
14.2 概览 268
14.4 生成Java stub 269
14.4.1 在Jaguar管理器中生成stub 269
14.4.2 编译stub 271
14.5 实例化代理对象 271
14.5.1 使用CORBA命名服务实例化代理 273
14.5.2 用JNDI实例化代理对象 280
14.5.3 不使用命名服务实例化代理对象 283
19.3 连接的存储和安全性 286
14.6.1 参数和返回值 288
14.6.2 返回结果集的方法(method) 288
14.6 执行组件方法 288
14.6.3 方法调用示例 289
14.7 清理客户资源 289
14.8 串行化(serialize)组件实例引用 289
14.9 处理例外 290
14.9.1 CORBA系统例外 290
14.9.2 用户定义例外 291
14.10 提交Java客户程序 292
14.10.1 提交Applets 292
14.10.2 提交Applications 293
14.10.3 需要的类 293
14.11 使用其他的CORBA ORB实现组件调用 294
14.11.1 使用第三方客户端ORB连接到Jaguar 294
14.11.2 使用Jaguar客户端ORB连接到第三方ORB 295
14.12 本章小结 295
15.1.2 运行 297
15.1 需求 297
第15章 建立Jaguar EJB Java客户应用 297
15.1.1 开发 297
15.4 生成Jaguar EJB Java stub 298
15.3 创建JaguarEJB客户应用的过程 298
15.2 调整Jaguar 1.1客户程序使之在3.0版本中运行 298
15.4.1 生成stub源文件 299
15.4.2 为所有组件生成Java stub 300
15.4.3 生成的包目录和源文件 300
15.5 编写Java Applet或Application 301
15.5.1 导入包 301
15.5.2 创建stub对象实例 302
15.5.3 执行组件方法 303
15.5.4 处理错误 305
15.5.5 破坏stub实例 305
15.5.6 JDBC结果集处理 306
15.6.1 编译Applet或Java Application* 308
15.6.2 运行Applet 308
15.6 编译和运行Java客户程序 308
15.6.3 运行Java Application 309
15.6.4 需要的类 310
15.7 本章小结 310
第16章 建立CORBA C++客户应用 311
16.1 概览 311
16.2 创建CORBA C++客户应用的方法 311
16.3 生成stub 312
16.4 编写CORBA C++客户程序 312
16.4.1 使用Jaguar命名服务 313
16.4.2 不使用Jaguar命名服务实例化stub 317
16.4.3 建立一个安全的会话 320
16.4.4 请求方法 326
16.4.5 处理结果集 326
16.4.6 建立SSL Callback组件 331
16.4.7 处理例外 333
16.5 编译C++客户程序 334
16.6 提交C++客户应用 335
16.7 Jaguar C++应用程序实例 335
16.7.1 定义包、组件和方法 336
16.7.2 生成stub、skeleton和实现模板 336
16.7.3 编写服务器端代码 337
16.7.4 编写客户端代码 339
16.8 使用其他的CORBA ORB实现组件调用 343
16.7.6 运行应用程序 343
16.7.5 编译客户端 343
16.9 本章小结 344
第17章 建立ActiveX客户应用和MASP 345
17.1 ActiveX客户应用简介 345
17.2 需求 345
17.3 改编1.1版本的客户端以在3.0版本下运行 346
17.4 创建ActiveX客户的一般过程 346
17.5 生成组件的.tlb和.reg文件 347
17.6 开发并测试ActiveX客户 349
17.6.1 代码的例外处理 349
17.6.2 实例化代理对象 350
17.6.3 初始化服务器组件 351
17.6.4 调用组件的方法 352
17.6.5 释放代理对象 357
17.7 提交ActiveX客户 358
17.8 创建ActiveX客户应用示例 360
17.9 执行作为存储过程的方法(MASP) 365
17.9.1 创建命令调用 366
17.9.2 局限性 366
17.9.3 在isql中使用MASP 367
17.9.4 在编程工具中使用MASP 367
17.10 本章小结 368
第五篇 高级特性 371
第18章 发送结果集 371
18.1 使用Java发送结果集 371
18.1.1 转发结果集对象 371
18.1.2 按行发送结果集 372
18.2 从PowerBuilder组件中发送结果集 375
18.3.1 使用ResultsPassthrough转发结果集 376
18.3.2 按行发送结果集 376
18.3 从ActiveX组件中发送结果集 376
18.4 从C或C++组件中发送结果集 380
18.5 本章小结 385
第19章 连接管理 386
19.1 连接管理概览 386
19.2 什么时候使用连接管理 386
19.4 数据库的连通性 387
19.4.1 Sybase Adaptive Server Anywhere 387
19.4.2 Sybase Adaptive Server Enterprise和网关 387
19.4.4 其他数据库 388
19.4.3 Oracle数据库 388
19.5 定义连接缓冲 389
19.6 使用Java连接管理类 389
19.6.1 JCM类 389
19.6.2 Java连接管理示例 389
19.7 在C、C++和ActiveX组件中使用连接管理程序 392
19.7.1 ODBC连接缓冲 392
19.7.2 Client-Library连接缓冲 395
19.7.3 Oracle连接缓冲 397
19.8 在PowerBuilder组件中使用缓冲连接 400
19.9 连接管理的指导方针 400
19.9.1 避免结果以前的错误 400
19.10 本章小结 401
19.9.2 连接和高速缓冲句柄 401
第20章 建立Java Servlet 402
20.1 Java Servlet简介 402
20.1.1 Jaguar 中Servlet的使用 402
20.1.2 Java Servlet和Java组件 402
20.2 为Jaguar编写Servlet 403
20.2.1 高速连接缓存 403
20.2.2 组件请求 403
20.2.3 线程 403
20.2.4 记录日志 404
20.3 安装和配置Servlet 404
20.3.1 安装Servlet 404
20.3.2 配置Servlet属性 405
20.3.3 提交和刷新Servlet类 409
20.4 服务器属性中的Servlet设置 410
20.5 本章小结 412
第21章 从Open Server移植到Jaguar 413
21.1 代码修改与示例 414
21.1.1 修改主函数 414
21.1.2 Open Server属性 417
21.1.3 线程间的代码安全性 418
21.1.4 DLL、共享对象和makefile 419
21.2 修改应用编程接口(API)和新的事件句柄 421
21.2.1 修改的API 421
21.2.2 事件句柄属性 423
21.3.1 安装事件句柄 424
21.3 Jaguar配置 424
21.3.2 配置一个Open Server监听器 425
21.4 其他事件句柄操作 426
21.4.1 事件句柄的调用惯例 426
21.4.2 Initialization、run、start和exit事件 426
21.4.3 Connect和disconnect句柄 427
21.4.4 使用Visual C++IDE创建DLL 429
附录A Sybase Web解决方案产品配置 432
A.1 Sybase Web解决方案产品配置建议 432
A.1.1 基于传统技术的动态数据发行的Web应用 432
A.1.2 新型的Web OLTP应用 433
A.2 建议的产品打包策略 433
附录B 名词术语英中文对照表 434
21.5 本章小结 530