我知道jaxws 2.2
规范说明public non-static non-final
上的所有SEI
方法都没有WebMethod
注释exclude
为true
javax.jws.OneWay
,应该映射到wsdl:operation元素。
它还表示只有oneway operation
注释的方法必须是OneWay
,如果方法没有void
注释(即使它有exception
返回类型且没有oneway operation
)不得映射到void
s。
我发现没有任何理由阻止exception
返回方法,默认情况下oneway operation
没有OneWay
映射到void
。这引起了另一个问题。为什么在exception
返回类型且oneway operation
没有onStart
的任何方法为getApplicationContext
时,我们甚至需要onStart
注释?
答案 0 :(得分:1)
具有void返回类型的任何方法,并且没有异常是单向操作
事实并非如此。默认情况下,void返回类型和未声明的已检查异常方法是标准操作。
默认情况下,调用服务的客户端线程将等待,直到从服务器(或客户端将超时)接收响应。标准Web服务操作(即使使用void返回类型)将在处理Web方法操作后响应SOAP响应(带有空体)。它是默认的同步调用。
例如,如果您的虚拟类型WebMethod操作耗时,服务客户端将等待服务器端的所有处理完成(假设没有发生超时),或者在发生故障时将从服务器接收RuntimeException。 @OneWay操作不会发生这种情况。
对于@OneWay方法,它们是异步调用的,因此客户端线程不会等待完成服务器Web方法操作,并将立即继续。