0

我知道jaxws 2.2规范说a上没有带有as注释的所有public non-static non-final方法都应该映射到 wsdl:operation 元素。SEIWebMethodexcludetrue

它还说只有用javax.jws.OneWaymust be注释的方法oneway operation,如果该方法没有OneWay注释(即使它具有void返回类型和 no exception)不得映射到oneway operations。

我没有找到任何理由阻止void返回没有默认exception映射的方法。oneway operation这就产生了另一个问题。当任何返回类型为 no的方法时,为什么我们甚至需要OneWay注释?voidexceptiononeway operation

4

1 回答 1

1

任何返回类型为 void 且无异常的方法都是单向操作

这不是真的。默认情况下,void 返回类型和没有声明的检查异常方法是标准操作。

默认情况下,调用服务的客户端线程将等待,直到收到来自服务器的响应(或客户端将超时)。标准的 Web 服务操作,即使返回类型为 void,在处理 Web 方法操作后也会以 SOAP 响应(带有空主体)进行响应。默认情况下是同步调用。

例如,如果您有 void 类型的 WebMethod 操作耗时,服务客户端将等待服务器端的所有处理完成(假设没有发生超时),或者在发生故障时从服务器接收 RuntimeException。@OneWay 操作不会发生这种情况。

对于@OneWay 方法,它们是异步调用的,因此客户端线程不会等待完成服务器Web 方法操作,而是立即继续。

于 2016-09-13T19:43:50.743 回答