Tomcat を起動すると、コンソールに多くの情報が出力されますが、Tomcat 起動時にプロジェクト設定ファイルが多数読み込まれ、プロジェクトの初期化メソッドが呼び出されたことが示されていますが、それがどのように呼び出されたのかはわかりません。どこで呼ばれたのですか? Tomcat で何か設定する必要がありますか?
PS:javaweb プロジェクト
PHP中文网2017-07-05 10:04:11
投稿者に必要なのは、システムがサーブレットのライフサイクルを理解することです。サーブレットを実装する場合、Web アプリケーションの開始時にどのメソッドが呼び出されるか。これに関する記事が多すぎます:
http://www.jianshu.com/p/1d50...
http://www.runoob.com/servlet...
習慣沉默2017-07-05 10:04:11
方法は 3 つあります:
@treeandgrass が言ったように、特定のサーブレット init()
,但前提是在web.xml中给load-on-startup设上值(或者加@WebServlet
アノテーションを書き換えます
特定のフィルターのinit()
,配在web.xml中(或者加@WebFilter
アノテーションを実装します);
ServletContextListener インターフェースを実装し、contextInitialized()
,配在web.xml中(或者加@WebListener
アノテーションを実装します)。
これら 3 つのメソッドのうち、私は最後のメソッド (ServletContextListener) を最も頻繁に使用します (通常、このメソッドは Web で Spring を使用する場合にのみ使用します)。これは常にフィルターおよびサーブレットの実行より優先され、特定の関数を実装しないためです。とフィルターを混ぜ合わせます。
初期化作業には以下が含まれます:
スレッドプール、データベース接続プール、ネットワーク接続プールの初期化
IoCコンテナのロード
タイマーをスタート
初期化が必要なその他のオブジェクト
上記の初期化作業のほとんどは、Web サーバーが停止したときに閉じる必要があり、これらのタスクは contextDestroyed()
に記述する必要があります。