سؤال

نحتاج إلى تشغيل وظيفة واحدة بشكل دوري في تطبيق Java Web. كيفية استدعاء وظيفة بعض الفصل بشكل دوري؟ هل هناك أي طريقة للمكالمات عندما تحدث بعض الأحداث مثل الحمل العالي في الخادم وما إلى ذلك. ما هو crontab؟ هل هذا العمل بشكل دوري؟

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

المحلول

لاستدعاء شيء ما بشكل دوري ، انظر Timertask

نصائح أخرى

إذا كنت بحاجة إلى شيء أكثر قوة يمكنك استخدامه كوارتز

أما بالنسبة لل crontab هي أداة الجدولة على آلات UNIX.

لطرق الاتصال عندما يكون لدى الخادم تحميل عالٍ ، لديك نهجان محتملان على الأقل. قد يحتوي خادم التطبيق الخاص بك على خطوط إدارية تسمح بمراقبة سلوكه واتخاذ إجراءات progrommatic. always لديك بعض إمكانية مراقبة النظام (على سبيل المثال ، Tivoli أو OpenView) وينشئ "أحداث" ، يجب ألا يكون من الصعب للغاية تقديم أحداث مثل رسائل JMS (على سبيل المثال) واطلب من خادمك التقاطها.

ومع ذلك ، قد ترغب في شرح المزيد حول ما تريد تحقيقه. التطبيق التكيفي قد يكون Beahviour صعبًا للغاية.

إذا كنت ترغب في تشغيل شيء ما بشكل دوري ، فلا تفعل ذلك في خادم الويب. سيكون ذلك نهجا خاطئا جدا IMO. من الأفضل الاستخدام cron بدلاً من ذلك ، إذا كنت على نظام تشغيل يشبه UNIX. توفر خوادم Windows وظائف مماثلة.

نحتاج إلى تشغيل وظيفة واحدة بشكل دوري في تطبيق Java Web

(1) لذا ابحث في واصف النشر الخاص بك (web.xml) حدد المستمع لبدء التشغيل في وقت بدء التشغيل.

كيفية استدعاء وظيفة بعض الفصل بشكل دوري؟

(2) إنشاء أ مؤقت في المستمع.

هل هناك أي وظيفة استدعاء عندما تحدث بعض الأحداث مثل الحمل العالي في الخادم وما إلى ذلك

(3) وقم بتشغيل بعض المواضيع للتحقق من شروط النظام التي يتم تصنيعها مع Java ، وحتى تشغيل Progs (الجهوزية ، وما إلى ذلك) وتحليل الإخراج.

يمكن أن يكون Crontab وسيلة ولكن تنفيذ Java سيبدأ JVM آخر وهذا هو الشيء الساخن في حاويات Servlet: جميعها تعمل في نفس JVM.

لا تنسى java.util.concurrent - لديها الكثير من الفصول للجدولة ، على سبيل المثال screadthreadpoolexecutor ، إذا كنت بحاجة إلى أكثر من جهاز توقيت بسيط.

http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html

هناك أيضًا خلفية له إلى Java 1.4: http://backport-jsr166.sourceforge.net.

إذا كنت تستخدم Spring بالفعل ، فقد ترغب في إلقاء نظرة على إطار عمل مهمة Spring - باستخدام @scheduled و async لشرح أساليب التعليق كمهام وتنفيذ الوظيفة في معالج يولد العمل الفعلي إلى العامل ، كما هو موضح في:

http://blog.springsource.com/2010/01/05/task-scheduling-simplifications-in-spring-3-0/

الميزة هي أنه يمكنك تحديد أجهزة ضبط الوقت باستخدام بناء جملة تشبه كرون في سياق الربيع الخاص بك ولا تحتاج إلى أي شيء خاص لإعداد المهام ، كما أنه مدمج جيدًا في تطبيقات Java EE ويجب أن تلعب بشكل جيد مع خوادم الويب (أي مخصص المواضيع لا تميل إلى فعل دائما).

كيفية استدعاء وظيفة بعض الفصل بشكل دوري؟

هناك العديد من الحلول: أ مؤقت, ، مثل تطبيق Java Cron مثل CRON4J, كوارتز, ، أو حتى EJB Timer API. يعتمد اختيار واحد أو آخر بشكل كبير على السياق: نوع التطبيق ، والتقنيات المستخدمة ، وعدد الوظائف ، إلخ.

هل هناك أي طريقة للمكالمات عند حدوث بعض الأحداث مثل الحمل العالي في الخادم وما إلى ذلك

ربما يمكنك استخدام JMX في وظائفك للوصول إلى المعلومات ومراقبة المعلومات واتخاذ إجراء في ظل حالة محددة. ولكن هذا هو وضع السحب أكثر ، وليس على أساس الحدث.

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