質問: tomcatプロジェクトで、バックグラウンドで常に動いている処理を作りたいです。 例えば、数分ごとに定期実行する処理があって、それをtomcatのサーブレットでも使いたい という感じです。 もちろん、数分ごとの処理はcronで実行してtomcatとは別のプロセスでやるのがベストだとは思うのですが、一つのtomcatプロジェクトで全て完結して、サーブレットから定期実行のスレッドのインスタンスにアクセスしたいのでtomcat上で動かす手段を探しています。 単純に、web.xmlのListenerタグを使い、tomcatの起動時にスレッドを作り、ServletContextのattributeにセットする という方法でやれば出来るのですが tomcatに組み込まれている公式の方法 というのがあればそちらを使いたいです。
回答: 想定されているTomcatのバージョンが書かれていないのですが、 Tomcat7以降であれば @WebListner アノテーションが使えると思います。 * * バックグラウンドで動かすのは ExecutorService を利用するとよいでしょう。 * * 前者はServlet3.0の仕様、後者はJava5以降の機能ですから、Tomcat以外のアプリケーション・サーバーでも有効なはずです。