java - 管理从 Java EE 应用程序到 Twitter 流 API 的长期连接

标签 java rest twitter jakarta-ee ejb

我需要创建一个从 Java EE6 应用程序到 Twitter streaming API 的长时间运行的连接并且还能够在失败时监视和重新建立连接。

我已经使用 Jersey JAX-RS 和 OAuth 运行了一个测试,如下所示,它可以按照我的意愿处理流数据。

WebResource resource = client.resource(STATUS_URI);
resource.addFilter(oauthFilter);
ClientResponse clientResponse = resource.get(ClientResponse.class);
InputStream is = clientResponse.getEntityInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(is, "UTF8"));
boolean more = true;
while (more) {
    String jsonTweet = r.readLine();
    //send tweet to JMS queue
    ..... 
}

我已经尝试在单例“@PostConstruct”方法中运行上述代码,但它会阻塞并且应用程序无法正确加载。

我的问题是在应用程序启动时从 Java EE 环境中初始化连接然后在不直接创建新线程的情况下监视 + 重新连接错误的推荐方法是什么?

最佳答案

recommended way to initialise the connection from within a Java EE environment on application startup

  • 您可以使用@Service 来创建Singleton MBean(JBoss 特定实现),但我仍然更喜欢@Startup@Singleton 来获得在应用程序部署时为服务器的可移植性所做的事情。

monitor + re-connect on errors without directly creating new threads?

  • ThreadPoolExecutor:一个 ExecutorService,它使用可能的多个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。

在异常情况下,任务可以重新提交给执行者服务,任务可能包括监控、重连等。

关于java - 管理从 Java EE 应用程序到 Twitter 流 API 的长期连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4724723/

相关文章:

javascript - 访问 Twitter API - 身份验证和 Backbone 模型

javascript - 从 JSON 元素的内容构造 URL 以避免输出中出现编码字符的正确方法是什么?

java - 尽管我有表但不存在错误

java - Android ListView 布局在滚动时变得困惑

google-app-engine - 在 Google AppEngine 上实现 REST 服务 (JSON)

rest - JMeter 3.0 HTTP Put不发送RAW数据

javascript - 在 node.js 中使用 npm 包 Twitter 发布推​​文(不起作用)

java - 编辑列出的 hudson java 系统信息

java SwingWorker 对话框未显示

java - 无法获取我的 Rest Webservices 的输出,并且出现 HTTP 404 异常