java - 在Java EE中持续运行服务

标签 java multithreading jakarta-ee

您将如何在Java EE中实现持续运行的服务?

我正在尝试做的是:

  • User1连接到服务池;等待响应。
  • User2连接到相同的服务池;等待响应。
  • Server对服务池中的所有用户执行任务(匹配用户)。
  • 服务器在匹配到合适的用户后将响应返回给相应的用户;如果User1与User2匹配,则User1接收User2作为响应,而User2接收User1。

  • 我不是问如何执行任务(匹配)。我问只要池中有用户,该服务器服务如何运行?

    在Java EE中,似乎没有独立运行的方法支持。我唯一能想到的是:
  • 单独线程上的无限循环
  • 计时器服务

  • 我想知道是否还有另一种/更好的方法。

    最佳答案

    对于在后台运行流程,您实际上是对的。可以使用无限循环或计时器服务。看看 quartz 。您只需要在某种线程安全集合中注册用户。

    对于实时更新,您不能确定HTTP请求将等待足够长的时间。可能只是超时。您需要使用WebSockets或CometD来抽象发布/订阅 channel 。您应该使用接受异步HTTP请求的Java EE服务器(即支持Servlet 3)

    关于java - 在Java EE中持续运行服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29216472/

    相关文章:

    Java 错误 : class, 接口(interface),或需要枚举

    java - 需要关于用于学术研究的 Java 开源项目的推荐

    java - android 致命异常 : AsyncTask #2

    java - 这段代码不会导致死锁吗? Java 线程锁定

    java - 解析文件的单元测试,如何从应用程序内部加载文件?

    java - JAXB 是否提供 XMLBeanscompileXsd 的替代方案?

    java - 如何验证部署在 Tomcat 服务器中的一个 java 框架?

    ios - NSOperation 死锁并阻塞 NSOperationQueue

    java - 在 Java EE 中与 EJB 交互的最佳方式

    java - JPAEntityManagerFactory.createEntityManager()在getter中,何时缓存/重用?