我们有一个需要使用SOAP / REST Web服务层补充/前端的Java API。
使用
实现跨进程/服务器边界的异步调用需要什么?
a)SOAP Web服务
b)RESTful webservices
某些方法可能需要多次调用才能响应请求。
我们将使用Java / J2ee来使用像CXF或Axis或Jax-RS / WS这样的库来实现SOAP / restful服务。
任何例子?陷阱?
谢谢,
答案 0 :(得分:1)
你的问题不明确。我正在解释您的问题,因为您希望服务器端代码以异步方式调用远程REST Web服务。如果是这样,那么你最好的选择是使用java.util.concurrent的Futures功能,它将完全按照你的意愿行事。如果我对这个问题的解释是错误的,请更新您的问题,确切地说,异步操作需要发生在哪里。
答案 1 :(得分:1)
Akka http://akka.io/
伟大的框架,卓越的表现 - 以下是他们的主张:
“”“
更简单的并发
使用Actors,STM& amp;编写更简单的正确并发应用程序。事务处理器。
事件驱动架构
异步事件驱动架构的完美平台。永远不要阻止。
真正的可扩展性
使用异步消息传递在多核或多个节点上扩展。
容错
拥抱失败。使用Erlang风格的Actor主管层次结构编写自我修复的应用程序。
透明远程处理
Remote Actors为您提供高性能的透明分布式编程模型。
Scala& Java API
Scala和Java API以及Spring和Guice集成。在应用程序服务器中部署或独立运行。 “”“
答案 2 :(得分:1)
Async Http Client是一个专为此类问题设计的开源库。它利用了未来并包含了许多细节,并且无需进行异步调用。
作者非常好getting started guide并且有一个有效的discussion group。作者是一位非常有才华的开发人员,该项目正在不断发展。
来自文档:
该库使用Java非阻塞I / O. 用于支持异步 操作。默认异步 提供者是建立在Netty之上的 (http://www.jboss.org/netty),Java NIO客户端服务器套接字框架 来自JBoss,但该库暴露了一个 允许的可配置提供程序SPI 轻松插入其他框架。
答案 3 :(得分:1)
@Vivek
GET是异步和其他HTTP方法 不是。
事实并非如此。请继续阅读有关AJAX的信息: - )
答案 4 :(得分:0)
对于REST Web服务(除了GET),其他所有内容(POST / PUT ..)都是Async,它会返回操作的HTTP状态代码。
如果你想让GET也是Async那么你将不得不使用Threads,我们在Spring框架中使用@Async注释(内部产生一个线程)做了一次。
从get返回回调URL作为响应,并使用线程异步处理请求。
除此之外,对于SOAP / REST,一旦获得请求,您就可以将其发布到JMS队列以使服务异步。
答案 5 :(得分:0)
实现异步操作的最佳方法之一是使用回调。对于REST API,API和Rest客户端的设计应该支持这一点。例如,客户端类应该传递自己或它的内部类作为列表器。服务器端的Rest API应该维护请求ID并在map中回调侦听器。处理完成后,它可以根据map中的请求id调用侦听器上的方法。
答案 6 :(得分:0)
真正的问题:为什么要把它称为异步?在Java EE方面查看并行处理的解决方案之后,不建议您自己在容器中生成子线程。
在您的情况下,它看起来如下:
1.您正在寻找在WSDL(REST或SOAP或两者)中创建包装器合同,如果您的客户端不仅仅是浏览器(AJAX)(我的意思是您有来自服务器端的采用者),那么,对于JAX -WS - >你可以创建一个@CallBack end-ponint(http://docs.oracle.com/cd/E15051_01/wls/docs103/webserv_adv/callback.html)
或
如果它是需要从采用者(服务器端)调用的REST端点,请使用jAX_RS 2.0功能
注意:上面假设它是指向点但是以异步方式
以下是一些选项: