JWS-批注参考-Java-Web-Service-批注_第1页
JWS-批注参考-Java-Web-Service-批注_第2页
JWS-批注参考-Java-Web-Service-批注_第3页
JWS-批注参考-Java-Web-Service-批注_第4页
JWS-批注参考-Java-Web-Service-批注_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JWS 批注参考 下列部分提供了有关标准 (JSR-181) JWS 批注和 WebLogic 特定 JWS 批注的参考文档: HYPERLINK /wls92/webserv/annotations.html l wp1038924 JWS 批注标记概述 HYPERLINK /wls92/webserv/annotations.html l wp1040606 标准 JSR-181 JWS 批注参考 HYPERLINK /wls92/webserv/annotations.html l wp1038932 WebLogic 特定的 JWS 批注参考 JWS 批注标记概述 WebLogic W

2、eb Service 编程模型使用新的 HYPERLINK /j2se/1.5.0/docs/relnotes/features.html l annotations JDK 5.0 metadata annotations 功能( HYPERLINK /en/jsr/detail?id=175 JSR-175 指定)。在此编程模型中,您要创建批注的 Java 文件,然后使用 Ant 任务将该文件编译到 Java 源代码中,并生成所有相关工件。 Java Web Service (JWS) 批注的文件是 Web Service 的核心。它包含确定 Web Service 行为方式的 Java

3、代码。JWS 文件是使用批注来指定 Web Service 的形状和特征的普通 Java 类文件。可在 JWS 文件中使用的 JWS 批注包括 HYPERLINK /en/jsr/detail?id=181 Web Services Metadata for the Java Platform specification (JSR-181) 中定义的标准批注以及 WebLogic 特定的一组批注。本文档提供了有关这两个系列批注的参考信息。 您可以将 JWS 批注定位在 JWS 文件的类级别、方法级别或参数级别。某些批注可以定位在多个级别,如可定位在类级别和方法级别的 SecurityRoles

4、。此部分中的文档列出了可以将每个批注定位到的级别。 下列示例显示了一个简单 JWS 文件,该文件同时使用了标准 JSR-181 JWS 批注和 WebLogic 特定的 JWS 批注(以粗体显示): package plex;/ 导入标准 JWS 批注接口import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;/ 导入 WebLogic 特定的 JWS 批注接口impo

5、rt weblogic.jws.WLHttpTransport;/ 导入 BasicStruct JavaBeanimport plex.BasicStruct;/ 标准 JWS 批注,用于指定 Web Service 的/ portType 名称为“ComplexPortType”,其公共服务名为“ComplexService”,/ 在生成的 WSDL 中使用的 targetNamespace 为“”WebService(serviceName=ComplexService, name=ComplexPortType, targetNamespace=)/ 标准 JWS 批注,用于指定这是

6、document-literal-wrapped/ Web ServiceSOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)/ WebLogic 特定的 JWS 批注,用于指定生成 Web Service 的 URI/ 所使用的上下文路径和服务 URI 为“complex/ComplexService”WLHttpTransport(contextPath=complex, serviceUri=

7、ComplexService, portName=ComplexServicePort)/* * 此 JWS 文件形成了 WebLogic Web Service 的基础。这些 Web Service * 有两个公共操作: * * - echoInt(int) * - echoComplexType(BasicStruct) * * 这些 Web Service 定义为“document-literal”服务,这表示 * SOAP 消息具有单个部分来引用定义 * 整个主体的 XML Schema 元素。* * 作者版权所有 (c) 2005,BEA Systems。保留所有权利。*/publi

8、c class ComplexImpl / 标准 JWS 批注,用于指定方法应公开为 / 公共操作。因为批注不包括 / 成员值“operationName”,所以操作的公共名称 / 将与方法名相同:echoInt。/ / WebResult 批注用于指定生成的 WSDL 中的 / 操作结果的名称是“IntegerOutput”,而不是 / 默认名称“return”。WebParam 批注用于指定 WSDL 文件中的 / 输入参数名为“IntegerInput”,而不是该参数的 / Java 名称“input”。 WebMethod() WebResult(name=IntegerOutput,

9、 targetNamespace=/complex) public int echoInt( WebParam(name=IntegerInput, targetNamespace=/complex) int input) System.out.println(echoInt + input + to you too!); return input; / 标准 JWS 批注,将方法“echoStruct”公开为 / 名为“echoComplexType”的公共操作 / WebResult 批注用于指定生成的 WSDL 中的操作 / 结果的名称为“EchoStructReturnMessage”

10、, / 而不是默认名称“return”。 WebMethod(operationName=echoComplexType) WebResult(name=EchoStructReturnMessage, targetNamespace=/complex) public BasicStruct echoStruct(BasicStruct struct) System.out.println(echoComplexType called); return struct; 标准 JSR-181 JWS 批注参考 HYPERLINK /en/jsr/detail?id=181 Web Service

11、s Metadata for the Java Platform (JSR-181) 规范定义了可在 JWS 文件中用来指定 Web Service 的形状和行为的标准批注。此部分简要描述了每个批注以及它的特性。有关示例请参阅 HYPERLINK /wls92/webserv/jws.html JWS 文件编程。有关这些批注的更多详细信息,如 Java 批注类型定义和其他示例,请参阅该规范。 此部分介绍了下列标准 JWS 批注: HYPERLINK /wls92/webserv/annotations.html l wp1042425 javax.jws.WebService HYPERLIN

12、K /wls92/webserv/annotations.html l wp1042436 javax.jws.WebMethod HYPERLINK /wls92/webserv/annotations.html l wp1043092 javax.jws.Oneway HYPERLINK /wls92/webserv/annotations.html l wp1043790 javax.jws.WebParam HYPERLINK /wls92/webserv/annotations.html l wp1043094 javax.jws.WebResult HYPERLINK /wls92

13、/webserv/annotations.html l wp1044334 javax.jws.HandlerChain HYPERLINK /wls92/webserv/annotations.html l wp1044381 javax.jws.soap.SOAPBinding HYPERLINK /wls92/webserv/annotations.html l wp1045039 javax.jws.soap.SOAPMessageHandler HYPERLINK /wls92/webserv/annotations.html l wp1045802 javax.jws.soap.I

14、nitParam HYPERLINK /wls92/webserv/annotations.html l wp1042488 javax.jws.soap.SOAPMessageHandlers javax.jws.WebService 描述 目标:类 指定实现 Web Service 的 JWS 文件。 特性 表 B-1 javax.jws.WebService JWS 批注的特性 名称 描述 数据类型 是否必需? name Web Service 的名称。映射到 WSDL 文件中的 元素。 默认值为 JWS 文件中 Java 类的非限定名称。 String 否 targetNamespac

15、e 用于从此 Web Service 生成的 WSDL 和 XML 元素的 XML 名称空间。 默认值由 HYPERLINK /xml/jaxrpc/index.jsp JAX-RPC specification 指定。 String 否 serviceName Web Service 的服务名。映射到 WSDL 文件中的 元素。 默认值为 JWS 文件中 Java 类的非限定名称,后面加上字符串 Service。 String 否 wsdlLocation 预定义 WSDL 文件的相对或绝对 URL。如果指定此特性,则当 JWS 文件与 WSDL 文件中的端口类型和绑定不一致时,jwsc A

16、nt 任务不生成 WSDL 文件,并且会返回错误。 注意:wsdlc Ant 任务从 WSDL 生成端点接口 JWS 文件时使用此特性。通常情况下,用户在其自己的 JWS 文件中永远不会使用该特性。String 否 endpointInterface 现有服务端点接口文件的完全限定名称。如果指定此特性,则假设您已经创建了该端点接口文件,并且该文件位于 CLASSPATH 中。 String 否 示例 WebService(name=JMSTransportPortType, serviceName=JMSTransportService, targetNamespace=)javax.jws.

17、WebMethod 描述 目标:方法 指定方法公开为该 Web Service 的公共操作。必须明确使用此批注来公开方法;如果不指定此批注,该方法则默认为不公开。 特性 表 B-2 javax.jws.WebMethod JWS 批注的特性 名称 描述 数据类型 是否必需? operationName 操作的名称。映射到 WSDL 文件中的 元素。 默认值为该方法的名称。 String 否 action 此操作的操作。对于 SOAP 绑定,此特性的值决定 SOAP 消息中 SOAPAction 头的值。 String 否 示例 WebMethod(operationName=echoCompl

18、exType) public BasicStruct echoStruct(BasicStruct struct) . javax.jws.Oneway 描述 目标:方法 指定该方法只具有输入参数,但不返回值。此批注必须只与 WebMethod 批注一起使用。于返回的内容不是 void、采用 Holder 类作为输入参数,或者抛出 checked 异常的方法使用此批注是错误的。 此批注没有任何特性。 示例 WebMethod() Oneway() public void helloWorld(String input) . javax.jws.WebParam 描述

19、目标:参数 自定义 Web Service 的操作输入参数和生成的 WSDL 文件的元素之间的映射。还用于指定参数的行为。 特性 表 B-3 javax.jws.WebParam JWS 批注的特性 名称 描述 数据类型 是否必需? name WSDL 文件中参数的名称。 对于 RPC 样式的 Web Service,该名称映射到表示该参数的 元素。对于文档样式的 Web Service,该名称为表示该参数的 XML 元素的本地名称。 默认值为该方法的参数的名称。 String 否 targetNamespace 该参数的 XML 名称空间。此值仅用于文档样式的 Web Service,其中该

20、参数映射到 XML 元素。 默认值为该 Web Service 的 targetNamespace。 String 否 mode 该参数的流方向。 有效值为: WebParam.Mode.IN WebParam.Mode.OUT WebParam.Mode.INOUT 默认值为 WebParam.Mode.IN。 如果指定 WebParam.Mode.OUT 或 WebParam.Mode.INOUT,则该参数的数据类型必须为 Holder 或扩展 Holder。有关详细信息,请参阅 HYPERLINK /xml/jaxrpc/index.jsp JAX-RPC specification。

21、WebParam.Mode.OUT 和 WebParam.Mode.INOUT 模式仅对于 RPC 样式的 Web Service 或映射到头的参数受支持。 enum 否 header 指定该参数的值是否存在于 SOAP 头中。默认情况下,参数位于 SOAP 正文中。 有效值为 true 和 false。默认值为 false。 boolean 否 示例 WebMethod() public int echoInt( WebParam(name=IntegerInput, targetNamespace=/complex) int input) . javax.jws.WebResult 描述

22、目标:方法 自定义 Web Service 操作返回值和生成的 WSDL 文件的对应元素之间的映射。 特性 表 B-4 javax.jws.WebResult JWS 批注的特性 名称 描述 数据类型 是否必需? name WSDL 文件中参数的名称。 对于 RPC 样式的 Web Service,该名称映射到表示返回值的 元素。对于文档样式的 Web Service,该名称为表示返回值的 XML 元素的本地名称。 默认值为硬编码名称 result。 String 否 targetNamespace 返回值的 XML 名称空间。此值仅用于文档样式的 Web Service,其中返回值映射到 X

23、ML 元素。 默认值为该 Web Service 的 targetNamespace。 String 否 示例 WebMethod(operationName=echoComplexType) WebResult(name=EchoStructReturnMessage, targetNamespace=/complex) public BasicStruct echoStruct(BasicStruct struct) . javax.jws.HandlerChain 描述 目标:类 将 Web Service 与包含处理程序链的配置的外部文件相关联。配置包括链中处理程序的列表、它们的执行顺

24、序、初始化参数等。 如果为下列情况,则请在 JWS 文件中使用 HandlerChain 批注,而不要使用 SOAPMessageHandlers 批注: 希望多个 Web Service 共享同一个配置。 处理程序链包括用于多个传输的处理程序。 希望能够更改 Web Service 的处理程序链配置,且不重新编译实现它的 JWS 文件。 将此批注与 SOAPMessageHandlers 批注进行组合是错误的。 有关外部配置文件的 XML Schema、有关创建该文件的其他信息,以及其他示例,请参阅 HYPERLINK /en/jsr/detail?id=181 Web Services M

25、etadata for the Java Platform specification。 特性 表 B-5 javax.jws.HandlerChain JWS 批注的特性 名称 描述 数据类型 是否必需? file 处理程序链配置文件的相对或绝对 URL。相对 URL 为相对于 JWS 文件位置的 URL。 String 是 name 希望与该 Web Service 相关联的处理程序链的名称(位于由 file 特性指向的配置文件中)。 String 是 示例 package examples.webservices.handler;.WebService (.)HandlerChain(f

26、ile=HandlerConfig.xml, name=SimpleChain)public class HandlerChainImpl .javax.jws.soap.SOAPBinding 描述 目标:类 指定 Web Service 到 SOAP 消息协议的映射。 特性 表 B-6 javax.jws.soap.SOAPBinding JWS 批注的特性 名称 描述 数据类型 是否必需? style 指定请求和响应 SOAP 消息的消息样式。 有效值为: SOAPBinding.Style.RPC SOAPBinding.Style.DOCUMENT。 默认值为 SOAPBinding

27、.Style.DOCUMENT。 enum 否 use 指定请求和响应 SOAP 消息的格式设置样式。 有效值为: SOAPBinding.Use.LITERAL SOAPBinding.Use.ENCODED 默认值为 SOAPBinding.Use.LITERAL。 enum 否 parameterStyle 确定方法参数是否表示整个消息正文,或者这些参数是否为包装在根据该操作命名的顶级元素中的元素。 有效值为: SOAPBinding.ParameterStyle.BARE SOAPBinding.ParameterStyle.WRAPPED 默认值为 SOAPBinding.Param

28、eterStyle.WRAPPED 注意:此特性仅适用于 document-literal 样式的 Web Service。换句话说,只有也将 style 特性设置为 SOAPBinding.Style.DOCUMENT、use 特性设置为 SOAPBinding.Use.LITERAL 的情况下才能指定此特性。enum 否 示例 package examples.webservices.bindings;.WebService (.)SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, param

29、eterStyle=SOAPBinding.ParameterStyle.WRAPPED)public class BindingsImpl .javax.jws.soap.SOAPMessageHandler 描述 目标:无;此批注只能在 SOAPMessageHandler 数组内使用。 指定 SOAPMessageHandler 数组中的某个特定 SOAP 消息处理程序。该批注包括指定该处理程序的类名、初始化参数、该处理程序处理的 SOAP 头的列表等的特性。 特性 表 B-7 javax.jws.soap.SOAPMessageHandler JWS 批注的特性 名称 描述 数据类型

30、是否必需? name SOAP 消息处理程序的名称。 默认值为实现 Handler 接口(或扩展 GenericHandler 抽象类)的类的名称。 String 否 className 处理程序类的名称。 String 是 initParams 在初始化期间传递到该处理程序类的名称/值对数组。 InitParam 数组 否 roles 该处理程序实现的 SOAP 角色的列表。 String 数组 否 headers 该处理程序处理的 SOAP 头的列表。 此数组中的每个元素都包含一个定义该处理程序所处理的头元素的 Qname。 String 数组 否 示例 package examples.

31、webservices.handlers;.WebService (.)SOAPMessageHandlers ( SOAPMessageHandler ( className=examples.webservices.soap_handlers.simple.ServerHandler1), SOAPMessageHandler ( className=examples.webservices.soap_handlers.simple.ServerHandler2) )public class HandlersImpl .javax.jws.soap.InitParam 描述 目标:无;此批

32、注只能用作 SOAPMessageHandler 批注的 initParams 特性的值。 在 SOAPMessageHandler 批注的 initParams 特性中使用此批注可指定在初始化期间传递到处理程序类的参数(名称/值对)数组。 特性 表 B-8 javax.jws.soap.InitParam JWS 批注的特性 名称 描述 数据类型 是否必需? name 初始化参数的名称。 String 是 value 初始化参数的值。 String 是 javax.jws.soap.SOAPMessageHandlers 描述 目标:类 指定在 Web Service 的操作之前和之后执行的

33、 SOAP 消息处理程序数组。使用 SOAPMessageHandler 批注可指定某个特定的处理程序。因为在 JWS 文件本身中指定处理程序列表,所以处理程序链的配置嵌入在 Web Service 中。 如果属于下列情况,则请使用 SOAPMessageHandlers 批注,而不要使用 HandlerChain: 希望将处理程序链的配置嵌入到 Web Service 本身内,而不是在外部文件中指定该配置。 处理程序链只包括 SOAP 处理程序,而不包括任何其他传输的处理程序。 希望每次更改处理程序链配置时都重新编译 JWS 文件。 SOAPMessageHandlers 批注是 SOAPM

34、essageHandler 类型数组。这些处理程序按照它们在批注中的显示顺序运行,首先运行数组中的第一个处理程序。 此批注没有任何特性。 示例 package examples.webservices.handlers;.WebService (.)SOAPMessageHandlers ( SOAPMessageHandler ( className=examples.webservices.soap_handlers.simple.ServerHandler1), SOAPMessageHandler ( className=examples.webservices.soap_handle

35、rs.simple.ServerHandler2) )public class HandlersImpl .WebLogic 特定的 JWS 批注参考 除了标准的 JSR-181 JWS 批注之外,WebLogic Web Service 还定义了一系列可以用来指定行为和功能的 JWS 批注。具体来说,这些 WebLogic 特定的批注为: HYPERLINK /wls92/webserv/annotations.html l wp1050972 weblogic.jws.AsyncFailure HYPERLINK /wls92/webserv/annotations.html l wp10

36、51010 weblogic.jws.AsyncResponse HYPERLINK /wls92/webserv/annotations.html l wp1081014 weblogic.jws.Binding HYPERLINK /wls92/webserv/annotations.html l wp1047955 weblogic.jws.BufferQueue HYPERLINK /wls92/webserv/annotations.html l wp1079448 weblogic.jws.Callback HYPERLINK /wls92/webserv/annotations.

37、html l wp1079458 weblogic.jws.CallbackMethod HYPERLINK /wls92/webserv/annotations.html l wp1079502 weblogic.jws.CallbackService HYPERLINK /wls92/webserv/annotations.html l wp1061784 weblogic.jws.Context HYPERLINK /wls92/webserv/annotations.html l wp1048334 weblogic.jws.Conversation HYPERLINK /wls92/

38、webserv/annotations.html l wp1048392 weblogic.jws.Conversational HYPERLINK /wls92/webserv/annotations.html l wp1083919 weblogic.jws.MessageBuffer HYPERLINK /wls92/webserv/annotations.html l wp1050331 weblogic.jws.Policies HYPERLINK /wls92/webserv/annotations.html l wp1050414 weblogic.jws.Policy HYPE

39、RLINK /wls92/webserv/annotations.html l wp1057155 weblogic.jws.ReliabilityBuffer HYPERLINK /wls92/webserv/annotations.html l wp1079550 weblogic.jws.ReliabilityErrorHandler HYPERLINK /wls92/webserv/annotations.html l wp1048639 weblogic.jws.ServiceClient HYPERLINK /wls92/webserv/annotations.html l wp1

40、079627 weblogic.jws.StreamAttachments HYPERLINK /wls92/webserv/annotations.html l wp1057803 weblogic.jws.Transactional HYPERLINK /wls92/webserv/annotations.html l wp1079641 weblogic.jws.Types HYPERLINK /wls92/webserv/annotations.html l wp1090757 weblogic.jws.WildcardBinding HYPERLINK /wls92/webserv/

41、annotations.html l wp1091634 weblogic.jws.WildcardBindings HYPERLINK /wls92/webserv/annotations.html l wp1090743 weblogic.jws.WLHttpTransport HYPERLINK /wls92/webserv/annotations.html l wp1048820 weblogic.jws.WLHttpsTransport HYPERLINK /wls92/webserv/annotations.html l wp1048878 weblogic.jws.WLJmsTr

42、ansport HYPERLINK /wls92/webserv/annotations.html l wp1051699 weblogic.jws.WSDL HYPERLINK /wls92/webserv/annotations.html l wp1079681 weblogic.jws.security.CallbackRolesAllowed HYPERLINK /wls92/webserv/annotations.html l wp1068890 weblogic.jws.security.RolesAllowed HYPERLINK /wls92/webserv/annotatio

43、ns.html l wp1068920 weblogic.jws.security.RolesReferenced HYPERLINK /wls92/webserv/annotations.html l wp1071546 weblogic.jws.security.RunAs HYPERLINK /wls92/webserv/annotations.html l wp1068929 weblogic.jws.security.SecurityRole HYPERLINK /wls92/webserv/annotations.html l wp1068941 weblogic.jws.secu

44、rity.SecurityRoleRef HYPERLINK /wls92/webserv/annotations.html l wp1068959 weblogic.jws.security.UserDataConstraint HYPERLINK /wls92/webserv/annotations.html l wp1072758 weblogic.jws.security.WssConfiguration HYPERLINK /wls92/webserv/annotations.html l wp1079705 weblogic.jws.soap.SOAPBinding HYPERLI

45、NK /wls92/webserv/annotations.html l wp1082878 weblogic.jws.security.SecurityRoles(不赞成使用) HYPERLINK /wls92/webserv/annotations.html l wp1069725 weblogic.jws.security.SecurityIdentity (不赞成使用) weblogic.jws.AsyncFailure 描述 目标:方法 指定处理主 JWS 文件异步调用另一个 Web Service 的操作时的潜在失败的方法。 从 JWS 文件异步调用 Web Service 操作时

46、,不会在操作调用之后立即返回响应(或发生失败时的异常),而是在之后的某个时间点返回。因为操作调用不会等待响应,所以在 JWS 文件中必须有一个单独的方法在最终返回响应对其进行处理;与之相似,必须有另一个方法处理潜在的失败。使用 AsyncFailure 批注可在 JWS 文件中指定要处理异步操作调用的潜在失败的方法。 AsyncFailure 批注采用两个参数:要调用的 Web Service 的 JAX-RPC 存根控件的名称,以及要异步调用的操作的名称。该 JAX-RPC 存根控件已经成为了带有 ServiceClient 批注的批注。 处理异步失败的方法必须遵守下列指南: 返回 void

47、。 名称为 onMethodNameAsyncFailure,其中 MethodName 为要异步调用的方法的名称(首字母总是大写)。 在主 JWS 文件中,对于异步方法的调用如下所示: port.getQuoteAsync(apc, symbol);其中 getQuote 为该方法的非异步名称,apc 为异步预调用上下文,symbol 为 getQuote 操作的一般参数。 具有两个参数:异步调用后上下文(包含在 weblogic.wsee.async.AsyncPostCallContext 对象中)和 Throwable 异常(可能由异步操作调用抛出)。 在该方法自身中,您可以从上下文获

48、得该方法失败的详细信息,查询特定类型的异常,并采取相应的操作。 通常情况下,总是使用 AsyncFailure 批注来明确指定处理异步操作失败的方法。只有在希望一个方法来处理调用多个不同 Web Service 的两个或多个存根控件的失败时,才不使用此批注。这种情况下,尽管这些存根控件连接不同的 Web Service,但是每个 Web Service 必须具有名称相似的方法,因为 Web Service 运行时依赖方法名 (onMethodNameAsyncFailure) 来确定如何处理异步失败,而不依赖批注。但是,如果您总是希望在存根控件和处理来自其中一个操作的异步失败的方法之间存在一对

49、一的对应关系,BEA 则建议您明确使用 AsyncFailure。 有关使用此批注的详细信息和示例,请参阅 HYPERLINK /wls92/webserv/advanced.html l wp256268 使用异步请求响应调用 Web Service。 特性 表 B-9 weblogic.jws.AsyncFailure JWS 批注标记的特性 名称 描述 数据类型 是否必需? target 要异步调用其操作的 Web Service 的 JAX-RPC 存根控件的名称。 该存根控件已经使用 ServiceClient 字段级别批注进行了批注。 String 是 operation 要异步调

50、用的操作的名称。 这是该操作的实际名称,与显示在 WSDL 文件中的名称相同。当您在 JWS 文件的主代码中调用此操作时,要将 Async 添加到其名称。 例如,如果设置 operation=getQuote,则在 JWS 文件中要按照下列方式对其进行异步调用: port.getQuoteAsync(apc, symbol);String 是 示例 下面的示例代码段显示了如何在异步调用另一个 Web Service 的操作的 JWS 文件中使用 AsyncFailure 批注;只包括了相关的 Java 代码: package examples.webservices.async_req_res

51、;.public class StockQuoteClientImpl ServiceClient(wsdlLocation=http:/localhost:7001/async/StockQuote?WSDL, serviceName=StockQuoteService, portName=StockQuote) private StockQuotePortType port; WebMethodpublic void getQuote (String symbol) AsyncPreCallContext apc = AsyncCallContextFactory.getAsyncPreC

52、allContext(); apc.setProperty(symbol, symbol); try port.getQuoteAsync(apc, symbol ); System.out.println(in getQuote method of StockQuoteClient WS); catch (RemoteException e) e.printStackTrace(); . AsyncFailure(target=port, operation=getQuote) public void onGetQuoteAsyncFailure(AsyncPostCallContext a

53、pc, Throwable e) System.out.println(); e.printStackTrace(); System.out.println(); 该示例显示了一个名为 port 的 JAX-RPC 存根控件,该存根控件用于调用位于 http:/localhost:7001/async/StockQuote 的 Web Service。getQuote 操作是异步调用的,根据 AsyncFailure 批注的指定,从此调用产生的任何异常都由 onGetQuoteAsyncFailure 方法处理。 weblogic.jws.AsyncResponse 描述 目标:方法 指定处理

54、主 JWS 文件异步调用另一个 Web Service 的操作时的响应的方法。 从 JWS 文件异步调用 Web Service 操作时,不会在操作调用之后立即返回响应,而是在之后的某个时间点返回。因为操作调用不会等待响应,所以在 JWS 文件中必须有一个单独的方法在最终返回响应时对其进行处理。使用 AsyncResponse 批注可在 JWS 文件中指定要处理异步操作调用的响应的方法。 AsyncResponse 批注采用两个参数:要调用的 Web Service 的 JAX-RPC 存根控件的名称,以及要异步调用的操作的名称。该 JAX-RPC 存根控件已经成为了带有 ServiceCli

55、ent 批注的批注。 处理异步响应的方法必须遵守下列指南: 返回 void。 名称为 onMethodNameAsyncResponse,其中 MethodName 为要异步调用的方法的名称(首字母总是大写)。 在主 JWS 文件中,对于异步方法的调用如下所示: port.getQuoteAsync(apc, symbol);其中 getQuote 为该方法的非异步名称,apc 为异步预调用上下文,symbol 为 getQuote 操作的一般参数。 具有两个参数:异步调用后上下文(包含在 weblogic.wsee.async.AsyncPostCallContext 对象中)和该操作的一般

56、返回值。 在异步响应方法自身中,您要添加处理该响应的代码。您还可以从上下文获得有关该方法调用的详细信息。 通常情况下,总是使用 AsyncResponse 批注来明确指定处理异步操作响应的方法。只有在希望一个方法来处理调用多个不同 Web Service 的两个或多个存根控件的响应时,才不使用此批注。这种情况下,尽管这些存根控件连接不同的 Web Service,但是每个 Web Service 必须具有一个名称相似的方法,因为 Web Service 运行时依赖方法名 (onMethodNameAsyncResponse) 来确定如何处理异步响应,而不依赖批注。但是,如果您总是希望在存根控件

57、和处理来自其中一个操作的异步响应的方法之间存在一对一的对应关系,BEA 则建议您明确使用 AsyncResponse。 有关使用此批注的详细信息和示例,请参阅 HYPERLINK /wls92/webserv/advanced.html l wp256268 使用异步请求响应调用 Web Service。 特性 表 B-10 weblogic.jws.AsyncResponse JWS 批注标记的特性 名称 描述 数据类型 是否必需? target 要异步调用其操作的 Web Service 的 JAX-RPC 存根控件的名称。 该存根控件已经使用 ServiceClient 字段级别批注进行

58、了批注。 String 是 operation 要异步调用的操作的名称。 这是该操作的实际名称,与显示在 WSDL 文件中的名称相同。当您在 JWS 文件的主代码中调用此操作时,要将 Async 添加到其名称。 例如,如果设置 operation=getQuote,则在 JWS 文件中要按照下列方式对其进行异步调用: port.getQuoteAsync(apc, symbol);String 是 示例 下面的示例代码段显示了如何在异步调用另一个 Web Service 的操作的 JWS 文件中使用 AsyncResponse 批注;只包括了相关的 Java 代码: package examp

59、les.webservices.async_req_res;.public class StockQuoteClientImpl ServiceClient(wsdlLocation=http:/localhost:7001/async/StockQuote?WSDL, serviceName=StockQuoteService, portName=StockQuote) private StockQuotePortType port; WebMethodpublic void getQuote (String symbol) AsyncPreCallContext apc = AsyncCa

60、llContextFactory.getAsyncPreCallContext(); apc.setProperty(symbol, symbol); try port.getQuoteAsync(apc, symbol ); System.out.println(in getQuote method of StockQuoteClient WS); catch (RemoteException e) e.printStackTrace(); . AsyncResponse(target=port, operation=getQuote) public void onGetQuoteAsync

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论