3

可以说我只有一种方法的服务:int generateRandomNumbers().

是否可以使用 wsdl2java 生成具有适当异步支持的存根?

例如,生成的类应具有以下方法/消息:

int generateRandomNumbers()
int generateRandomNumbers_Async(callback)

我知道如何使用 wsdl2java 生成带有异步消息的存根。但是,这仅在服务理解异步消息时才有效。

我所说的适当的异步支持的意思是

  • generateRandomNumbers_Async不是新消息,因为服务只理解generateRandomNumbers,而不是generateRandomNumbers_Async
  • generateRandomNumbers_Async=generateRandomNumbers在不同的线程中调用,并generateRandomNumbers在后台完成时调用回调。

任何想法?

其他 Web 服务框架呢?

4

2 回答 2

1

使用 CXF 时,它应该与您的“第二个”项目符号完全一样。“generateRandomNumbers”消息在调用线程上发送,因此如果出现 IO 错误或类似的错误,将立即被退回。(根据 jaxws 规范)然后后台线程将处理响应并调用回调。

使用 wsdl2java 生成代码时,您需要创建一个 jaxws 绑定文件,其中包含以下内容:

<bindings
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  wsdlLocation="hello_world_async.wsdl"
  xmlns="http://java.sun.com/xml/ns/jaxws">
  <bindings node="wsdl:definitions">
    <enableAsyncMapping>true</enableAsyncMapping>
  </bindings>
</bindings>

并使用 -B 标志传递它。这将在异步版本的接口上生成一堆新方法。你应该只需要使用这些。

于 2011-05-06T14:08:49.510 回答
0

只是配置服务器的信息。注释 @UseAsyncMethod 将触发异步方法而不是同步方法。请务必使用 Servlet 3.0 及更高版本。在 web.xml 中使用 true 配置 servlet:

<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <!-- Enable asynchronous requests -->
        <async-supported>true</async-supported>
</servlet>
于 2016-10-18T08:40:28.617 回答