3

いくつかの jsp ページ、サーブレット、および pojo を含む単純な Web アプリケーションがあります。リクエストが行われる前に接続プールを初期化したいと考えています。これを行う最善の方法は何ですか?アプリが最初にデプロイされたときに実行できますか?それとも、最初のリクエストが来るまで待つ必要がありますか?

4

2 に答える 2

9

ServletContextListener を使用し、web.xml で適切に宣言します。この方法は、起動サーブレットよりも適しています。それはより組織化されており、あなたの意図は明らかです。また、リクエストの前に実行されることが保証されています。また、プールをクリアするためのシャットダウン フックも提供します。

たとえば、これは私の web.xml からのスニペットです。

<listener>
  <listener-class>
    com...ApplicationListener
  </listener-class>
</listener>

クラス自体のコード スニペットを次に示します。サーバー アプリケーションに伝播しないように例外をキャッチし、役立つログ メッセージを提供してください。これらは、アプリケーションをトレースするときに役立ちます。

public class ApplicationListener implements ServletContextListener {

  private ServletContext sc = null;

  private Logger log = Logger
    .getLogger(ApplicationListener.class);

  public void contextInitialized(ServletContextEvent arg0) {
    this.sc = arg0.getServletContext();
    try {
      // initialization code
    } catch (Exception e) {
      log.error("oops", e);
    }
    log.info("webapp started");
  }

  public void contextDestroyed(ServletContextEvent arg0) {
    try {
      // shutdown code
    } catch (Exception e) {
      log.error("oops", e);
    }
    this.sc = null;
    log.info("webapp stopped");
  }

}

ここの APIとここの例を参照してください

于 2008-11-22T16:23:39.897 に答える
0

接続プールを初期化するための基本的な起動サーブレットはどうですか?

于 2008-11-22T15:59:48.480 に答える