从JavaEE应用程序管理到Twitter流式API的长时间运行连接
我需要创建一个从Java EE6应用程序到的长时间运行的连接,并且能够在出现故障时监视和重新建立连接 我已经用Jersey JAX-RS和OAuth运行了一个测试,如下所示,这将按照我的意愿处理流数据从JavaEE应用程序管理到Twitter流式API的长时间运行连接,java,rest,twitter,jakarta-ee,ejb,Java,Rest,Twitter,Jakarta Ee,Ejb,我需要创建一个从Java EE6应用程序到的长时间运行的连接,并且能够在出现故障时监视和重新建立连接 我已经用Jersey JAX-RS和OAuth运行了一个测试,如下所示,这将按照我的意愿处理流数据 WebResource resource = client.resource(STATUS_URI); resource.addFilter(oauthFilter); ClientResponse clientResponse = resource.get(ClientResponse.clas
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'方法中运行上述代码,但它会阻塞,并且应用程序无法正确加载
我的问题是,在应用程序启动时从JavaEE环境中初始化连接,然后在出现错误时监视并重新连接,而不直接创建新线程,推荐的方法是什么
建议的初始化方法
JavaEE中的连接
应用程序启动时的环境
您可以使用@Service创建特定于单例的实现,但我仍然更喜欢@Startup&@Singleton在应用程序部署时完成工作,以实现服务器的可移植性。
监视并在出现错误时重新连接,而不
直接创建新线程
ThreadPoolExecutor:一种ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用Executors工厂方法进行配置。
例外情况下,任务可以重新提交给executor服务,任务可能包括监视、重新连接连接等
建议的初始化方法
JavaEE中的连接
应用程序启动时的环境
您可以使用@Service创建特定于单例的实现,但我仍然更喜欢@Startup&@Singleton在应用程序部署时完成工作,以实现服务器的可移植性。
监视并在出现错误时重新连接,而不
直接创建新线程
ThreadPoolExecutor:一种ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用Executors工厂方法进行配置。
例外情况下,任务可以重新提交给executor服务,任务可能包括监视、重新连接连接等。我认为从EJB中使用executor是违反规范的?是的,它可能会产生干扰,但如果使用,必须很好地处理它。A本来你也可以使用JMS来达到同样的目的。我认为在EJB中使用Executor是违反规范的?是的,它可能会产生干扰,但如果使用的话,必须很好地处理它。从本质上讲,您可以将JMS用于相同的目的。