Web uygulamasında periyodik bir işlem yapmalıyım (java yöntemini çağır) (jcat on tomcat). Bunu nasıl yapabilirim? Java daemon veya başka çözümler?Java Daemon'u nasıl yapabilirim
cevap
Bir görevin düzenli olarak yürütülmesi için ScheduledExecutorService
kullanabilirsiniz. Bununla birlikte, daha karmaşık cron benzeri bir programlamaya ihtiyacınız varsa, Quartz'a bir göz atın. Özellikle daha güzel bir API sağladığından ve işinizi ateşlemede kontrol etmenizi sağladığından, bu rotaya girerseniz Quartz in conjunction with Spring'u kullanmanızı tavsiye ederim.
(Javadoc alınan) ScheduledExecutorService Örnek
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
Ameliyatımın bitiş zamanı yok . Bunu her hafta, örneğin yapmalıyım. Bunu nasıl yapabilirim? – enfix
Eğer ScheduledExecutorService kullanıyorsanız programWithFixedDelay veya scheduleAtFixedRate kullanmanız gerekir. Haftada bir kez ya da ayın belirli zamanlarında çalışan görevler için, çalışmanın tam olarak ne zaman yapılacağını tanımlayan basit bir cron ifadesi sağlayabildiğiniz için, Quartz'i tercih etme eğilimindeyim. – Adamski
Adams cevap doğru para olduğunu. Eğer kendi kendine yuvarlanıyorsanız (kuvars rotasına gitmek yerine), ServletContextListener numaralı telefondan bir şeyler atmak isteyeceksiniz. Burada, ScheduledExexutorPool'un aşağı yukarı bir sürümü olan java.util.Timer öğesini kullanarak bir örnek verilmiştir.
public class TimerTaskServletContextListener implements ServletContextListener
{
private Timer timer;
public void contextDestroyed(ServletContextEvent sce)
{
if (timer != null) {
timer.cancel();
}
}
public void contextInitialized(ServletContextEvent sce)
{
Timer timer = new Timer();
TimerTask myTask = new TimerTask() {
@Override
public void run()
{
System.out.println("I'm doing awesome stuff right now.");
}
};
long delay = 0;
long period = 10 * 1000; // 10 seconds;
timer.schedule(myTask, delay, period);
}
}
Ve sonra bu düşünce için web.xml''deki
<listener>
<listener-class>com.TimerTaskServletContextListener</listener-class>
</listener>
Sadece daha
yiyecek gidiyor!- 1. Bu Java 7'yi nasıl uyumlu yapabilirim?
- 2. Bir Java dosyasında bir değişkeni global olarak nasıl yapabilirim
- 3. Java Swing; Programın ekranın en sağında başlaması için nasıl yapabilirim?
- 4. Boilerpipe - JSON'u nasıl çıkış yapabilirim?
- 5. Haskell'de nasıl arama yapabilirim?
- 6. Bash'de nasıl sudo yapabilirim?
- 7. Boto'dan nasıl tanılama yapabilirim?
- 8. Dikey UISlider'ı nasıl yapabilirim?
- 9. ThreadPool.Join'i nasıl yapabilirim?
- 10. Bunu Jade'de nasıl yapabilirim?
- 11. Dockerfile'da nasıl yorum yapabilirim?
- 12. Stdin'den nasıl tarter yapabilirim?
- 13. nasıl yapabilirim MVC3
- 14. TwoLineListItem nasıl yapabilirim?
- 15. UIImage'dan Pdf'yi nasıl yapabilirim?
- 16. XNamespace'i F # nasıl yapabilirim?
- 17. "PlaceAutocompleteFragment" çözümlenmesini nasıl yapabilirim?
- 18. Play Framework'de ayrıntılı bir derlemeyi nasıl yapabilirim?
- 19. LWJGL penceresini nasıl yeniden boyutlandırılabilir yapabilirim?
- 20. Model-morphosis, bunu nasıl yapabilirim
- 21. xcode ile nasıl kurulum yapabilirim?
- 22. Yakut açmak dizi nasıl yapabilirim
- 23. Wicket'in "AjaxLink" Vatansızlığını nasıl yapabilirim?
- 24. Android: Özel PreferenceScreen'i nasıl yapabilirim?
- 25. Mülk redüktörde nasıl geçiş yapabilirim?
- 26. CAEmitterCell girişinde nasıl animasyon yapabilirim?
- 27. MPMoviePlayerController: Video döngümümü nasıl yapabilirim?
- 28. Liste anlamada ödevleri nasıl yapabilirim?
- 29. Elipsin yanıp sönmesini nasıl yapabilirim?
- 30. jshint girinti seçeneklerini nasıl yapabilirim?
benzer gönderi http://stackoverflow.com/questions/3053936/how-to-execute-task-for-a-specific-period-in-java/3053971#3053971 –