初期化時にデータ ソースを使用して単一のQueryRunnerをインスタンス化する Web サービスがあります。Web アプリケーションで使用される複数の異なるサーブレットからのすべてのサーブレット リクエストに対して、この 1 つのQueryRunner
オブジェクトをサーブレット コンテキスト属性として渡すことによって使用します。すなわち:
// 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)
それがボトルネックかどうかを把握しようとしています。代わりに、サーブレットQueryRunner
はすべてのリクエストで新しいインスタンスを作成する必要がありますか?
答えを探していると、このAsyncQueryRunnerも見つかりました。しかし、QueryRunnerとAsyncQueryRunnerの API ドキュメントの説明にはまったく同じことが書かれているため、さらに混乱しました。
ここで例を調べたところ、すべてのリクエストでインスタンス化する必要があるようですが、それがサンプルコードであるという理由だけであるかどうかはわかりません.
つまり、DBUtils を使用する場合、次のことをQueryRunner
行う必要があります。
QueryRunner
リクエストごとに単一のインスタンスを使用しますか? (私が今やっていること)QueryRunner
すべてのサーブレット要求で新しいインスタンスを作成しますか?AsyncQueryRunner
リクエストごとに単一のインスタンスを使用しますか?