実行したい非クライアント アプリケーションがあります。クライアントはありませんが、HTTP 呼び出しを行い、他のサービスのクライアントとして機能します。おそらく数時間または数日実行されます (ただし、定期的な実行は必要ありません。1 回だけ実行するだけです)。
標準の Context Dependency Injection (CD) と標準の JAX-RS クライアント (Java EE 7 以降の新機能) の利点があるため、Java EE 7 コンテナーで実行したいと考えています。JMS、JPAなどのサービスがあるのもうれしい。
問題は、標準的な方法で main メソッドをどのように記述/注釈付けするかです。@Inject
そのようなメソッドはすぐに返さなければならないので、メソッドをオンにするのは良くありません。@Schedule
プログラムで現在のシステム時間を決定しない限り、定期的に実行されるため、理想的ではありません。
私が思いついた最善の方法は、メソッドにワンショットを設定しTimer
、@Inject
メイン メソッドに で注釈を付けること@Timeout
です。
どういうわけか、これは少しもろく、またはエレガントではないようです。サービスを開始するためのより良い標準的な方法はありますか? それを開始して開始させるだけの注釈はありますか?
さらに、アンデプロイ時にサービスを中断してシャットダウンするための標準的な最良の方法は何ですか?