“基于 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. AE笔记

    我想做一个好玩的视频,需要用到AE,写点东西锻炼语言能力,视频教程后续录制到时放链接. 一.合成 拖进项目的视频要新建合成才能加以编辑,新建合成很简单,拖拽你的视频向下到一个类似相片的图标上面就新建成 ...

  2. Android开发探秘之二:导入存在的项目及其注意事项

    网上看到有jsoup写的例子,就下载下来进行了研究,但是发现不会导入,于是就百度一下,发现了方法:也就是依次点击“File”->“Import”->“General”->“Exist ...

  3. 自定义progressBar的旋转圆圈

    在手工打造下拉刷新功能 自带的progressBar太丑了 做个也不费事,一个简单的圆形 旋转动画加type是sweep的gradient渐变 <rotate //旋转动画xmlns:andro ...

  4. 第十章 系统级I/O

    第十章 系统级I/O 一.Unix I/O 1.一个unix文件就是一个m个字节的序列 2.unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(0) .标准输出(1)和标准错误(-1). 二 ...

  5. Linux第十一次学习笔记

    异常控制流 异常控制流(ECF)发生在计算机系统的各个层次 在硬件层,硬件检测到的事件会触发控制突然转移到异常处理程序. 在操作系统层,内核通过上下文转换将控制从一个用户进程转移到另一个用户进程. 在 ...

  6. 问卷调查——答卷

    1.你对自己的未来有什么规划?做了哪些准备?答:对未来的规划,就是像大多数人一样,在学校里有一个好的成绩,掌握扎实的专业基础,然后在国考上得到一个好成绩,得到一个好的工作机会,然后努力工作.目标很简单 ...

  7. dll,lib文件的导入

    这里介绍了两种方式调用,不过我一般用的是第一种,比较方便. 1动态库函数的调用,可以采用静态链接的方式 ,主要步骤如下: 1) 包含DLL中导出的头文件. 2) 采用#pragma comment(l ...

  8. 使用线程池模拟处理耗时任务,通过websocket提高用户体验

    前言 在文章开始之前,询问一下大家平时工作中后端处理批量任务(耗时任务)的时候,前端是如何告知用户任务的执行情况的? 楼主对这个问题想了下,决定使用websokect将这一过程展现给用户. 于是就有了 ...

  9. 打开mmc后添加单元,出现停止工作的解决方法

    出现mmc停止工作,一般是其他软件的影响.关闭其他软件就可以了,但不知道是什么软件,所以只有进入干净状态.(也可以进入安全模式) 1.如何进入干净启动状态: ===================== ...

  10. Express使用手记:核心入门

    入门简介 Express是基于nodejs的web开发框架.优点是易上手.高性能.扩展性强. 易上手:nodejs最初就是为了开发高性能web服务器而被设计出来的,然而相对底层的API会让不少新手望而 ...