1

问题/环境

我的 Web 应用程序的目标是成为我们公司数据库的便捷接口。

我正在使用:

  • Scalatra(作为最小的 Web 框架)
  • 码头(作为servlet容器)
  • SBT(简单构建工具)
  • JDBC(与数据库接口)

其中一个要求是每个用户可以管理多个并发查询,并且即使他/她注销,查询也会继续运行并且可以稍后检索(或者如果它们因任何原因停止,则检查它们的完成状态)。

我想查询可能必须在他们自己的单独线程中运行。

我什至不确定这个问题是否与连接池正交(我肯定会使用它,BoneCP 和 C3PO 看起来不错)。

概括

简而言之:我需要对数据库请求的生命周期进行非常细粒度的控制,并且它们不能绑定到 servlet 生命周期

有什么方法可以满足我的要求?我在谷歌和堆栈溢出上进行了相当多的搜索,但没有找到任何可以解决我的问题的东西,这可能吗?

4

1 回答 1

2

您的堆栈中缺少的是调度程序。例如http://www.quartz-scheduler.org/

粗略的解释:

  • 您的连接池(例如 C3P0)将绑定到应用程序的生命周期。
  • 您的 servlet 将向调度程序发送查询请求(这些请求将与请求查询的用户相关联)。
  • 调度程序将使用连接池中的连接尽快执行查询。它也可以以同步/序列化的顺序(对于每个用户)这样做。
  • 用户将能够看到与他相关的所有查询请求,可能带有状态(待定、已完成和结果等)。
于 2011-11-16T11:32:00.797 回答