加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:26:52 所属栏目:Java 来源:网络整理
导读:根据 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 s
根据 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 fault),因此它不能从单向方法返回(不能返回任何东西)
>通常单向方法由Web服务框架异步执行(我知道apache-cxf odes).该框架立即返回,因此即使开始处理单向方法,您的客户也可能收到空答复.当抛出异常时,原来的HTTP连接已经过去了.

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

*请勿将空的SOAP响应(没有内容的XML文档,只包含在SOAP信封中的根标记)与空HTTP响应混淆(没有发送回来).请记住,SOAP不限于HTTP.例如,如果您使用JMS或电子邮件传输,普通双向功能的空白响应(或故障)是从服务器发送到客户端的另一个消息.单向方法只是一个最重要的消息,没有发回.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读