用JWSDP将Java和Web服务结合起来
Sun的Java Web服务开发工具包(JWSDP)能够让你完全使用Java编程语言来编写Web服务,但是这些工具的数量和复杂性可能会让使用JWSDP的新程序员束手无策。
JWSDP支持行业标准,这就能够确保其与标准组织所发布的技术和规范具有互操作性,例如万维网协会(W3C)以及结构信息标准推动组织(OASIS)等。JWSDP还提供多种辅助工具,例如WSDL stub编译器,它能够生成一个WSDL文件,用于Web服务和独立的Web服务UDDI 2.0注册表。JWSDP还能和Apache Tomcat以及一些Ant的任务捆绑工作,这就让你能够在Tomcat内注册和治理Web服务。
JWSDP的编程接口一般被分成两个大类:一类用来处理XML文档,另一类用来处理远程过程(remote procedure)。
面向文档的API有:
用于XML处理(JAXP)的Java API
用于XML绑定的(JAXB)的Java架构
面向远程过程的API有:
用于基于XML的RPC(JAX-RPC)的Java API
用于XML注册表(JAXR)的Java API
用于XML信使服务(JAXM)的Java API
现在让我们将每个API集分开,看看我们能够用每个API来做些什么。
JAXP
JAXP为剖析和转换XML文档公开了一些可插入的API,这样就不再需要专门的XML处理器了。
JAXB
JAXB为基于XML的Java应用程序的开发公开一些API。JAXB为映射XML文档和Java对象提供了工具、API和框架。为把XML结构描述转变成为Java类,它还提供了一个编译器。绑定框架让进出的XML文档的错误和验证检查成为可能。
JAX-RPC
JAX-RPC为开发基于SOAP的Web服务端点(endpoint)和客户端公开了API。JAX-RPC是J2EE 1.4平台所必需的工具包。
JAXR
JAXR为对XML注册表的访问、查询和发布公开了API。
JAXM
JAXM工具包为发送和接收面向文档的XML信息公开了API。JAXM通过发送附加信息来支持SOAP 1.1。JAXM使用信使配置来工作,例如ebXML的传输、路由和信息打包处理服务(Packaging Message Handling Service)。这一概念为在未来支持基于标准的信使协议提供了支持。
SAAJ
SAAJ扩展了JAXM,用以让开发人员开发出使用带有附加信息的SOAP。
测试JWSDP能力
现在让我们来测试JWSDP,并看看要发布一个简单的Web服务我们需要做什么。Listing A里的示例代码演示了你可以如何使用JWSDP来将一个简单的股票报价服务发布到注册表里。下面代码列表的每个都会更加深入的说明JWSDP组件的能力:
Listing B里的executePublish方法会处理发布过程中的大部分事务。它会调用多个辅助方法来从事一些任务,例如验证、创建服务集合、将服务绑定到端点等等。
Listing C里的createOrg方法会创建一个结构,用来表示服务所属的机构。
Listing D里的addClassifications方法会创建一个结构,用来将服务划分入预定的各个类别里。
Listing E里的connectToRegistry方法会创建一个到指定注册表的连接。
Listing F里的disconnect方法会断开到注册表的连接。
Listing G里的saveServices方法会确实地将服务发布给注册表。
Listing H里的bindServices方法会将服务同其端点进行绑定。
Listing I里的authenticate方法会使用指定的用户名和密码来对注册表进行验证。
Listing J里的createContact方法会创建一个包含有某个组织联系信息的结构。
灵活性等于复杂性
JWSDP为创建和部署Web服务以及Web服务的客户端提供了一个全面的工具和API。它当然是很灵活和强大的了;但是,它不是为了让人头疼而设计的。单单这头动物的巨大体型就能够吓倒大多数的新手。但是对于那些希望在这头野兽身上多花一点时间的人来说,它所带来的可能成果是无可限量的。