سؤال

في تطبيق Web Java (Servlets / Spring MVC)، باستخدام Tomcat، هل من الممكن تشغيل خدمة نوع الوظيفة Cron؟

على سبيل المثال كل 15 دقيقة، تطهير قاعدة بيانات السجل.

يمكنك القيام بذلك بطريقة مستقلة حاوية، أو يجب تشغيلها باستخدام Tomcat أو بعض الحاوية الأخرى؟

يرجى تحديد ما إذا كانت الطريقة مضمونة للتشغيل في وقت محدد أو واحد يعمل كل 15 دقيقة، ولكن قد يتم إعادة تعيين إلخ. إذا تم إعادة تدوير التطبيق (هذا هو ما هو عليه في .NET إذا كنت تستخدم مؤقتا)

هل كانت مفيدة؟

المحلول

كما هو موثق في الفصل 23. الجدولة والتجمع الموضوع, ، الربيع لديه جدولة الدعم من خلال فئات التكامل ل Timer وجدولة الكوارتز (http://www.quartz-scheduler.org/). للحصول على احتياجات بسيطة، أود أن أوصي بالذهاب مع JDK Timer.

لاحظ أن مجدولة Java تستخدم عادة لتشغيل جافا وظائف موجهة نحو العمل. وبعد بالنسبة لمهام Sysadmin (مثل المثال الذي قدمته)، يجب أن تفضل حقا أدوات المشرف التقليدية (Bash، إلخ).

نصائح أخرى

إذا كنت تستخدم الربيع، فيمكنك استخدام السنانير الكوارتز أو الموقت المدمجة. يرى http://static.springsource.org/spring/docs/2.5.x/Reference/scheduling.html.

سيكون الحاوية الخاصة. يمكنك أن تفعل ذلك في جافا مع كوارتز أو مجرد استخدام جافا لجدولة UTILS المتزامنة (ScheduledExecutorService) أو كعمالة كرون على مستوى نظام التشغيل.

كل 15 دقيقة تبدو متطرفة. بشكل عام، أنصحك أيضا فقط بالاقتطاع / حذف ملفات السجل التي لم تعد مكتوبة عليها (وهي تدحرجت بشكل عام أكثر من الليل).

الوظائف هي الدفعة الموجودة. إما عن طريق الزناد اليدوي أو نمط كرون (كما يبدو أنك تريد).

لا يزال لا أحصل على علاقتك بين وظيفة WebApp و Seron-Style؟ حالة استخدام WebApp الوحيدة التي يمكنني التفكير فيها هي أنه ترغب في الحصول على نقطة نهاية HTTP لتشغيل وظيفة (ولكن هذا يعارض بيانك عن كونه "نمط كرون").

استخدم عموما إطارا مخصصا، يحل محل "الوظائف الدفاعية". أستطيع أن أوصي الكوارتز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top