12701


tomcatプロジェクトで、バックグラウンドで常に動いている処理を作りたいです。  
例えば、数分ごとに定期実行する処理があって、それをtomcatのサーブレットでも使いたい という感じです。

もちろん、数分ごとの処理はcronで実行してtomcatとは別のプロセスでやるのがベストだとは思うのですが、一つのtomcatプロジェクトで全て完結して、サーブレットから定期実行のスレッドのインスタンスにアクセスしたいのでtomcat上で動かす手段を探しています。

単純に、web.xmlのListenerタグを使い、tomcatの起動時にスレッドを作り、ServletContextのattributeにセットする
という方法でやれば出来るのですが  
tomcatに組み込まれている公式の方法 というのがあればそちらを使いたいです。


CC BY-SA 3.0
2015-07-25T05:59:57.560
12679
2015-07-26T08:00:13.127
805
question
java tomcat
tomcatでバックグラウンドプロセスを正しく作る方法


想定されているTomcatのバージョンが書かれていないのですが、  
Tomcat7以降であれば @WebListner アノテーションが使えると思います。

  * <http://www.atmarkit.co.jp/ait/articles/1104/12/news134_2.html>
  * <http://docs.oracle.com/javaee/7/api/javax/servlet/annotation/WebListener.html>

バックグラウンドで動かすのは ExecutorService を利用するとよいでしょう。

  * <https://stackoverflow.com/questions/4907502/running-a-background-java-program-in-tomcat>
  * <http://docs.oracle.com/javase/jp/6/technotes/guides/concurrency/overview.html>

前者はServlet3.0の仕様、後者はJava5以降の機能ですから、Tomcat以外のアプリケーション・サーバーでも有効なはずです。


CC BY-SA 3.0
2015-07-25T19:12:38.060
12701
2015-07-26T08:00:13.127
2017-05-23T12:38:55.250
-1
10492
12679
answer