第1篇 入门篇 2
第1章 WebLogic概述 2
1.1什么是WebLogic系统 2
1.2 WebLogic的历史及发展 2
1.3 WebLogic支持的平台及数据库 3
1.4 WebLogic 10g/11g新特性 3
1.5 WebLogic的技术架构 3
1.6 WebLogic系统的关键特性 4
1.7 WebLogic与其他产品横向与纵向的比较 4
第2章 Windows平台WebLogic的简单安装 6
2.1安装前的准备工作 6
2.2安装WebLogic的详细步骤 6
2.3创建一个WebLogic域 11
2.4启动WebLogic Server 16
2.5测试安装 17
第2篇 基础篇 20
第3章 WebLogic的基本概念 20
3.1域Domain 20
3.1.1域的概念、范围和限制 20
3.1.2为什么要使用域 21
3.2服务器 21
3.2.1管理服务器 21
3.2.2受管服务器 22
3.3计算机Machine 23
3.3.1 Machine的概念 23
3.3.2为什么要使用Machine 23
3.4集群Cluster 24
3.4.1集群的概念 24
3.4.2主要功能 24
3.4.3基本集群架构 25
3.4.4多层集群架构 25
3.4.5何时使用多层集群架构 25
3.4.6基本集群架构的优缺点 26
3.4.7多层集群架构的优缺点 26
3.4.8代理服务器 26
3.4.9基本集群代理架构 27
3.4.10多层集群代理架构 27
3.5开发模式与生产模式 28
第4章 WebLogic主要目录结构 29
4.1总体目录结构分布 29
4.2 user_projects目录 30
4.3 utils目录 31
4.4 WebLogic home目录 31
4.5其他目录 31
第5章 WebLogic配置相关文件 33
5.1启动与服务相关的几个文件 33
5.1.1 setDomainEnv.cmd/setDomainEnv.sh 33
5.1.2 startManagedWebLogic.cmd/startManagedWebLogic.sh 33
5.1.3 startWebLogic.cmd/startWebLogic.sh 33
5.1.4 stopWebLogic.cmd/stopWebLogic.sh 34
5.1.5 stopManagedWebLogic.cmd/stopManagedWebLogic.sh 34
5.2系统配置文件config.xml 34
5.2.1 WebLogic管理和config.xml文件概述 34
5.2.2何时去编辑config.xml 35
5.2.3 config.xml文件里的内容 35
5.3属性文件weblogic.xml 36
5.3.1概要说明 36
5.3.2可配置的属性详解 36
5.4属性文件web.xml 50
5.4.1概要说明 50
5.4.2可配置的属性详解 51
5.5日志文件 58
5.5.1域日志 58
5.5.2服务器日志server.log 58
5.5.3访问日志access.log 58
第6章 Java虚拟机(JVM)相关知识 60
6.1 JVM简介 60
6.2常见JDK的内存机制 60
6.3 Java的GC (Garbage Collection)原理 61
6.4 JVM中的ClassLoader 61
6.4.1 ClassLoader概述 61
6.4.2 Java类加载器 62
6.4.3 WebLogic类加载器 63
6.4.4 WebLogic Server对应用程序类加载的机制 65
第3篇 实施篇 76
第7章 集群的安装与配置 76
7.1集群知识回顾 76
7.1.1集群概念 76
7.1.2集群的体系结构 76
7.2创建集群的条件 77
7.3代理服务器Proxy 78
7.3.1代理服务的角色和作用 78
7.3.2代理服务器的配置 79
7.3.3 F5硬件负载平衡器及其他 81
7.4如何创建集群 81
7.4.1集群环境确定 81
7.4.2集群配置步骤 82
7.5集群的启动 90
7.5.1管理服务器Admin Server的启动 90
7.5.2受管服务器Managed Server的启动 91
7.6集群中应用的部署 93
7.7集群测试 95
7.8 Session复制 96
7.8.1 Session复制的原理 96
7.8.2 Session复制的配置 97
7.9新建启动脚本 99
7.9.1启动服务器脚本 99
7.9.2启动被管服务器脚本 99
7.9.3启动代理服务器脚本 100
第8章 WebLogic常用的管理操作 101
8.1添加删除服务Service 101
8.1.1消息传送 101
8.1.2 JDBC 101
8.1.3持久性存储 101
8.1.4路径服务 102
8.1.5外部JNDI提供程序 102
8.1.6工作上下文 102
8.1.7 XML注册表 102
8.1.8 XML实体高速缓存 102
8.1.9 jCOM 102
8.1.10邮件会话 102
8.1.11 File T3 103
8.1.12 JTA 103
8.2 Machine配置 103
8.3 JDBC配置 103
8.4 Node Manager的配置 107
8.5 JMS配置 108
8.6 WTC配置 110
8.7内存参数的修改 111
8.8更换JDK 112
8.9 WebLogic如何打补丁 112
第9章 与开源SSH框架的兼容 114
9.1 MVC模型 114
9.1.1 MVC简介 114
9.1.2 MVC如何工作 114
9.1.3为什么要使用MVC(优点) 115
9.1.4 MVC的缺点 115
9.2开源框架综述 116
9.2.1 Struts简介 116
9.2.2 Spring简介 117
9.2.3 Hibernate简介 118
9.3 WebLogic与Spring的兼容性 119
9.3.1集群化部署Spring应用 120
9.3.2 Spring会话复制 120
9.3.3集群化的Spring远程控制 120
9.3.4对Spring组件的控制台支持 120
9.3.5 Web服务支持 121
9.3.6安全性框架 122
9.3.7分布式事务支持 122
9.3.8 WebLogic Server上的Spring Framework版本兼容 122
9.3.9 Spring中遇到的问题 125
9.4 WebLogic与 Struts的兼容性 126
9.4.1调试和日志记录Struts应用程序 126
9.4.2调试WebLogic类加载器 127
9.5 WebLogic与Hibernate的兼容性 130
9.5.1 Hibernate中可能遇到的问题 130
9.5.2问题原因分析 131
9.5.3解决方法 132
9.6从Tomcat开源项目移植入WebLogic问题总结 132
9.6.1 JDK和Servlet版本问题 132
9.6.2 Include问题 132
9.6.3打包后Log4j支持问题 133
9.6.4 Axis远程调用.net Web Service问题 134
第4篇 诊断篇 136
第10章 如何发现问题 136
10.1 WebLogic监控 136
10.1.1操作系统检查 136
10.1.2网络检查 136
10.1.3 WebLogic检查 136
10.2日志文件的获取 139
10.2.1 server_name.log 139
10.2.2 access.log 140
10.2.3 GC.log 140
10.2.4 domain_ name.log 140
10.2.5 jms.messages.log 140
10.3启动脚本与配置参数文件的获取 140
10.4 Thread dump的获取和分析 141
10.4.1什么是Thread dump 141
10.4.2如何获取Thread dump 141
10.4.3 Thread dump分析说明 141
10.4.4实际环境中Thread dump分析示例 143
10.5 Heap dump的获取和分析 149
10.5.1什么是Heap dump 149
10.5.2如何获取Java Heap dump 149
10.5.3什么是Jps和Jmap 149
10.5.4 Jmap的作用 149
10.5.5 Jmap的分析方法 151
10.6关于Java dump的一些常见问题 153
第11章 常规服务器挂起故障 154
11.1服务器挂起概述 154
11.1.1什么是服务器挂起 154
11.1.2服务器挂起分类 154
11.1.3服务器挂起症状 154
11.2常规服务器挂起故障 155
11.2.1服务器挂起成因总述 155
11.2.2服务器挂起具体成因 155
11.3服务器挂起探查 156
11.3.1基本探查步骤 156
11.3.2查看执行线程运行状态 156
11.3.3创建Thread dump 157
11.3.4初始探查结果分析 158
11.4故障排除检查清单 162
11.4.1垃圾回收导致服务器挂起 163
11.4.2代码优化中服务器挂起 164
11.4.3应用程序死锁导致服务器挂起 164
11.4.4 JDBC中的服务器挂起 166
11.4.5 EJB RMI服务器挂起 172
11.4.6 JSP编译导致服务器挂起 175
第12章 异常高CPU占用率故障 176
12.1异常高CPU占用率概述 176
12.1.1回顾:进程、线程和CPU占用率 176
12.1.2异常高CPU占用率的故障症状 176
12.2异常高CPU占用率探查 176
12.2.1探查概述 176
12.2.2在Solaris平台上探查 176
12.2.3在HP-UX平台上探查 179
12.2.4在Linux平台上探查 180
12.2.5在AIX平台上探查 181
12.2.6在Windows平台上探查 184
12.3异常高CPU占用率故障排除策略及相关资源 185
第13章 执行线程丢失故障 186
13.1 WLS的执行线程 186
13.2丢失线程时的故障症状 186
13.2.1故障症状概述 186
13.2.2线程丢失时Thread dump信息示例 187
13.3线程丢失原因及相应的解决方法分析 187
13.3.1线程丢失原因概述 187
13.3.2 JVM堆内存不足造成的线程丢失 188
13.3.3应用程序的异常处理造成的线程丢失 189
13.4故障排除检查清单 189
第14章 服务器core dump分析 190
14.1什么是服务器core dump文件 190
14.2什么情况下可以导致core dump文件的生成 190
14.3服务器core dump探查 190
14.3.1探查概述 190
14.3.2探查Solaris系统 191
14.3.3探查Linux系统 191
14.3.4探查HPUX系统 195
14.3.5探查AIX系统 196
14.3.6探查Windows系统 197
14.3.7未提供调试器的系统探查 197
14.4未生成core文件的解决办法 199
14.4.1确保服务器发生故障时可以产生core dump文件 199
14.4.2备用方案:获得最后时刻的Thread dump 199
14.5总结:故障排查清单 199
第15章 打开文件过多故障 200
15.1打开的文件过多概述 200
15.2相关知识回顾 200
15.2.1在什么时候会打开文件 200
15.2.2文件描述符 200
15.2.3与文件描述符有关的系统参数 201
15.2.4文件描述符的释放 202
15.3打开的文件过多问题及故障 202
15.3.1与打开的文件过多有关的问题 202
15.3.2与打开的文件过多有关的故障症状 203
15.4打开的文件数过多问题探查 203
15.4.1服务器日志文件描述符极限 204
15.4.2类UNIX平台上探查 204
15.4.3 Windows平台上探查 205
15.5故障排除策略 206
15.5.1故障排除策略一 206
15.5.2故障排除策略二 206
第16章 内存不足和内存泄漏故障 207
16.1内存不足/内存泄漏错误概述 207
16.1.1内存不足/内存泄漏简介 207
16.1.2内存不足分类 207
16.2关键知识点回顾 207
16.2.1 Java堆 207
16.2.2本地内存 208
16.2.3进程大小 208
16.2.4垃圾回收 208
16.2.5可及对象及对象的可及程度 208
16.2.6虚拟内存与物理内存 208
16.2.7 WTC: WebLogic Tuxedo Connector 209
16.3内存不足错误分类探讨 209
16.3.1 Java堆内存不足错误 210
16.3.2本地内存不足错误 214
16.3.3 WTC及WTC内存不足问题分析 217
16.4故障排除检查清单 220
16.4.1故障排除检查清单综述 220
16.4.2 Java堆内存不足故障排除检查清单 221
16.4.3本地内存不足故障排除检查清单 221
16.4.4 WTC内存不足故障排除检查清单 221
第17章 不可恢复堆栈溢出故障 222
17.1什么情况下可导致堆栈溢出 222
17.2堆栈溢出的故障症状 222
17.3堆栈溢出探查 223
17.3.1确定可以利用的信息 223
17.3.2查看日志中的堆栈跟踪 223
17.3.3探查二进制核心文件 223
17.4堆栈溢出的解决办法 224
17.5故障排除检查清单 225
第18章 缓存满异常故障 226
18.1实体bean池加载和缓存加载 226
18.1.1实体bean概述 226
18.1.2实体bean池加载和缓存加载 226
18.1.3实体bean的生命周期 226
18.1.4实体bean池和缓存大小 227
18.2有状态会话bean缓存加载 227
18.2.1有状态会话bean回顾 227
18.2.2有状态会话bean的生命周期 227
18.2.3有状态会话bean参数 228
18.2.4 EJB缓存和JVM堆 228
18.3缓存满问题的故障症状和成因 228
18.4探查缓存满问题 228
18.4.1精确定位缓存满问题 228
18.4.2探查缓存满问题 229
18.4.3缓存满问题的成因 229
18.5故障排除检查清单 232
第19章 Java虚拟机GC及其相关问题 233
19.1 JVM的GC概述 233
19.2回顾:JVM的内存管理及GC算法 233
19.2.1栈内存Stack 233
19.2.2堆内存Heap 234
19.2.3常用的GC算法 235
19.3 GC统计信息 237
19.4 JVM常用命令行参数设置 239
19.4.1通用参数 239
19.4.2 Java虚拟机几个命令行参数说明 240
19.4.3 Sun的JVM参数 242
19.4.4 IBM的JVM参数 244
19.5 JVM性能优化 244
19.5.1优化目标 245
19.5.2如何设置GC 245
19.5.3如何监视JVM GC 245
19.5.4性能优化 246
第20章 JMS消息重发故障 249
20.1 JMS简介 249
20.2问题描述 249
20.3问题定位 249
20.3.1为什么JMS消息会被重新发送 249
20.3.2 JMS重新发送故障的两种类型 250
20.3.3 JMS重新发送模式问题 250
20.4 JMS确认 250
20.5事务会话 251
20.5.1使用JMS事务会话的操作 251
20.5.2 JMS事务会话的适用范围限制 251
20.5.3容器管理的事务 251
20.5.4 bean管理的事务 251
20.6设置确认模式 252
20.7诊断JMS重新发送问题 252
20.7.1应用程序设计 252
20.7.2应用程序代码诊断 252
20.7.3 JMS调试 254
20.8检查“恶性”消息 255
20.9故障排除检查清单 255
第21章 常规JDBC问题故障 256
21.1 JDBC概述 256
21.1.1什么是JDBC及其作用 256
21.1.2 JDBC驱动程序实现分类 256
21.1.3 WebLogic常用的JDBC驱动 257
21.2 WebLogic中的JDBC配置 257
21.2.1连接池 257
21.2.2数据源 259
21.3与JDBC有关的故障 260
21.3.1由创建连接池造成的WLS启动缓慢 260
21.3.2连接池创建失败 261
21.3.3 JDBC配置不正确造成的连接池创建问题 262
21.3.4资源异常问题 265
21.3.5 ORA-01000打开的游标数过多错误 267
21.3.6 ORA-03113连接中断错误或01012未登录错误 268
21.3.7防火墙关闭空闲连接问题 269
21.3.8防火墙关闭空闲JMS连接问题 270
21.3.9 WebLogic Server崩溃 270
21.3.10内存泄漏故障 271
21.3.11连接被重建的问题 271
21.4针对生产环境中JDBC的调整建议 271
21.5故障排除检查清单 272
21.5.1故障排除策略 272
21.5.2其他故障排除策略 272
第22章 全局事务与JTA的支持故障 274
22.1什么是分布式事务与全局事务 274
22.1.1事务及事务操作ACID特性 274
22.1.2分布式事务处理 274
22.1.3全局事务 275
22.1.4 XA与两阶段提交协议 275
22.2如何使用全局事务 276
22.2.1配置连接池和数据源 276
22.2.2为数据源配置事务选项 277
22.2.3全局事务样例 277
22.3相关的WebLogic中JTA设置问题 281
第23章 中文乱码相关问题 282
23.1引言 282
23.2 JSP与页面参数之间的乱码 283
23.3 Java与数据库之间的乱码 284
23.4 Java与文件/流之间的乱码 285
23.5其他 285
23.6关于WebLogic的国际化 288
23.7关于WebLogic的日志乱码 290
第24章 WebLogic集群故障 292
24.1问题定位 292
24.1.1集群概述 292
24.1.2如何检测集群故障 292
24.2集群常规配置 293
24.2.1一般性配置 293
24.2.2 Multicast相关配置 294
24.3集群负载均衡 295
24.3.1负载均衡两方面的定义 295
24.3.2 Servlet和JSP的负载平衡 295
24.3.3 EJB和RMI对象的负载平衡 296
24.3.4 JMS的负载平衡 297
24.3.5 JDBC连接的负载平衡 297
24.3.6负载平衡器的算法 297
24.3.7方法补充——共存对象的优化 301
24.3.8负载平衡器的故障检测功能 303
24.3.9非负载平衡层与负载平衡层的对比 303
24.3.10负载均衡的优缺点 305
24.4集群故障转移与复制 305
24.4.1 Servlet和JSP的复制和故障转移 305
24.4.2 EJB和RMI的复制和故障转移 308
第25章 组播错误分析 310
25.1组播错误概述 310
25.1.1组播的错误表现形式 310
25.1.2组播错误消息 310
25.2组播错误的成因 310
25.3组播问题探究 311
25.4组播的测试和调试 313
25.4.1组播测试 313
25.4.2组播调试 313
25.5组播排除策略 314
第26章 使用代理插件时的HTTP负载平衡不均故障 315
26.1回顾:常见的代理插件 315
26.1.1 Apache代理插件 315
26.1.2 IIS代理插件 317
26.2使用代理插件的HTTP负载平衡不均的症状和成因 319
26.2.1负载不均症状 319
26.2.2负载不均成因 319
26.3负载不均探查 319
26.3.1探查基本步骤 319
26.3.2启动调试 319
26.3.3调试信息分析 322
26.4问题排除检查清单 325
第27章 HTTP会话复制失败故障 326
27.1回顾:HTTP会话、持久性和复制 326
27.1.1 HTTP Session 326
27.1.2 HTTP会话持久性 326
27.1.3 HTTP会话Failover 326
27.2复制失败的成因和故障症状 327
27.2.1 HTTP会话复制失败的故障症状 327
27.2.2 HTTP会话复制失败的可能成因 327
27.3探查HTTP会话复制失败 328
27.3.1探查会话复制失败的基本步骤 328
27.3.2启用调试 328
27.3.3调试信息分析 329
27.3.4问题排查 330
27.4 HTTP会话性能因素 332
27.5故障排除清单 332
27.5.1收集诊断数据 332
27.5.2确认配置 333
第28章 类转换异常故障 334
28.1回顾:Java类、转换和类加载器 334
28.2类转换异常的故障症状和成因 335
28.3探查类转换异常 335
28.3.1应用程序诊断 335
28.3.2已知的WebLogic Server类转换问题 336
28.4故障排除检查清单 337
第29章 SSL问题故障 338
29.1 SSL相关知识 338
29.1.1什么是SSL 338
29.1.2什么是SSL证书、证书链 338
29.1.3证书类型 338
29.1.4证书颁布机构 339
29.1.5什么是SSL握手 339
29.2 SSL问题概述 339
29.2.1 WebLogic Server SSL配置 339
29.2.2配置WLS密钥库 340
29.2.3 SSL问题成因 340
29.2.4 SSL问题的故障症状 340
29.3检查安全套接字层故障 340
29.3.1使用SSL调试进行探查 340
29.3.2使用SSL调试输出 341
29.4检查和诊断SSL问题 341
29.4.1 SSL证书问题及解决办法 341
29.4.2 SSL证书链问题及解决办法 341
29.4.3 SSL握手问题及解决办法 342
29.4.4 SSL警报问题及解决办法 342
29.5故障排除检查清单 343
第30章 域信任问题故障 344
30.1定位域信任问题故障 344
30.1.1基本概念回顾 344
30.1.2域信任考虑事项 344
30.1.3域信任故障症状 345
30.1.4设置域Credential 347
30.2故障排除检查清单 350
第31章 LDAP问题故障 351
31.1什么是LDAP 351
31.2 WebLogic Server对LDAP的支持 351
31.2.1内嵌LDAP 351
31.2.2外部LDAP 351
31.3 LDAP身份验证和授权 354
31.4 LDAP安全性 355
31.5探查LDAP问题 356
31.5.1故障症状 356
31.5.2 LDAP工具及相关安全调试标志 356
31.5.3内嵌的LDAP问题 358
31.5.4 LDAP连接错误 358
31.5.5性能问题 360
31.6故障排除检修清单 361
31.7话题扩展 361
第32章 目录服务JNDI及其相关问题 363
32.1什么是JNDI 363
32.1.1 JNDI简介 363
32.1.2应用JNDI 363
32.2如何使用JNDI 365
32.3 WebLogic中JNDI相关管理 368
32.3.1查看JNDI树步骤 368
32.3.2范例 368
32.4 WebLogic相关JNDI设置问题 369
32.4.1 WebLogic相关JNDI的设置 369
32.4.2 WebLogic中涉及JNDI的配置 370
第33章 管理框架JMX及控制台的相关问题 373
33.1 JMX简介 373
33.2 JMX架构中的各层及相关的组件 373
33.2.1设备层 374
33.2.2代理层 376
33.2.3分布服务层 379
33.3一个简单的JMX应用 379
33.3.1配置环境 379
33.3.2一个简单的JMX应用的代码 379
33.3.3说明 381
33.3.4运行HelloAgent测试 381
33.3.5使用JDK的Jconsole来连接Mbean 381
33.4 WebLogic诊断框架 383
33.4.1什么是WebLogic诊断框架 383
33.4.2 WLDF诊断框架结构体系概述 384
33.4.3用WLDF运行一个demo 387
后记 390