語彙力がないので、ここで何を質問したらいいのかわかりません...
Tomcat サーブレット (およびそのための任意のサーバー) は、ステートレスであり、状態がデータベースに保存されている状態でリクエストに迅速に応答する場合、うまく機能します。実行時間の長い操作がある場合、バックグラウンドで他のサービスを実行し、Tomcat ハンドラーがそれと通信するようにしたいと思うかもしれません。Tomcat と同じ JVM で実行時間の長い Java アプリケーションを実行し、「通常の」Tomcat サーブレットを介して対話する方法はありますか?
例: HTTP で RESTful な因数分解サービスを提供したいとします。
考えられるシナリオは次のとおりです (HTTP 構文が正しいことを願っています。ほとんどのヘッダーを省略しています)。
# comments start with #, > = request, < = response
#
# first we create a queue
> POST /factorizer/create-queue
> {information here}
< queue=12345B
# then we post some numbers to it
> POST /factorizer/queue/12345B
> 123
> 456
> 678
> 12345678901234567890123456789
< OK
# let's look at the status
> GET /factorizer/queue/12345B/status
< requested=4
< processed=3
# query
> GET /factorizer/queue/12345B/7
< Error: invalid index
> GET /factorizer/queue/12345B/3
< Error: not complete
> GET /factorizer/queue/12345B/0
< 123=3*41
# wait a while
> GET /factorizer/queue/12345B/status
< requested=4
< processed=4
> GET /factorizer/queue/12345B/3
< 12345678901234567890123456789=3*3*3*7*13*31*37*211*241*2161*3607*3803*2906161
クエリを処理するサーブレットを作成する方法は考えられますが、同じ JVM でデーモン/独立して実行されるサービスを実装するにはどうすればよいでしょうか?
編集:上記の例で、私がやりたいことは、作業キューを使用して自律的に実行され、素数を因数分解し、Tomcat サーブレットが公開するために使用できる操作をサポートする Java インターフェイスを持つバックグラウンド アプリケーションを用意することです。ウェブへのサービス。これで、バックグラウンド アプリの Web インターフェイスや HTTP について心配する必要がなくなり、サーブレットでのマルチスレッドの問題や素因数分解について心配する必要もなくなりました。