第—篇 够用就好——JAX-RS 2.0基础 2
第1章 JAX-RS 2.0入门 2
1.1 解读REST 2
1.1.1 一种架构风格 3
1.1.2 基本实现形式 3
1.2 解读REST服务 4
1.3 解读JAX-RS 5
1.4 Jersey项目概要 8
1.5 Java领域的其他REST实现 17
1.5.1 其他JAX-RS实现 18
1.5.2 其他REST实现 19
1.6 本章小结 20
第2章 JAX-RS 2.0快速实现 21
2.1 第一个Java REST服务 21
2.1.1 环境准备 22
2.1.2 创建服务 23
2.1.3 扩展服务 28
2.1.4 测试和运行服务 31
2.2 第一个Servlet容器服务 32
2.2.1 创建和分析Web服务 32
2.2.2 Jetty插件与REST服务 35
2.2.3 运行在Servlet容器 38
2.2.4 运行在Java EE容器 39
2.3 REST服务类型 40
2.4 REST应用描述 45
2.4.1 应用的描述 46
2.4.2 资源的描述 46
2.4.3 WADL的配置 47
2.5 第一个完整的REST服务 48
2.5.1 定义资源 48
2.5.2 集成Spring 51
2.5.3 集成JPA 53
2.5.4 集成jQuery 55
2.5.5 请求处理流程分析 57
2.6 REST调试工具 64
2.6.1 命令行调试工具cURL 64
2.6.2 基于浏览器的图形化调试插件 66
2.7 本章小结 69
第3章 REST API设计 70
3.1 REST统一接口 70
3.1.1 GET方法 71
3.1.2 PUT方法 73
3.1.3 DELETE方法 75
3.1.4 POST方法 76
3.1.5 WebDAV扩展方法 77
3.2 REST资源定位 79
3.2.1 资源地址设计 79
3.2.2 @QueryParam注解 81
3.2.3 @PathParam注解 83
3.2.4 @FormParam注解 86
3.2.5 @BeanParam注解 88
3.2.6 @CookieParam注解 88
3.2.7 @Context注解 89
3.3 REST传输格式 90
3.3.1 基本类型 90
3.3.2 文件类型 90
3.3.3 InputStream类型 91
3.3.4 Reader类型 92
3.3.5 XML类型 93
3.3.6 JSON类型 96
3.4 REST连通性 112
3.4.1 过渡型链接 113
3.4.2 结构型链接 114
3.5 REST响应处理 114
3.5.1 返回类型 115
3.5.2 处理异常 117
3.6 REST内容协商 119
3.6.1 @Produces注解 119
3.6.2 @Consumes注解 121
3.7 本章小结 122
第4章 REST请求处理 123
4.1 REST和AOP 123
4.2 Providers详解 124
4.2.1 实体Providers 124
4.2.2 上下文Providers 129
4.3 REST请求流程 130
4.4 REST过滤器 132
4.4.1 ClientRequestFilter 132
4.4.2 ContainerRequestFilter 133
4.4.3 ContainerResponseFilter 134
4.4.4 ClientResponseFilter 135
4.4.5 访问日志 136
4.5 REST拦截器 138
4.6 绑定机制 140
4.7 优先级 144
4.8 本章小结 145
第5章 REST客户端 146
5.1 客户端接口 146
5.1.1 Client接口 147
5.1.2 WebTarget接口 148
5.1.3 Invocation接口 148
5.2 资源释放 149
5.3 连接器 150
5.4 封装Client 153
5.5 本章小结 154
第二篇 全面掌握——JAX-RS 2.0进阶 156
第6章 REST安全 156
6.1 身份认证 157
6.1.1 基本认证 157
6.1.2 摘要认证 158
6.1.3 表单认证 158
6.1.4 证书认证 159
6.2 资源授权 160
6.2.1 容器管理权限 160
6.2.2 应用管理权限 163
6.3 认证与授权实现 163
6.3.1 基本认证与JDBCRealm 164
6.3.2 摘要认证与UserDatabase-Realm 170
6.3.3 表单认证与DataSource-Realm 173
6.3.4 表单认证与JAASRealm 177
6.3.5 证书认证与UserDatabase-Realm 180
6.4 JAX-RS 2.0实现 184
6.5 其他安全考虑 187
6.6 本章小结 188
第7章 REST测试 189
7.1 Jersey测试框架 189
7.2 单元测试 192
7.2.1 集成Spring的单元测试 192
7.2.2 异步测试 194
7.3 集成测试 194
7.4 日志增强 195
7.5 本章小结 195
第8章 REST推送与异步通信 196
8.1 服务器-浏览器通信 196
8.1.1 Polling技术 197
8.1.2 Comet技术 197
8.1.3 SSE技术 199
8.1.4 WebSocket技术 199
8.2 SSE详述 200
8.2.1 Java并发 200
8.2.2 SSE流程 202
8.2.3 SSE实现 204
8.3 异步通信 209
8.4 JAX-RS 2.0实现异步通信 211
8.4.1 服务端实现 211
8.4.2 客户端实现和测试 213
8.5 本章小结 215
第9章 Jersey 1.x迁移 216
9.1 变更Maven依赖定义 216
9.2 客户端迁移 217
9.2.1 Client接口迁移 217
9.2.2 WebTarget接口迁移 218
9.2.3 QueryParam 219
9.3 服务器端迁移 219
9.4 本章小结 220
第10章 JAX-RS调优 221
10.1 使用缓存优化负载 221
10.1.1 缓存协商 221
10.1.2 条件GET 223
10.1.3 REST缓存实践 224
10.1.4 ab测试 226
10.2 使用版本号优化服务 226
10.2.1 何时使用版本号 227
10.2.2 如何使用版本号 227
10.3 使用参数配置优化服务 229
10.3.1 通用配置 229
10.3.2 服务器端配置 230
10.3.3 客户端配置 231
10.4 Java虚拟机调优 232
10.4.1 虚拟机概述 232
10.4.2 内存溢出与内存泄漏 235
10.5 本章小结 236
第三篇 实践分享——JAX-RS 2.0综合 238
第11章 统一自动化测试平台 238
11.1 ATUP的定义 238
11.1.1 需求仓库 239
11.1.2 需求分析 241
11.1.3 迭代规划 242
11.2 ATUP的设计 244
11.2.1 开发和部署环境 244
11.2.2 模块定义和拓扑 247
11.2.3 持续集成流程 248
11.3 ATUP的实现 250
11.3.1 Sprint1核心功能 250
11.3.2 Sprint2模块功能 281
11.3.3 Iteration1的演示和回顾 288
11.3.4 Sprint3持续交付 291
11.3.5 交付和总结 293
11.4 本章小结 293
附录 Web简史 294
参考资料 297
后记 298