3

我有一个作为常规 SOAP Web 服务公开的接口。该接口的一种方法是客户端向服务器发送一个文件,然后服务器处理该文件并返回一个结果文件。处理文件可能需要一些时间,所以我认为使用此方法的异步调用是一个更好的主意。我想到了以下流程:

客户端调用异步方法并使用附件 (MTOM) 发送文件。当服务器接收到文件时,会向客户端发送一个响应,指示文件已被接收并且很快就会处理它。一旦文件被处理,就会向客户端发送响应,表明它已被处理,并且结果文件也作为附件在响应中返回。

是否可以将 SOAP 与 CXF 一起使用?

谢谢

4

3 回答 3

2

您可以使用Callback.Asynchronous InvocationModel

回调方法 - 在这种情况下,要调用远程操作,您调用另一个特殊方法,该方法将回调对象(javax.xml.ws.AsyncHandler 类型)的引用作为其参数之一。每当响应消息到达客户端时,CXF 运行时会回调 AsyncHandler 对象以将响应消息的内容提供给它

可以从以下获得更多信息:

阿帕奇 CXF

于 2012-06-04T06:45:28.120 回答
1

如果您使用诸如 WSDL2Java 之类的工具来生成客户端,您甚至可以选择生成异步客户端。它将为您生成一个回调处理程序,其中包含每个服务操作和服务异常的空方法。然后,您可以只实现这些方法来设置收到响应时要执行的操作。请记住,当异步调用完成时,会启动一个新线程。

于 2012-06-04T06:59:29.377 回答
0

是的,一旦您收到文件,您可以将请求 ID 返回给客户端并在服务器端开始处理并保持各种处理状态。客户端可以在不同的时间间隔内返回,如果完成将接收处理状态或输出。

于 2012-06-04T06:43:59.857 回答