我有一个 web 服务,它在初始化时使用数据源实例化单个QueryRunner 。它通过将这个QueryRunner
对象作为 servlet 上下文属性传递给来自 webapp 使用的多个不同 servlet 的所有 servlet 请求。IE:
// in servlet context listener (on app initialization)
QueryRunner myQueryRunner = new QueryRunner(myDataSource);
myServletContext.setAttribute("queryRunner", myQueryRunner);
// in the servlets
QueryRunner myQueryRunner = (QueryRunner) myServletContext.getAttribute("queryRunner");
myQueryRunner.query(myStoredProcedure, handler, params)
我试图弄清楚这是否是一个瓶颈。servlet 是否应该为QueryRunner
每个请求都实例化一个新的?
在四处寻找答案时,我还发现了这个AsyncQueryRunner。但我只是变得更加困惑,因为QueryRunner和AsyncQueryRunner的 API 文档中的解释说的完全一样。
我查看了这里的示例,似乎应该用每个请求实例化它,但我不确定这是否仅仅是因为它是示例代码。
换句话说,在使用 DBUtils 时,QueryRunner
我应该:
QueryRunner
为每个请求使用单个实例?(我现在在做什么)QueryRunner
用每个 servlet 请求实例化一个新的?AsyncQueryRunner
为每个请求使用单个实例?