第1章 J2EE 1.4 Web Services概述 1
1.1 J2EE平台 1
1.2 Web服务技术 2
1.2.1 WS-I Basic Profile 1.0 4
1.2.2 XML 5
1.2.3 SOAP 5
1.2.4 WSDL 6
1.2.5 UDDI 7
1.3 J2EE Web Services API 7
1.3.1 JAX-RPC 8
1.3.2 SAAJ 8
1.3.3 JAXR 8
1.3.4 JAXP 9
1.4 小结 9
第Ⅰ部分 XML 13
第2章 XML基础知识 13
2.1 XML入门 13
2.1.1 XML文档实例 15
2.1.2 剖析XML文档 15
2.1.3 处理XML文档 18
2.2 XML命名空间 20
2.2.1 使用命名空间示例 20
2.2.2 默认命名空间、前缀和限定名称 22
2.3 小结 24
第3章 W3C XML模式语言 25
3.1 XML模式基础知识 25
3.1.1 Web服务中XML模式优于DTD的原因 25
3.1.2 XML模式文档 26
3.1.3 简单类型 27
3.1.4 复杂类型 31
3.1.5 在模式中声明全局元素 37
3.1.6 限定元素与非限定元素 40
3.1.7 指定模式和确定模式的位置 42
3.2 高级XML模式 44
3.2.1 复杂类型的继承性 44
3.2.2 简单类型的继承性 49
3.2.3 列表类型与联合类型 52
3.2.4 匿名类型 54
3.2.5 导入模式和包含模式 55
3.3 小结 59
第Ⅱ部分 SOAP与WSDL 63
第4章 SOAP 63
4.1 SOAP的基本结构 65
4.2 SOAP命名空间 68
4.3 SOAP头 73
4.3.1 actor属性 75
4.3.2 mustUnderstand属性 78
4.3.3 WS-I一致性文件头 80
4.3.4 有关文件头的进一步说明 81
4.4 SOAP体 81
4.5 SOAP消息传递模式 82
4.5.1 Document/Literal消息传递模式 82
4.5.2 RPC/Literal消息传递模式 83
4.5.3 消息传递模式与消息传递交换模式 84
4.5.4 其他消息传递模式 85
4.6 SOAP错误 85
4.6.1 faultcode元素 86
4.6.2 faultstring元素 89
4.6.3 faultactor元素 90
4.6.4 detail元素 90
4.6.5 关于错误的进一步说明 91
4.7 SOAP与HTTP 92
4.7.1 传输带HTTP POST消息的SOAP 92
4.7.2 HTTP响应代码 93
4.7.3 进一步说明HTTP 94
4.8 小结 95
第5章 WSDL 96
5.1 WSDL的基本结构 97
5.2 WSDL声明:definitions元素、types元素和import元素 100
5.2.1 XML声明 100
5.2.2 definitions元素 100
5.2.3 types元素 101
5.2.4 import元素 102
5.3 WSDL抽象接口:message元素、portType元素和operation元素 103
5.3.1 message元素 103
5.3.2 portType元素 107
5.3.3 operation元素 108
5.4 WSDL消息传递交换模式 109
5.4.1 请求/响应消息传递 110
5.4.2 单向消息传递 110
5.4.3 通知和恳求/响应消息传递 111
5.5 WSDL实现:binding元素 111
5.6 WSDL实现:service元素和port元素 121
5.7 WS-I一致性声明 122
5.8 小结 122
第Ⅲ部分 UDDI 125
第6章 UDDI数据结构 125
6.1 businessEntity结构 127
6.1.1 businessEntity元素和businessKey属性 129
6.1.2 discoveryURL元素 129
6.1.3 name元素 130
6.1.4 description元素 130
6.1.5 contacts元素 130
6.1.6 businessServices元素 131
6.1.7 identifierBag元素 132
6.1.8 categoryBag元素 133
6.2 businessService结构和bindingTemplate结构 136
6.2.1 businessService结构 137
6.2.2 bindingTemplate结构 138
6.3 tModel结构 140
6.3.1 用于WSDL文档的tModel 141
6.3.2 用作分类法标识符的tModel 142
6.3.3 uddi-org:types tModel 144
6.3.4 校验tModel与非校验tModel 145
6.3.5 tModelXML模式 146
6.4 publisherAssertion结构 149
6.5 UUID密钥 150
6.6 WS-I一致性声明 151
6.7 小结 151
第7章 UDDI查询API 152
7.1 UDDI SOAP消息传递概述 152
7.2 查询操作 154
7.2.1 查找操作 154
7.2.2 取出操作 170
7.3 小结 176
第8章 UDDI发布API 178
8.1 操作定义与有效负载 178
8.1.1 授权操作 179
8.1.2 保存操作 182
8.1.3 删除操作 189
8.1.4 取出操作 195
8.2 错误消息 202
8.3 小结 205
第Ⅳ部分 JAX-RPC 209
第9章 JAX-RPC概述 209
9.1 服务器端编程模型 209
9.1.1 JSE 209
9.1.2 Enterprise JavaBean端点 210
9.2 客户端编程模型 211
9.2.1 生成的占位程序 212
9.2.2 动态代理 214
9.2.3 DII 214
9.3 其他JAX-RPC事宜 215
9.4 SAAJ 215
9.5 小结 215
第10章 JAX-RPC服务端点 216
10.1 简单JSE示例 216
10.2 JSE运行时环境 217
10.2.1 Servlet:JSE的基础 218
10.2.2 JNDI环境命名上下文 219
10.2.3 ServletEndpointContext接口与ServiceLifecycle接口 223
10.3 多线程与JSE 230
10.4 小结 231
第11章 JAX-RPC EJB端点 232
11.1 Enterprise JavaBean基础知识 232
11.1.1 事务简介 232
11.1.2 EJB 234
11.1.3 小结 239
11.2 Enterprise JavaBean Web服务 239
11.2.1 简单示例 239
11.2.2 EJB运行时环境 242
11.3 小结 247
第12章 JAX-RPC客户API 248
12.1 生成的占位程序 248
12.1.1 端点接口 249
12.1.2 生成的占位程序 250
12.1.3 服务接口 251
12.1.4 在J2EE中使用生成的占位程序 252
12.2 动态代理 256
12.2.1 使用动态代理 257
12.2.2 深层探索 260
12.3 DII 261
12.3.1 与WSDL文档一起使用DII 261
12.3.2 不通过WSDL文档使用DII 264
12.3.3 与DII一起使用单向消息传递 265
12.3.4 JAX-RPC标准属性与常数 265
12.4 小结 267
第13章 SAAJ 269
13.1 简单SAAJ示例 270
13.2 创建SOAP消息 272
13.2.1 MessageFactory类 272
13.2.2 SaajOutputter类 274
13.2.3 SOAPMessage类 275
13.3 使用SOAP文档 276
13.3.1 SOAPPart类型与SOAPEnvelope类型 277
13.3.2 SOAPFactory类与Name类型 278
13.3.3 SOAPElement类型 280
13.3.4 Node类型 282
13.3.5 SOAPHeader类型 283
13.3.6 SOAPHeaderElement类型 286
13.3.7 SOAPBody类型 287
13.3.8 SOAPBodyElement类型 287
13.3.9 Text类型 288
13.3.10 SOAPConstants类 289
13.3.11 SOAPException类 289
13.3.12 SOAPFactory类型与SOAPElement类型 290
13.4 SOAP错误 291
13.4.1 SOAPFault类型 292
13.4.2 Detail类型 295
13.4.3 SOAPFaultElement类型 295
13.4.4 DetailEntry类型 296
13.5 与SAAJ一起传输SOAP消息 296
13.6 SAAJ 1.2与DOM 2 297
13.7 小结 300
第14章 消息处理程序 301
14.1 简单示例 301
14.1.1 定义消息处理程序类 301
14.1.2 定义WSDL文档 305
14.1.3 生成服务接口与端点接口 306
14.1.4 配置消息处理程序 307
14.1.5 在J2EE组件中使用消息处理程序 308
14.2 处理程序链与处理顺序 309
14.2.1 返回值与处理顺序 313
14.2.2 异常与处理顺序 315
14.3 处理程序运行时环境 316
14.3.1 无状态与多线程 316
14.3.2 JNDI环境命名上下文 317
14.3.3 消息处理程序的生命周期 319
14.3.4 MessageContext类型 321
14.4 小结 323
第15章 将Java映射到WSDL和XML 324
15.1 将WSDL映射到Java 324
15.1.1 WSDL与端点接口 325
15.1.2 声明多个部分 326
15.1.3 定义多个操作 327
15.1.4 单向消息传递 328
15.2 将XML映射到Java 329
15.2.1 XML模式内置简单类型 329
15.2.2 XML模式复杂类型 331
15.2.3 数组 334
15.2.4 枚举 334
15.2.5 SOAPElement:在Document/Literal编码中支持非标准类型 336
15.2.6 SOAPElement:xsd:any元素 341
15.2.7 Nillable元素 342
15.3 Holder 343
15.3.1 复制传递:IN参数 344
15.3.2 引用传递:INOUT参数和OUT参数 344
15.3.3 Holder类:在JAX-RPC中支持INOUT参数和OUT参数 346
15.3.4 从WSDL映射Holder类型 347
15.4 错误与Java异常 354
15.5 小结 359
第Ⅴ部分 JAXR 363
第16章 JAXR基础知识 363
16.1 使用UDDI测试注册表 363
16.2 与UDDI注册表建立连接 364
16.2.1 获得ConnectionFactory 365
16.2.2 配置ConnectionFactory 366
16.2.3 连接到UDDI注册表 368
16.2.4 对UDDI注册表进行身份验证 368
16.2.5 在J2EE中获得JAXR连接 369
16.3 使用RegistryService对象与BusinessLifeCycleManager对像 370
16.3.1 RegistryService接口 372
16.3.2 使用BusinessLifeCycleManager对象 374
16.4 BulkResponse类型 377
16.4.1 BulkResponse接口 378
16.4.2 在示例中处理BulkResponse 379
16.5 异常 379
16.6 小结 379
第17章 JAXR商务对象 381
17.1 RegistryObject接口 382
17.2 Organization信息对象 385
17.2.1 businessEntity 388
17.2.2 ExternalLinks 389
17.2.3 Name和Description 390
17.2.4 User 394
17.2.5 分类 402
17.2.6 外部标识符 411
17.2.7 服务 416
17.3 小结 416
第18章 JAXR技术对象 417
18.1 Service信息对象与ServiceBinding信息对象 417
18.1.1 创新Service对象 419
18.1.2 创建新ServiceBinding对象 420
18.1.3 Service接口 421
18.1.4 ServiceBinding接口 422
18.2 Concept信息对象 423
18.2.1 创建新Concept 425
18.2.2 Concept接口 428
18.3 SpecificationLink信息对象 432
18.3.1 使用Specification对象 432
18.3.2 SpecificationLink接口 435
18.4 Association信息对象 436
18.5 预定义枚举 440
18.5.1 AssociationType枚举 441
18.5.2 URLType枚举 441
18.5.3 ExtensibleObject接口与Slot接口 442
18.6 小结 443
第19章 JAXR查询API与发布API 444
19.1 将JAXR映射到UDDI查询API 444
19.1.1 使用搜索准则 448
19.1.2 findXXX()方法 454
19.2 将JAXR映射到UDDI发布API 458
19.3 小结 459
第Ⅵ部分 JAXP 463
第20章 SAX2 463
20.1 用SAX解析:XMLReaderFactory类与XMLReader类 464
20.2 ContentHandler接口与DefaultHandler接口 465
20.2.1 startDocument()方法与endDocument()方法 465
20.2.2 startElement()方法与 endElement()方法 469
20.2.3 startPrefixMapping()方法与 endPrefixMapping()方法 473
20.2.4 characters()方法 474
20.2.5 其他ContentHandler方法 475
20.2.6 其他SAX2侦听者接口 476
20.3 用W3C XML模式检验 477
20.4 小结 478
第21章 DOM 2 479
21.1 用DOM解析:DocumentBuildFactory类与DocumentBuilder类 480
21.2 节点 481
21.2.1 依赖于类型的特性 484
21.2.2 XML名称方法 486
21.2.3 属性方法 488
21.2.4 所有者(Owner)文档 489
21.2.5 导航节点树 489
21.2.6 用于子对象管理的方法 491
21.2.7 其他方法 491
21.3 构建DOM文档 492
21.4 复制节点 498
21.5 小结 500
第Ⅶ部分 部署 503
第22章 J2EE部署 503
22.1 J2EE部署过程概述 503
22.2 J2EE Web Services部署 504
22.2.1 用J2EE端点开始Web服务 504
22.2.2 用WSDL开始Web服务 506
22.2.3 JAX-RPC映射文件 508
22.2.4 用于J2EE组件的部署描述器 508
22.3 部署JSE 509
22.3.1 将JSE打包到WAR文件 509
22.3.2 webxml文件 510
22.4 部署EJB端点 515
22.4.1 说明性事务属性 515
22.4.2 说明性安全属性 517
22.5 服务引用 519
22.5.1 service-ref-name 元素 521
22.5.2 service-interface 元素 521
22.5.3 wsdl-file元素与service-qname元素 522
22.5.4 jaxrpc-mapping-file 元素 523
22.5.5 port-component-ref元素 524
22.5.6 显示元素 525
22.5.7 handler元素 525
22.6 小结 531
第23章 Web服务描述器 532
23.1 wsdl-file元素与wsdl-port元素 533
23.2 port-component-name元素 534
23.3 service-endpoint-interface元素 535
23.4 service-impl-bean元素 536
23.5 jaxrpc-mapping-file元素 537
23.6 handler元素 538
23.6.1 handler-name元素 539
23.6.2 handler-class元素 539
23.6.3 init-param元素 539
23.6.4 soap-header元素 540
23.6.5 soap-role元素 541
23.6.6 通过处理程序进行处理 542
23.6.7 显示元素 542
23.7 小结 542
第24章 JAX-RPC映射文件 543
24.1 轻量级JAX-RPC映射文件的条件 543
24.2 轻量级映射示例 544
24.3 重量级映射示例 546
24.4 映射文件剖析 549
24.4.1 java-wsdl-mapping元素 549
24.4.2 package-mapping元素 550
24.4.3 java-xml-type-mapping元素 552
24.4.4 exception-mapping元素 554
24.4.5 service-interface-mapping元素 556
24.4.6 service-endpoint-interface-mapping元素 563
24.5 小结 535
第Ⅷ部分 附录 567
附录A XMLDTD 567
附录B XML模式正则表达式 571
B.1 符号集 571
B.2 限定符 572
B.3 其他元符号 572
B.4 应用示例 573
B.4.1 ISBN(国际标准书号) 573
B.4.2 美国邮政编码 574
B.4.3 美国电话号码 574
B.4.4 英国邮政编码 574
附录C Base64编码 575
附录D SOAP RPC/Encoded 576
D.1 soap:encodingStyle特性 576
D.2 操作结构 579
D.3 简单类型 580
D.4 复杂类型 581
D.5 数组类型 582
D.5.1 数组的大小 585
D.5.2 数组的其他功能 586
D.6 引用 586
D.7 小结 589
附录E SwA 590
E.1 MIME基础知识 590
E.2 在SOAP中使用MIME 593
E.3 小结 595
附录F SAAJ附件 597
F.1 JAF 598
F.1.1 DataHandler类 599
F.1.2 DataContentHandler类 600
F.1.3 DataSource类 603
F.2 SAAJ与JAF:AttachmentPart对象 605
F.2.1 数据对象 607
F.2.2 createAttachmentPart()方法 607
F.2.3 setContent()方法与setDataHandler()方法 608
F.2.4 getContent()方法 609
F.2.5 MIME文件头方法 610
F.3 SOAPPart对象 613
F.3.1 XSLT 615
F.3.2 TrAX 615
F.3.3 使用StreamSource 615
F.3.4 DOMSource 616
F.3.5 SAXSource 616
F.4 SOAPEnvelope 617
F.4.1 getHeader()方法、getBody()方法与 addBody()方法 617
F.4.2 createName()方法 617
F.5 小结 618
附录G JAX-RPC和SwA 619
G.1 JAF:DataContentHandler类型和DataSource类型 619
G.2 简单示例 620
G.3 将MIME类型映射到Java 623
G.3.1 multipart/MIME类型 624
G.3.2 text/xml类与application/xml MIME类型 626
G.3.3 用作返回类型、INOUT和OUT参数的MIME附件 627
G.4 使用DataHandler类型和DataSource类型 630
G.5 小结 632
附录H 在没有WSDL文档的情况下使用JAX-RPC Dll 633
参考资料 638