“基于 XMLWeb Service 的 Java API”(JAX-WS)通过使用注释来指定与 Web Service 实现相关联的元数据以及简化 Web Service 的开发。注释描述如何将服务器端的服务实现作为 Web Service 来访问或者客户端的 Java 类如何访问 Web Service。

JAX-WS 编程标准支持将具有用于定义服务端点应用程序的元数据的 Java 类作为 Web Service 来注释以及注释客户机可以如何访问 Web Service。JAX-WS 支持使用基于 Metadata Facility for the Java Programming Language(Java 规范请求(JSR)175)规范和“用于 Java 平台的 Web Service 元数据”(JSR 181)规范的注释,还可以使用由 JAX-WS 2.0(JSR 224)规范定义的注释(包括 JAXB 注释)。通过使用符合 JSR 181 标准的注释,可以简单地注释服务实现类或服务接口,并且现在将应用程序作为 Web Service 来启用。通过在 Java 源代码中使用注释可以简化 Web Service 的开发和部署,因为会定义一些通常从部署描述符文件和 WSDL 文件中获得的附加信息,或者会将元数据从 XML 和 WSDL 映射至源工件中。

使用注释来配置绑定、处理程序链、端口类型的集合名称、服务以及其他 WSDL 参数。注释用于将 Java 映射至 WSDL 和模式,以及在运行时控制 JAX-WS 运行时处理和响应 Web Service 调用的方式。

下表中列示了 JAX-WS 支持的注释。注释的目标适用于下列 Java 对象:

  • 诸如 Java 类、枚举或接口等类型
  • 方法
  • 用于表示 Java 类中局部实例变量的字段
  • Java 方法中的参数
Web Service 元数据注释(JSR 181)

注释类: 注释: 属性:

 
javax.jws.WebService 当实现 Web Service 时,@WebService 注释标记 Java 类;实现 Web Service 接口时,标记服务端点接口(SEI)。

要点:

• 实现 Web Service 的 Java 类必须指定 @WebService 或 @WebServiceProvider 注释。不能同时提供这两种注释。

此注释适用于客户机/服务器 SEI 或 JavaBeans 端点的服务器端点实现类。

• 如果注释通过 endpointInterface 属性引用了某个 SEI,那么还必须使用 @WebService 注释来注释该 SEI。

• 请参阅适用于使用 @WebService 注释的类的方法的规则,以了解更多信息。

  • 注释目标:类型
  • 属性:
    - name
    wsdl:portType 的名称。缺省值为 Java 类或接口的非限定名称。(字符串)
    - targetNamespace
    指定从 Web Service 生成的 WSDL 和 XML 元素的 XML 名称空间。缺省值为从包含该 Web Service 的包名映射的名称空间。(字符串)
    - serviceName
    指定 Web Service 的服务名称:wsdl:service。缺省值为 Java 类的简单名称 + Service。(字符串)
    - endpointInterface
    指定用于定义服务的抽象 Web Service 约定的服务端点接口的限定名。如果指定了此限定名,那么会使用该服务端点接口来确定抽象 WSDL 约定。(字符串)
    - portName
    wsdl:portName。缺省值为 WebService.name+Port。(字符串)
    - wsdlLocation
    指定用于定义 Web Service 的 WSDL 文档的 Web 地址。Web 地址可以是相对路径或绝对路径。(字符串)
javax.jws.WebMethod @WebMethod 注释表示作为一项 Web Service 操作的方法。

将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。

要点:

• 仅支持在使用 @WebService 注释来注释的类上使用 @WebMethod 注释。

  • 注释目标:方法
  • 属性:
    - operationName
    指定与此方法相匹配的wsdl:operation 的名称。缺省值为 Java 方法的名称。(字符串)
    - action
    定义此操作的行为。对于 SOAP 绑定,此值将确定 SOAPAction 头的值。缺省值为 Java 方法的名称。(字符串)
    - exclude
    指定是否从 Web Service 中排除某一方法。缺省值为 false。(布尔值)
javax.jws.Oneway @Oneway 注释将一个方法表示为只有输入消息而没有输出消息的 Web Service 单向操作。

将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。

  • 注释目标:方法
  • 没有适用于 Oneway 注释的属性。
javax.jws.WebParam @WebParam 注释用于定制从单个参数至 Web Service 消息部件和 XML 元素的映射。

将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。

  • 注释目标:参数
  • 属性:
    - name
    参数的名称。如果操作是远程过程调用(RPC)类型并且未指定partName 属性,那么这是用于表示参数的 wsdl:part 属性的名称。如果操作是文档类型或者参数映射至某个头,那么 -name 是用于表示该参数的 XML 元素的局部名称。如果操作是文档类型、参数类型为 BARE 并且方式为 OUT 或 INOUT,那么必须指定此属性。(字符串)
    - partName
    定义用于表示此参数的 wsdl:part属性的名称。仅当操作类型为 RPC 或者操作是文档类型并且参数类型为BARE 时才使用此参数。(字符串)
    - targetNamespace
    指定参数的 XML 元素的 XML 名称空间。当属性映射至 XML 元素时,仅应用于文档绑定。缺省值为 Web Service 的 targetNamespace。(字符串)
    - mode
    此值表示此方法的参数流的方向。有效值为 IN、INOUT 和 OUT。(字符串)
    - header
    指定参数是在消息头还是消息体中。缺省值为 false。(布尔值)
javax.jws.WebResult @WebResult 注释用于定制从返回值至 WSDL 部件或 XML 元素的映射。

将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。

  • 注释目标:方法
  • 属性:
    - name
    当返回值列示在 WSDL 文件中并且在连接上的消息中找到该返回值时,指定该返回值的名称。对于 RPC 绑定,这是用于表示返回值的 wsdl:part属性的名称。对于文档绑定,-name参数是用于表示返回值的 XML 元素的局部名。对于 RPC 和 DOCUMENT/WRAPPED 绑定,缺省值为 return。对于 DOCUMENT/BARE 绑定,缺省值为方法名 + Response。(字符串)
    - targetNamespace
    指定返回值的 XML 名称空间。仅当操作类型为 RPC 或者操作是文档类型并且参数类型为 BARE 时才使用此参数。(字符串)
    - header
    指定头中是否附带结果。缺省值为false。(布尔值)
    - partName
    指定 RPC 或 DOCUMENT/BARE 操作的结果的部件名称。缺省值为@WebResult.name。(字符串)
javax.jws.HandlerChain @HandlerChain 注释用于使 Web Service 与外部定义的处理程序链相关联。

只能通过对 SEI 或实现类使用 @HandlerChain 注释来配置服务器端的处理程序。

但是可以使用多种方法来配置客户端的处理程序。可以通过对生成的服务类或者 SEI 使用 @HandlerChain 注释来配置客户端的处理程序。此外,可以按程序在服务上注册您自己的 HandlerResolver 接口实现,或者按程序在绑定对象上设置处理程序链。

  • 注释目标:类型
  • 属性:
    - file
    指定处理程序链文件所在的位置。文件位置可以是采用外部格式的绝对 java.net.URL,也可以是类文件中的相对路径。(字符串)
    - name
    指定配置文件中处理程序链的名称。(字符串)
javax.jws.SOAPBinding @SOAPBinding 注释指定 Web Service 与 SOAP 消息协议之间的映射。

将此注释应用于客户机或服务器服务端点接口(SEI)上的类型或方法,或者应用于 JavaBeans 端点的服务器端点实现类。

方法级别的注释仅限于它可以指定的对象,仅当style 属性为 DOCUMENT 时才使用该注释。如果未指定方法级别的注释,那么将使用类型的@SOAPBinding 行为。

  • 注释目标:类型或方法
  • 属性:
    - style
    定义发送至 Web Service 和来自 Web Service 的消息的编码样式。有效值为DOCUMENT 和 RPC。缺省值为DOCUMENT。(字符串)
    - use
    定义用于发送至 Web Service 和来自 Web Service 的消息的格式。缺省值为 LITERAL。ENCODED 在 Feature Pack for Web Services 中不受支持。(字符串)
    - parameterStyle
    确定方法的参数是否表示整个消息体,或者参数是否是封装在执行操作之后命名的顶级元素中的元素。有效值为 WRAPPED 或 BARE。对于DOCUMENT 类型的绑定只能使用BARE 值。缺省值为 WRAPPED。(字符串)
JAX-WS 注释(JSR 224)

注释类: 注释: 属性:

 
javax.xml.ws.BindingType @BindingType 注释指定在发布此类型的端点时要使用的绑定。

将此注释应用于 JavaBeans 端点或提供程序端点的服务器端点实现类。

要点:

• 可以通过将该注释的值指定为javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING或javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING来对 Java bean 端点实现类使用 @BindingType 注释以启用 MTOM。

  • 注释目标:类型
  • 属性:
    - value
    指示绑定标识 Web 地址。有效值为javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING、javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING和 javax.xml.ws.http.HTTPBinding.HTTP2HTTP_BINDING。缺省值为javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING。(字符串)
javax.xml.ws.RequestWrapper @RequestWrapper 注释提供 JAXB 生成的请求包装器 bean、元素名称和名称空间,用于对在运行时使用的请求包装器 bean 进行序列化和反序列化。

从 Java 对象开始时,此元素用来解决 document literal 方式下的重载冲突。在这种情况下,只有 className 属性是必需的。

将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。

  • 注释目标:方法
  • 属性:
    - localName
    指定用于表示请求包装器的 XML 模式元素的局部名称。缺省值为在 javax.jws.WebMethod 注释中定义的 operationName。(字符串)
    - targetNamespace
    指定请求包装器方法的 XML 名称空间。缺省值为 SEI 的目标名称空间。(字符串)
    - className
    指定用于表示请求包装器的类的名称。(字符串)
javax.xml.ws.ResponseWrapper @ResponseWrapper 注释提供 JAXB 生成的响应包装器 bean、元素名称和名称空间,用于对在运行时使用的响应包装器 bean 进行序列化和反序列化。

从 Java 对象开始时,此元素用来解决 document literal 方式下的重载冲突。在这种情况下,只有 className 属性是必需的。

将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。

  • 注释目标:方法
  • 属性:
    - localName
    指定用于表示请求包装器的 XML 模式元素的局部名称。缺省值为 operationName + Response。operationName 是在 javax.jws.WebMethod 注释中定义的。(字符串)
    - targetNamespace
    指定请求包装器方法的 XML 名称空间。缺省值为 SEI 的目标名称空间。(字符串)
    - className
    指定用于表示响应包装器的类的名称。(字符串)
javax.xml.ws.ServiceMode @ServiceMode 注释指定服务提供者是需要对整个协议消息具有访问权还是只需对消息有效内容具有访问权。

要点:

• 仅支持在使用 @WebServiceProvider 注释来注释的类上使用 @ServiceMode 注释。

  • 注释目标:类型
  • 属性:
    - value
    指示提供者类是接受消息的有效内容 PAYLOAD 还是整个消息 MESSAGE。缺省值为 PAYLOAD。(字符串)
javax.xml.ws.WebFault @WebFault 注释将 WSDL 故障映射至 Java 异常。对从 WSDL 故障消息引用的全局元素生成的 JAXB 类型进行序列化期间,该注释用来捕获故障的名称。它还可以用来定制从特定于服务的异常到 WSDL 故障的映射。

此注释只能应用于客户机或服务器上的故障实现类。

  • 注释目标:类型
  • 属性:
    - name
    指定用于表示 WSDL 文件中相应故障的 XML 元素的局部名称。必须指定实际值。(字符串)
    - targetNamespace
    指定用于表示 WSDL 文件中相应故障的 XML 元素的名称空间。(字符串)
    - faultBean
    指定故障 bean 类的名称。(字符串)
javax.xml.ws.WebServiceProvider @WebServiceProvider 注释表示一个类满足 JAX-WS 提供程序实现类的要求。

要点:

• 实现 Web Service 的 Java 类必须指定 @WebService 或 @WebServiceProvider 注释。不能同时提供这两种注释。

• 只有服务实现类才支持 @WebServiceProvider 注释。

• 任何具有 @WebServiceProvider 注释的类都必须具有名为 invoke 的操作。

  • 注释目标:类型
  • 属性:
    - targetNamespace
    指定从 Web Service 生成的 WSDL 和 XML 元素的 XML 名称空间。缺省值为从包含该 Web Service 的包名映射的名称空间。(字符串)
    - serviceName
    指定 Web Service 的服务名称:wsdl:service。缺省值为 Java 类的简单名称 + Service。(字符串)
    - portName
    wsdl:portName。缺省值为类的名称 + Port。(字符串)
    - wsdlLocation
    用于定义 Web Service 的 WSDL 文档的 Web 地址。此属性是必需的。(字符串)
JAX-WS 常用注释(JSR 250)

注释类: 注释: 属性:

 
javax.annotation.Resource @Resource 注释标记应用程序所需要的 WebServiceContext 资源。

将此注释应用于 JavaBeans 端点或提供程序端点的服务器端点实现类。对容器进行初始化时,容器会将 WebServiceContext 资源的实例添加到端点实现中。

  • 注释目标:字段或方法
  • 属性:
    - type
    指示资源的 Java 类型。您需要使用缺省值java.lang.Object 或者javax.xml.ws.Web ServiceContext值。如果类型是缺省值,那么必须将资源添加到字段或方法中。在这种情况下,字段的类型或者由方法定义的 JavaBeans 属性的类型必须为javax.xml.ws.WebServiceContext。(字符串)
javax.annotation.PostConstruct @PostConstruct 注释标记需要在对类执行依赖性注入之后才执行的方法。

将此注释应用于 JAX-WS 应用程序处理程序、JavaBeans 端点或提供程序端点的服务器端点实现类。

  • 注释目标:方法
javax.annotation.PreDestroy @PreDestroy 注释标记在容器除去实例时必须执行的方法。

将此注释应用于 JAX-WS 应用程序处理程序、JavaBeans 端点或提供程序端点的服务器端点实现类。

  • 注释目标:方法

适用于使用 @WebService 注释的类的方法的规则

下列规则适用于使用 @WebService 注释来注释的类的方法。

  • 如果某个实现类的 @WebService 注释引用了 SEI,那么该实例类不能具有任何 @WebMethod 注释。
  • 无论是否指定了 @WebMethod 注释,SEI 的所有公用方法都被认为是已显示的方法。在包含 exclude 属性的 SEI 上使用 @WebMethod 注释是不正确的。
  • 对于不引用 SEI 的实现类,如果对 @WebMethod 注释指定了值 exclude=true,那么不会显示该方法。如果未指定 @WebMethod 注释,那么将显示包括继承的方法在内的所有公用方法,但是不包括从 java.lang.Object 继承的方法。

Web Service(1.8)的更多相关文章

  1. SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)

    上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...

  2. Web Service学习之二:Web Service(for JAVA)的几种框架

    在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,这是Java6发布所 ...

  3. MyEclipse构建Web Service(Xfire框架)

    以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 任务要求: 使用Xfire实现一个简单的CalculatorWebServ ...

  4. 建立自己的Web service(SOAP篇)

    1.简介 这篇文章主要介绍采用SOAP来建立以及访问Web service接口. Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用 ...

  5. SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)

          虽然 JQuery 也能通过授权header实现跨域, 但SharePoint 提供了更简单的方法,它被实现在SP.RequestExecutor里 .它能访问跨域的服务包括REST AP ...

  6. Apache CXF实现Web Service(5)—— GZIP使用

    Apache CXF实现Web Service(5)-- GZIP使用 参考来源: CXF WebService整合Spring Apache CXF实现Web Service(1)--不借助重量级W ...

  7. Apache CXF实现Web Service(4)——Tomcat容器和Spring实现JAX-RS(RESTful) web service

    准备 我们仍然使用 Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 中的代码作为基础,并 ...

  8. Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service

    起步 参照这一系列的另外一篇文章: Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 首先 ...

  9. Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service

    实现目标 http://localhost:9000/rs/roomservice 为入口, http://localhost:9000/rs/roomservice/room为房间列表, http: ...

随机推荐

  1. 加密算法使用(四):AES的使用

    AES是一种对称加密方式,比DES更为安全,用一个秘钥加密数据之后,可以用同一个秘钥对加密后的数据解密还原,以下是一套以字符串为例子的使用全过程演示, 用到了 commons-codec.jar pa ...

  2. perl 简单学习,安装perl模块

    检查是否安装了某个perl模块 有多种方式 0.perldoc perlinstall 列出所有的模块及版本号 1. perl -M模块名 -e 1(模块名不加空格) 没有返回值则说明有此模块 2.p ...

  3. gunzip 和 unzip 解压文件到指定的目录

    Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz  相应的解压缩命令则是 gunzip 和 unzi ...

  4. 通过数据库方式访问excel 2007及其以后(xlsx)文件的连接字符串

    sqlconn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\test3.xls;Extended Properties=&q ...

  5. 虚拟机安装Mac OS X ----- VM12安装Mac OS X

    Windows下虚拟机安装Mac OS X -– VM12安装Mac OS X 10.11 随着Iphone在国内大行其道,越来越多的开发者涌入iOS开发大军 中,但都苦于没有苹果机,本文即将介绍WI ...

  6. 创建Spring容器

    对于使用Spring的web应用,无须手动创建Spring容器,而是通过配置文件,声明式的创建Spring容器.在Web应用中,创建Spring容器有如下两种方式:1.直接在web.xml文件中配置: ...

  7. 微信小程序全选,微信小程序checkbox,微信小程序购物车

    微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组  1.标题titl ...

  8. 20145215《Java程序设计》第4周学习总结

    20145215<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承作为面向对象的第二大特征,基本上就是避免多个类间重复定义共同行为.即当多个类中存在相同属性和行为 ...

  9. c#字符串转换为日期,支持任意字符串

    文章关键字: c#字符串转换为日期 c#日期转换字符串   字符串转换日期   字符串转换为date   整数转换为字符串   浮点数转换为字符串 字符串转换为时间   将字符串转换为时间   字符转 ...

  10. Gitlab的develop角色的人没有权限无法提交的问题解决方案

    问题 事情是这样的,最近跟几位同事搞一些东西,打算在Gitlab上建一个仓库,然后协同开发. 我建好仓库,将其他几位同事添加进来,角色分配为Develop. 之后提交初始代码到master分支后,他们 ...