java - Grails - 与第 3 方 API 的异步通信

标签 java grails frameworks concurrency asynchronous


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

API 的工作方式是您需要运行他们的客户端程序、交易者工作站 (TWS http://interactivebrokers.com/en/p.php?f=tws&ib_entity=llc ),然后我们使用 API 来执行操作。使用 API 基本上涉及创建“代理”对象、调用 connect() 成员函数(这会建立与 TWS 软件的本地端口连接)以及调用 getData() 之类的内容

grails 在这个场景中的值(value)在于 GORM 功能和提供的 Web 框架。我希望能够定义从数据库实现中抽象出来的对象,轻松执行持久性操作,并轻松为用户提供执行 CRUD 和自定义操作的 UI。

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

我认为可能有某种方法可以通过启动后台线程来做到这一点,但我不确定这是我想要走的路。

有人对最佳方法有什么建议吗?
我没有与 grails 结婚,我使用它的原因如上所述。如果有一个桌面应用程序框架,我以后也可以轻松地在其上制作一个 Web 界面,我绝对对此持开放态度。

提前致谢。

最佳答案

在服务和 make the Service singleton 中创建您的对象(默认情况下):

static scope = "singleton"

关于java - Grails - 与第 3 方 API 的异步通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4505594/

相关文章:

java - 运行许多 IO 线程是否会影响少数 CPU 密集型线程的性能?

java - Wicket:动态安装干净的 URL

ios - Xcode Frameworks 文件夹类引用不起作用?

java - spring boot如何在目标中创建jar文件而无需在pom中添加插件

Java : Remove strange special characters from String

grails - 在 grails 的基类中添加新属性后出错

swift - 如何开发现有 Xcode 项目的自定义 cocoa-pod?

javascript - javascript 开发人员需要了解 jquery 吗?

java - 有没有人能与Grails一起直接访问数据spring-data-neo4j?

grails - Grails使用其他域的对象渲染 View