第1章 用Java Web服务构建面向服务的架构 1
1.1是我水平不够,还是Java Web服务真的很难 2
1.1.1不要固守教条 4
1.1.2 JWS是工具集,而不是应用程序框架 6
1.1.3顿悟 7
1.2 Web服务平台体系架构 8
1.2.1调用子系统 8
1.2.2序列化子系统 11
1.2.3部署子系统 16
1.3第2章到第8章介绍的Java Web Services标准 18
1.4 SOAShopper案例学习:第9章和第10章 21
1.5 SOA-J和以WSDL为中心的开发:第11章 22
第2章 Java Web Services概述 25
2.1 JWS在SOA应用程序开发中的角色 26
2.1.1一个假想的SOA应用程序 26
2.1.2 JWS支持的SOA开发 29
2.2方便使用的特点 36
2.2.1源代码标注 37
2.2.2标准WSDL/Java映射 38
2.2.3标准序列化上下文 39
2.2.4开发模式 40
2.2.5 JWS的权衡选择 42
2.3 JAX-WS 2.0 43
2.3.1 Java/WSDL映射 44
2.3.2静态W SDL 45
2.3.3动态和静态客户端 45
2.3.4使用Java接口代理来进行调用 46
2.3.5用XML来进行调用 46
2.3.6 XML服务提供者 46
2.3.7处理器框架 47
2.3.8消息上下文 48
2.3.9 SOAP绑定 48
2.3.10 HTTP绑定 49
2.3.11将异常转换为SOAP错误 49
2.3.12异步调用 50
2.3.13单向操作 50
2.3.14客户端线程管理 50
2.3.15 WSDL样式——支持RPC/Literal和Document/Literal包装 50
2.3.16 XML目录(Catalogs) 51
2.3.17用伪引用传递(Pseudoreference Passing)(Holder<T>来表示输出和输入/输出参数) 52
2.3.18运行时服务端点发布(只有Java SE提供) 52
2.4 JAX 2.0 54
2.4.1为Java表示绑定XML Schema 57
2.4.2将Java类型映射为XML Schema 59
2.4.3映射标注 59
2.4.4绑定语言 62
2.4.5绑定运行时框架(Marshal/Unmarshal) 65
2.4.6验证 69
2.4.7可移植性 70
2.4.8封送(Marshal)事件回调 71
2.4.9局部绑定 71
2.4.10二进制数据编码(MTOM或WS-I) 72
2.5 WS-Metadata 2.0 73
2.5.1 WSDL映射标注 78
2.5.2 SOAP绑定标注 78
2.5.3处理器标注 79
2.5.4服务实现Bean 79
2.5.5从WSDL和Java开始的开发模式 79
2.5.6自动部署 80
2.6 WSEE 1.2 80
2.6.1 Port组件 81
2.6.2 Servlet服务端点 81
2.6.3 EJB服务端点 82
2.6.4简化的包装 82
2.6.5处理器编程模型 82
2.7其他的Java EE 5标注功能 82
2.7.1依赖注入(Dependency Injection) 82
2.7.2拦截器(Interceptor) 83
2.7.3在EJB 3.0中支持POJO 83
2.8总结 84
2.8.1配置环境,以构建和运行软件示例 84
第3章 基于REST的SOA基础 85
3.1为什么使用REST 85
3.1.1 REST是什么 86
3.1.2本章涉及的主题 87
3.2 EIS记录使用的XML文档和模式(Schema) 88
3.2.1没有WSDL并不意味着一定没有接口 96
3.3 REST客户端的两种实现方式(JWS和非JWS实现方式) 97
3.3.1用非JWS方式通过REST服务以获取EIS记录 98
3.3.2用JWS方式通过REST服务以获取EIS记录 101
3.3.3用非JWS方式向REST服务发送EIS记录数据 105
3.3.4用JWS来为REST服务发送EIS记录数据 110
3.4使用XSLT和JAXP完成SOA集成中的数据转换 114
3.4.1为什么要用XSLT来进行数据转换 115
3.4.2用JAXP完成XSLT处理 121
3.5用JWS和非JWS的方法来实现REST风格的Web服务 125
3.5.1用非JWS方式来部署REST服务 126
3.5.2用JWS来部署REST风格的Web服务 131
3.6总结 136
第4章 WSDL、SOAP和Java/XML映射在SOA中的角色 137
4.1 WSDL在SOA中的角色 138
4.1.1一个WSDL示例 141
4.2 SOA中SOAP的角色定位 145
4.3分发:JAX-WS2.0如何将WSDL/SOAP映射到Java调用 151
4.3.1确定WSDL Port 151
4.3.2 WS-I Basic Profile的角色 153
4.3.3 RPC/Literal 154
4.3.4 Document/Literal 156
4.3.5 Document/Literal Wrapped 159
4.3.6分发处理的总结 162
4.3.7 SOA集成中JAX-WS 2.0分发处理的缺点 165
4.4 JAX-WS 2.0分发限制的变通方案 166
4.5 SOA更青睐“从WSDL和Java开始”的开发模式 175
4.5.1 Java/XML映射在SOA中的角色 178
4.5.2 JAXB 2.0在SOA中用进行Java/XML映射的限制 180
4.6 针对JAXB 2.0 Java/XML映射限制的变通方案 182
4.6.1使用模式编译器和Java 182
4.6.2使用Schema生成器和XSLT 189
4.7总结 194
第5章 JAXB 2.0数据绑定 195
5.1绑定与映射 195
5.2标准JAXB 2.0 Java/XML绑定概览 199
5.3使用JAXB 2.0实现类型映射 209
5.4用递归框架来实现类型映射 217
5.5用JAXB 2.0标注来实现类型映射 224
5.6使用JAXB 2.0绑定语言来实现类型映射 235
5.7使用JAXB 2.0 XmIAdapter类实现类型映射 245
5.8在数据转换中使用JAXB 2.0(而不是XSLT) 256
5.9总结 262
第6章 JAX-WS——客户端开发 265
6.1 JAX-WS代理 265
6.1.1 JAX-WS中WSDL到Java的映射 267
6.1.2服务端点接口标注 273
6.1.3使用代理调用Web服务 279
6.1.4代理的报错处理 282
6.2 XML消息传递 285
6.2.1使用原始(Raw)的XML进行消息传递 286
6.2.2使用定制标注的JAXB类进行XML消息传递 289
6.3使用定制的Java/XML映射进行调用:一个使用Castor代替JAXB的示例 292
6.4异步调用 297
6.4.1轮询 297
6.4.2使用代理的异步调用方法 299
6.4.3回调 301
6.5 SOAP消息处理器 304
6.6总结 310
第7章 JAX-WS 2.0——服务器端开发 311
7.1 JAX-WS服务器端架构 311
7.2使用服务端点接口(SEI),从WSDL开始开发 316
7.3不使用JAXB来实现服务提供者和XML处理 320
7.4使用定制的Java/XML映射来部署Web Services 325
7.5验证和错误处理 329
7.5.1验证 329
7.5.2错误处理 332
7.6服务器端处理器 343
7.7使用javax.xml.ws.Endpoint进行Java SE部署 347
7.8总结 355
第8章 SOA组件的打包和部署(JSR 181和JSR 109) 357
8.1 Web服务打包和部署概述 359
8.1.1使用WAR打包servlet服务端点 361
8.1.2使用EJB-JAR打包EJB服务端点 363
8.1.3自动部署 365
8.1.4容器的部署处理过程概述 365
8.1.5 EJB服务端点的部署和分发 371
8.2不使用部署描述符进行部署 376
8.2.1只使用服务实现bean 376
8.2.2使用服务端点接口(Service Endpoint Interface) 378
8.2.3包含WSDL文件 381
8.3使用部署描述符 384
8.3.1 Servlet服务端点的web.xml 384
8.3.2无状态会话Bean服务端点的ejb -jar.xml 390
8.3.3 webservices.xml的使用时机 395
8.3.4平台特定的部署描述符 397
8.4 GIassFish的自动部署 402
8.5 Web服务安全 405
8.6 OASIS XML Catalogs 1.1 407
8.7总结 409
第9章 SOAShopper:整合eBay、 Amazon和Yahoo!Shopping 411
9.1 SOAShopper概览 411
9.2 SOAShopper SOAP服务 417
9.3 SOAShopper中REST风格的服务和标准XML Schema 423
9.4服务实现(Service Implementation) 431
9.5 eBay和Amazon服务(SOAP) 434
9.6 Yahoo!服务(REST) 444
9.7 SOAShopper API和集成层 450
9.8用Java EE实现真实SOA应用程序的总结 460
第10章 Ajax和Java Web服务 463
10.1 Ajax快速概览 464
10.2整合Ajax 与 Java EE Web Services 468
10.3代码实例:SOAShopper的Ajax前端程序 470
10.4关于Ajax和Java EE的总结 479
第11章 使用SOA-J开发以WSDL为中心的Web Services 481
11.1 SOA-J架构 483
11.2使用SOA-J进行以WSDL为中心的开发 486
11.3调用子系统 493
11.4序列化子系统 503
11.5部署子系统 514
11.6总结 519
附录A 本书中使用的Java、XML,以及Web Services标准 523
附录B 软件配置指南 525
B.1安装Java EE 5 SDK 526
B.2安装Apache Ant 1.7.x 527
B.3安装Apache Maven 2.0.x 527
B.4安装本书的示例代码 528
B.5配置Maven 528
B.6配置Ant 530
B.7启动和停止G1assFish服务器 532
B.8运行一个示例以测试安装 532
B.9构建和部署SOAShopper研究案例(第9章和第10章) 534
B.10构建和部署SOA-J应用程序框架(第11章) 535
B.11安装Java SE 6(可选) 535
附录C 命名空间前缀 537
词汇表 539
参考文献 555
索引 561