gpt4 book ai didi

java - 了解 JAX-WS 中的 @Oneway 注释

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:32 24 4
gpt4 key购买 nike

根据 javadoc:

Indicates that the given @WebMethod has only an input message and no output. Typically, a oneway method returns the thread of control to the calling application prior to executing the actual business method. A 181 processor should report an error if an operation marked @Oneway has a return value or Holder parameters, or declares any checked exceptions.

那么我可以假设,如果我需要异常处理(选中或未选中),则不推荐使用此注释吗?我没有从业务逻辑中返回任何内容,但是我仍然有兴趣了解超时和其他特定于调用 SOAP 方法的行为的各种错误。此注释是否意味着我无权访问 HTTP 返回代码或抛出的异常?

问题:我是否最好自己将其线程化以获得真正的异步调用,并删除 @Oneway 注释?

最佳答案

@Oneway 意味着没有会逃脱您的方法,无论是响应还是异常。这有两个原因:

  • 从技术上讲,异常只是另一种类型的响应(SOAP 错误),因此它不能从单向方法(不能返回任何东西)中返回

  • 单向方法通常由 Web 服务框架异步执行(我知道 赞同这一点)。该框架会立即返回,因此您的客户可能甚至在开始处理单向方法之前就收到了空响应。当抛出异常时,原来的HTTP连接早已不复存在。

因此,如果您想要传播异常或超时,请使用带有空响应* 和少量明确声明的故障的标准 SOAP 方法。如果您想在一段时间后使您的调用超时,您将需要单独的线程池和阻塞等待给定时间段内的响应。

* 请不要混淆空 SOAP 响应(没有内容的 XML 文档,只有根标记,包裹在 SOAP 信封中)和空 HTTP 响应(什么都没有送回)。请记住,SOAP 不限于 HTTP。例如,如果您使用 JMS 或电子邮件传输,普通双向函数的空响应(或错误)是从服务器发送到客户端的另一条消息。单向方法只是一个最重要的消息,没有返回。

关于java - 了解 JAX-WS 中的 @Oneway 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com