ibatisを使用したActionServlet[init()メソッド]の初期化中にストアドプロシージャを呼び出すことはできますか?
1 に答える
はい、実行前にibatisが初期化されていると仮定しActionServlet.init
ます。これは、ServletContextListenerで初期化した場合に行われます。
ただし、のサブクラスでアプリケーションの初期化を行う必要があるかどうかを検討しますActionServlet.init
。代わりに、ServletContextListenerのcontextInitialized
メソッドの実装でそれを行います。
クレイグマクラナハンによる2002年の投稿があり、これがより良い実践である理由を説明しています。
「この理由は、サーブレットの仕様では、サーブレットが一度読み込まれ、アプリの存続期間全体にわたってメモリに残されることを保証していないためです。ただし、原則として、ほとんどのコンテナは、要求の多いサーブレットに対してこれを行います。たとえば、完全にコンテナがStrutsコントローラサーブレットを破棄し、Webアプリの存続期間内に必要な回数だけ再初期化することは合法です。
ServletContextListenerの良いところは、途中のサーブレットとJSPページで何が起こっても、contextInitialized()とcontextDestroyed()が必要なときにだけ呼び出されることが保証されていることです(webappの起動とwebappのシャットダウン)。ただし、これは、このAPIが追加された2.3以降のシステムでのみ機能します。」