一、JAX-WS 简介
JAX-WS 是用于简化使用 Java 构造 Web 服务和 Web 服务客户机的工作的技术。该技术提供了完整的 Web 服务堆栈,可减少开发和部署 Web 服务的任务。JAX-WS 支持 WS-I Basic Profile 1.1,后者可确保使用 JAX-WS 堆栈开发的 Web 服务能够供采用 WS-I Basic Profile 标准使用任意语言开发的任意客户机使用。JAX-WS 还包括了 Java Architecture for XML Binding (JAXB) 和 SOAP with Attachments API for Java (SAAJ)。
JAXB 提供了一种非常方便的方法来将 XML 模式映射到 Java 代码的表示形式,从而支持数据绑定功能。JAXB 消除了将 SOAP 消息中的 XML 模式消息转换为 Java 代码的工作,因而不必全面了解 XML 和 SOAP 解析。JAXB 规范定义 Java 和 XML 模式之间的绑定。SAAJ 提供了标准的方法来处理 SOAP 消息中包含的 XML 附件。
而且,JAX-WS 提供了用于将传统 Java 对象(Plain Old Java Object,POJO)类转换为 Web 服务的 Annotation 库,从而加速了 Web 服务的开发工作。另外,它还指定了从采用 Web 服务描述语言(Web Services Description Language,WSDL)定义的服务到实现该服务的 Java 类之间的详细映射。采用 WSDL 定义的任意复杂类型都通过遵循 JAXB 规范定义的映射来映射为 Java 类。JAX-WS 之前与 Java Platform, Enterprise Edition (Java EE) 5 绑定。而 JAX-WS 2.0 规范是作为 Java Community Process (JCP) 的 JSR 224 开发的。
二、开发 Web 服务
契约优先方法与代码优先方法
进入 JAX-WS 时代的最好方法莫过于首先开发一个 Web 服务。可以采用以下两种方法之一开发 Web 服务:
•契约优先:从 WSDL 契约着手,生成 Java 类来实现服务。
•代码优先:从 Java 类着手,使用 Annotation 来生成 WSDL 文件和 Java 接口。
契约优先 WSDL 方法需要对用于定义消息格式的 WSDL 和 XML 模式定义(XML Schema Definition,XSD)有良好的理解。如果您对 Web 服务相当陌生,最好从代码优先方法着手。
开发 JAX-WS Web 服务的起点是一个使用 javax.jws.WebService Annotation 进行了标注的 Java 类。所使用的 JAX-WS Annotation 属于 Web Services Metadata for the Java Platform 规范 (JSR-181) 的一部分。您可能已经注意到了,OrderProcessService 使用 WebService Annotation 进行了标注,而后者将类定义为了 Web 服务端点。
OrderProcessService 类(带有 @javax.jws.WebService Annotation 的类)隐式地定义了服务端点接口(Service Endpoint Interface,SEI),用于声明客户机可以对服务调用的方法。除了使用 @WebMethod Annotation 标注且 exclude 元素设置为 true 的方法外,类中定义的所有公共方法都会映射到 WSDL 操作。@WebMethod Annotation 是可选的,用于对 Web 服务操作进行自定义。除了 exclude 元素外,javax.jws.WebMethod Annotation 还提供 operation name 和 action 元素,用于在 WSDL 文档中自定义操作的 name 属性和 SOAP action 元素。这些属性是可选的;如果未定义,会从类名称派生缺省值。
实现 Web 服务后,需要生成部署服务所需的所有构件,然后将 Web 服务打包为部署构件(通常为 WAR 文件),并将 WAR 文件部署到任何支持 JAX-WS 2.0 规范的兼容服务器上。通常生成的构件是提供基于服务接口将 Java 对象转换为 XML、WSDL 文件和 XSD 模式的功能的类。
出于测试目的,Java 6 绑定了一个轻量级 Web 服务器,可以通过调用简单的 API 调用将 Web 服务发布到该服务器上。接下来我们将了解如何使用此方法测试 Web 服务。
创建 Web 服务客户机
从 WSDL 创建 Web 服务客户机
在本部分,我们将了解如何从 WSDL 创建 Web 服务客户机。JAX-WS 提供了名为 wsimport 的工具,用于从 WSDL 生成 JAX-WS 可移植构件。生成的可移植构件通常包括以下内容:
•SEI
•服务(需要实现的服务实现类)
•从模式类型生成的 JAXB 生成类
•从 wsdl:fault 映射的异常类(如果有)
客户机使用生成的构件调用 Web 服务。Web 服务客户机并不需要处理任何 SOAP 格式(如创建或解析 SOAP 消息)。这将由 JAX-WS 运行时予以处理,此运行时将使用生成的构件代码(JAXB 生成类)。Web 服务将处理 Java 代码(JAXB 生成类),从而减少了开发 Web 服务客户机和对 Web 服务调用操作的工作。
先使用 wsimport 工具从 OrderProcess WSDL 生成 JAX-WS 构件。然后要创建 Web 服务客户机,后者使用生成的构件代码调用订单处理 Web 服务。要生成 JAX-WS 构件,贤进入到 JAXWS-Tutorial 目录,并运行清单 12 中所示的 wsimport 命令。不过,进行操作前,请确保已经按照生成 JAX-WS 构件部分中的步骤 5 所述的方法,通过运行 OrderWebServicePublisher 发布了 Web 服务。
wsimport -keep -p com.ibm.jaxws.tutorial.service.client
http://localhost:8080/OrderProcessWeb/orderprocess?wsdl
-keep 选项指示保留生成的文件,-p 选项指定需要在其中生成构件的包名称。http://localhost:8080/OrderProcessWeb/orderprocess?wsdl 指定 WSDL 文件的位置。以下构件是从 OrderProcessService WSDL 生成的:
•JAXB 类(Address、Customer, OrderBean 和 OrderItem):通过读取 OrderProcessService WSDL 中定义的模式定义生成
•RequestWrapper 和 ResponseWrapper 类(ProcessOrder 和 ProcessOrderResponse):包装 document literal-wrapped 样式类型的输入和输出
•服务类 (OrderProcess):客户机用于请求 Web 服务的类
•服务接口 (OrderProcessService):包含着用于服务实现接口的类
接下来了解一下如何使用上面生成的构件创建 Web 服务客户机。com\ibm\jaxws\tutorial\service\client 文件夹中提供了一个示例参考代码。Web 服务客户机的代码如清单 13 中所示。
上面列出的 Web 服务客户机代码执行以下任务:
•通过传入 OrderProcess Web 服务的 WSDL URL 和服务的 QName 创建 OrderProcess 类的实例。
•创建 OrderBean 的实例,并使用 populateOrder() 方法填充订单信息。
•对服务调用 getOrderProcessPort(),以检索到服务的代理(也称为端口)。端口实现服务所定义的接口。
•调用端口的 processOrder 方法,并同时传入在上面的第二个列表项目中创建的 OrderBean 实例。
•从服务获得 OrderBean 响应并输出订单 ID。
分享到:
相关推荐
【WebService学习笔记】 WebService是一种基于互联网的、标准化的、跨平台的、跨语言的通信机制,使得不同系统间的应用程序可以互相交互数据和服务。它的核心理念是服务导向架构(SOA),即通过服务的方式实现应用...
在本学习笔记中,主要介绍了使用Apache Axis2框架来开发和测试Web Service的过程。Apache Axis2是Apache SOAP栈的一个实现,提供了简单且高效的Web Service开发工具。 首先,开发者需要在Eclipse集成开发环境中搭建...
在本篇尚硅谷的学习笔记中,主要涉及了Web Service的基础概念、Schema约束、HTTP协议以及相关面试问题。 1. Schema约束: - Schema是XML Schema Document的缩写,它是一种XML格式,用于定义其他XML文档的结构和...
以上是Web服务入门学习的基础知识点,通过实践和不断深入,可以掌握创建、发布、调用Web服务的完整流程,以及解决相关问题的能力。在实际项目中,还会涉及到更多的高级主题,如Web服务的互操作性、服务编排和服务...
本资料包包含了关于WebService的源码和笔记,旨在帮助学习者深入理解并实践WebService的相关技术。 源码部分可能涵盖以下几个关键点: 1. **SOAP消息结构**:源码中可能会展示如何构建一个SOAP请求或响应消息。...
【WebService学习】 WebService是一种基于互联网的、松散耦合的分布式计算模型,它允许不同的系统之间进行数据交换和业务交互。这项技术的核心是利用XML(可扩展标记语言)作为数据交换的标准格式,SOAP(简单对象...
### Java基础学习笔记知识点 #### 一、Java学习路线概览 Java学习通常分为几个阶段,从基础到高级,逐步深化。以下是对给定文件中提到的学习路线的详细解析: ##### 第一阶段:Java基础 - **JAVASE**:Java标准版...
【WebService的实现——CXF学习笔记】 在Java世界中,WebService是一种通过标准协议(如SOAP)进行跨平台、跨语言通信的技术。CXF是Apache软件基金会的一个开源项目,它提供了构建和消费Web服务的工具和库。CXF支持...
本压缩包“webservice源码和笔记.rar”包含了关于Web服务的源代码和相关学习笔记,旨在帮助用户深入理解Web服务的工作原理及其在实际开发中的应用。 1. Web服务定义: Web服务是通过HTTP协议来传输数据的,这种服务...
1. **HTTP(超文本传输协议)**:HTTP是Web服务的基础,它是一个应用层协议,允许客户端(如浏览器或Web服务客户端)和服务器之间传输数据。HTTP协议使用TCP/IP协议栈,提供了一种可靠的请求/响应模式。HTTP有两种...
4. Web服务的调用依赖于HTTP协议,数据传输格式为SOAP,XML作为数据交换的基础。 在客户端应用中,首先需要创建一个代理类,这个代理类充当Web服务的本地代表,负责调用远程方法。当客户端调用代理类的方法时,代理...
【Web服务(Webservice)详解】 Web服务是一种基于互联网的标准方式,允许应用程序之间进行交互,实现了数据和功能的共享。它使用XML(可扩展标记语言)作为数据交换格式,通过SOAP(简单对象访问协议)传输数据,...
本笔记将探讨CXF Webservice的基础知识,包括其核心概念、工作原理以及如何通过CXF创建和消费Web服务。 1. **什么是Web服务?** Web服务是一种基于互联网的软件应用程序接口(API),允许两个或多个系统之间进行...
### OracleEBS-WebService开发笔记知识点总结 #### 一、概述 **OracleEBS-WebService开发笔记** 是一份详尽的文档,旨在介绍如何利用 WebService 技术进行 Oracle E-Business Suite (EBS) 的集成开发。该文档由 ...
学习本次公开课你将收获和体会到什么: 学习完本次公开课,你将深入理解Web Service,快速上手企业开发。 主要讲解内容如下: Web Service是什么?...Web Service快速入门 Web Service企业开发实例
Web Service入门学习笔记 Web Service是一种基于互联网的、平台无关的通信协议,它允许不同系统间的应用程序通过网络互相调用,实现数据交换和服务共享。在本文中,我们将深入探讨Web Service的基本概念,以及如何...