首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从设计的角度来看,在API的后台拥有活动组件有多好

从设计的角度来看,在API的后台拥有活动组件有多好
EN

Stack Overflow用户
提问于 2014-04-05 15:23:50
回答 1查看 43关注 0票数 1

我有一个分布式软件系统,它是在纯java SE环境中的。它有一个客户端用来访问服务的API。客户端可以是web应用程序或桌面应用程序。

API使用对象流通过socket与软件进行通信。

我想建立一个接近实时通知客户的服务器推送方式的系统。

现在,我需要一些在API中的活动组件,它接收这些通知并对它们采取行动。客户端应该能够通过API注册它们的操作,例如

代码语言:javascript
复制
service.login();
service.addNotificationHandler(handler);

我的问题是,从设计的角度来看,在API的后台拥有活动组件(线程)有多好。

如果这是一个糟糕的选择,那么这个场景的正确选择是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-04-05 22:02:27

在API的实现中运行后台线程没有什么问题,很多组件都是这样做的(例如,在某种程度上,您可以将Tomcat视为使用大量线程的servlet-api实现)。一定要考虑组件运行的环境:一些环境,如Java,通常不喜欢在服务器外部启动的线程(JBoss、Glassfish),并要求线程以某种方式由服务器提供。

在任何情况下,确保这些后台线程在客户端使用服务/组件通知完成后停止运行(例如,通过service.logout())。

许多组件忘记这样做,这是非常恼人的实现时使用。例如,log4j有一个从未停止过的watchdog线程,最近MySQL驱动程序添加了一个fails to stop的“放弃的连接线程”。对于偶尔使用,这些问题并不重要,但在服务器环境中(在服务器环境中,这些东西必须永远运行),这些问题足够严重,可以考虑替代实现(可能功能不完整,但不需要hack来修复)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22877887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档