Grails – 与第三方API的异步通信

我正在尝试使用grails来与在线交易平台进行交互。
特别是盈透证券(IB) http://interactivebrokers.com/en/p.php?f=programInterface&ib_entity=llc

API的工作方式是你需要运行他们的客户端程序,Trader Workstation(TWS http://interactivebrokers.com/en/p.php?f=tws&ib_entity=llc )然后我们使用API​​来做东西。 使用API​​基本上涉及创建“代理”对象,调用connect()成员函数(这使得与TWS软件的本地端口连接)并调用类似getData()的东西

此方案中的Grails值是GORMfunction和提供的Web框架。 我希望能够定义从db实现中抽象出来的对象,轻松执行持久性操作,并轻松地为用户提供用于执行CRUD和自定义操作的UI。

我的挑战是IB API对请求和回复使用异步通信。 即,当我调用getData()时,API知道在准备发送它们时使用回调函数dataResults()。 为了使dataResults()可以调用,我创建的代理对象仍然需要四处接收回复。
在控制器函数内部,如果我创建一个代理对象并调用getData(),当请求完成时,代理对象显然也会消失。 所以我永远无法收到回复。

我认为可能有一些方法可以通过开始后台线程来做到这一点,但我不确定这是我想要的路径。

有没有人对最佳方法有什么建议?
我没有和grails结婚,我使用它的原因就在上面。 如果有一个桌面应用程序框架,我也可以在以后轻松创建一个Web界面,我肯定对此持开放态度。

提前致谢。

在Service中创建对象并生成Service单例 (默认情况下):

static scope = "singleton" 

在Web UI方面,Grails绝对是一个不错的选择。 然后,异步操作可以由Ajax调用处理,因为您不应该阻止控制器等待结果。 以下[演示] [1]有一些很好的例子

1: http : //skillsmatter.com/podcast/java-jee/high-volume-scalable-ajax-with-grails