Java6中实现Web服务
来源:优易学  2011-12-26 16:26:21   【优易学:中国教育考试门户网】   资料下载   IT书店

  在第二章中,我们演示了如何使用基本的POX-over-HTTP方法来实现Web服务,同时,我们也介绍了SOAP。SOAP现在已经成为业界不可或缺的技术和标准,因为当今大多数跨越合作伙伴的B2B的消息传输都是基于SOAP协议的。但SOAP(简单对象访问协议)是否象它的名字喻示的那样“简单”,人们仍有争议。但有一点是毋庸置疑的,SOAP是一种开放的标准,业界提供了支持SOAP开发的工具和框架,对SOAP进行了广泛的支持。几乎所有的Web服务堆栈都采用了SOAP作为网络传输协议,基于Java的Web服务框架更是如此。为了使用Java实现您自己的Web服务,或者在Java代码中访问第三方提供的Web服务,您需要了解,您有多种方法来实现Web服务。本章就来向您介绍在Java/J2EE环境下,实现Web服务的主要方法,它们分别是:
  (1) 使用JAX-WS 2.0来实现Web服务
  (2) 使用Apache Axis来实现Web服务
  (3) 使用Spring来实现Web服务
  (4) 使用XFire来实现Web服务
  我们将通过代码实例,从头开始演示如何使用上面的四种技术框架来创建Web服务,以及如何在代码中访问已有的Web服务。
  使用JAX-WS 2.0来实现Web服务
  JAX-WS是Java API for XML Web Service(XML Web服务的Java编程接口)的缩写,JAX-WS2.0规范替代了以前的JAX-RPC1.0规范,它是基于JSR224规范的下一代Web服务开发的编程接口。
  JAX-WS2.0基础
  JAX-WS2.0项目是在JAX-WS规范参考实现的代码基的基础上进行开发和演变的,您可以通过https://jax-ws.dev.java.net/ 了解这个项目。现在,该项目既支持JAX-WS2.0规范,也支持JAX-WS2.1规范。
  下面列出了JAX-WS2.0实现中的一些新特性:
  (1) 直接支持基于JAXB2.0的数据绑定
  (2) 支持最新的W3C和WS-I标准(如SOAP 1.2、WSDL 1.2和SAAJ 1.3等标准)
  (3) 对Java和WSDL之间映射的元素据进行了标准化
  (4) 易于开发
  (5) 使Web服务的升级变得简单
  (6) 对Web服务的处理器框架进行了升级
  (7) 支持异步RPC和非HTTP传输
  JAX-WS2.0另一个令人振奋的特点是,它已经包含在Java6标准版内,这意味着基于JAX-WS2.0的代码和组件能在任何与J2EE兼容的服务器(如GlassFish服务器)上运行,同时,也可以在Java6标准版的环境下运行,这对Java开发者来说确实是一个很大的优势。而此前只有.Net的开发者享有这项权利(.Net栈支持轻量级的Web服务开发)。
  在Java6平台下,JAX-WS2.0提供了以下全新的API,用于创建Web应用和Web服务。
  API
  API所在的包
  JAX-WS
  javax.xml.ws
  SAAJ
  javax.xml.soap
  WS Metadata
  javax.jws
  在Java6标准版中实现Web服务
  下面我们先从最简单的Web服务入手,不使用任何应用服务器和第三方Web服务器,而只是用Java6标准版及其自带的工具,来开发并部署一个简单的Web服务。
  服务器及客户端代码
  如前所述,我们现在就开始开发这个简单的Web服务,这是我们的第一个示例,具体代码请参见“ch03\01_JaxWS\JavaStandAlone”目录。(译者注:本书代码请从http://www.packtpub.com/files/code/3216_Code.zip处下载。)
  服务器端代码由三个Java文件构成,位于\ch03\01_JaxWS\JavaStandAlone\Server\src目录,下面是对代码的详细解释:
  Hello.java
  Hello是一个Java接口,其源代码如下:
  public interface IHello{
  String sayHello (String name);
  }
  HelloImpl.java
  HelloImpl 实现了IHello接口中定义的业务逻辑方法,该方法将暴露出来作为Web服务。
  import javax.jws.WebService;
  import javax.jws.soap.SOAPBinding;
  import javax.jws.WebMethod;
  @WebService(name="IHello", serviceName="HelloService")
  @SOAPBinding(style=SOAPBinding.Style.RPC)
  public class HelloImpl implements IHello{
  @WebMethod(operationName = "sayHello")
  public String sayHello(String name){
  System.out.println("HelloImpl.sayHello...");
  return "\nHello From Server !! : " + name;
  }
  }
  在上面的HelloImpl的实现代码中,我们可以看到一个叫javax.jws.WebService的Java注解,这个@WebService注解是将一个普通类定义为Web服务发布对象(亦称终端,endpoint),javax.jws.soap.SOAPBinding这个注解指明了如何将Web服务绑定到SOAP消息上。HelloImpl只声明了一个方法sayHello,该方法带@WebMethod的注解,这个注解将会把该方法暴露给客户端。其实,青年人网提示要创建一个JAX-WS服务并不需要IHello接口,我们这里只是让大家保持良好的编程习惯而已。

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训