ما الأدوات المتوفرة لعمليات الدُفعات المحددة بوقت في Java EE؟

StackOverflow https://stackoverflow.com/questions/78194

سؤال

لقد طلب مني صاحب العمل للتو تشغيل عملية مجمعة محددة بوقت في تطبيق Java EE WebSphere الذي قاموا بتشغيله.من المفترض أن يتم تشغيل فصل معين في الساعة 11:30 مساءً كل يوم.

لست على دراية جيدة بـ Java EE أو خادم WebSphere (أو Tomcat، في بيئة التطوير)، ولقد كنت أقوم بالبحث ولكن كل ما وجدته هو حول فئة مؤقت Java ولكن ليس كيفية تعيينها أو استدعائها .

يبدو أن تحرير ملف web.xml مطلوب أيضًا.

سيكون موضع تقدير أي مساعدة!

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

المحلول

يجب عليك أن تنظر إلى المصدر المفتوح مكتبة الكوارتز من اوبن سيمفوني.سهل الاستخدام للغاية ومثالي لهذا النوع من الأشياء.

تعتبر TimerTasks هي الأنسب لتشغيل شيء ما في وقت قصير في المستقبل.ولكن بالنسبة للتنفيذ المتكرر في إطار زمني كبير مثل هذا، يتفوق الكوارتز.يمكنك أيضًا الاحتفاظ بقائمة المهام القادمة في وحدة تخزين ثابتة مثل ملف أو قاعدة بيانات، حتى لا يتم فقدان المهام القادمة المحددة بوقت في حالة إعادة تشغيل التطبيق الخاص بك.

أيضًا، هناك تجريد رائع للكوارتز في إطار الربيع.

نصائح أخرى

في WebSphere، يمكنك استخدام خدمة الجدولة لبدء تنفيذ أسلوب ما في فئة Java.يوفر المجدول تقويمًا لجدولة تنفيذ المهام (على غرار cron) أو يمكنك تطوير التقويم الخاص بك.

فيما يلي رابط للصفحة التي تصف المجدول في وثائق WAS 6.1:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp

سيكون لدى EJB 3.1 خدمات مؤقتة محسنة، بالإضافة إلى خطافات دورة حياة التطبيق التي تزيل الحاجة إلى استخدام servlets لبدء المهام دون تدخل المستخدم.

قد يجيب هذا على عنوان السؤال، ولكن بالنسبة للسؤال "الحقيقي" المتعلق بالتطبيق القديم (المكتوب منذ أكثر من 6 أشهر؛)) الذي يعمل على نطاق الويب، فإنني أوصي باستخدام servlet لبدء التشغيل وخدمة مؤقت EJB.

خدمة المؤقت في J2EE 1.4 (EJB 2.1)

بالنسبة لـ EJB 3.0 (و 3.1 بمجرد توفره)، هناك بعض التعليقات التوضيحية الرائعة؛)

لن أعرض آخر مكتبة إلا إذا كنت في حاجة إليها حقا.يجب أن تكون خدمة المؤقت كافية لأداء مهمة عشوائية على أساس يومي.

هث،
مارتن

في web.xml الخاص بك، يمكنك تكوين servlet ليتم تحميله عند بدء التشغيل.
بناء الجملة:

u003Cservlet servlet-name='hello'n servlet-class='test.HelloWorld'>
<التحميل عند بدء التشغيل/>
</سيرفلت>

قم بذلك، ثم في طريقة init في servlet يمكنك إعداد Timer/TimerTask للقيام بكل ما تريد القيام به.تشبه TimerTasks المواضيع إلا أنه يمكنك جدولتها عند تشغيلها.

يعد الكوارتز جزءًا من توزيع JBoss 4.2.x القياسي.

وهي مكتبة جيدة حقًا، حيث يمكنك أيضًا تحديد سير عمل بسيط بدون الكثير من العمل.

لا يوجد دعم للجدولة في WebSphere.

إذا كنت تستخدم نظام التشغيل Unix، فيمكنك استخدام crontab لجدولة طلب إلى صفحة من تطبيق websphere الخاص بك.أفترض أن هناك أيضًا إمكانية على نظام التشغيل Windows لجدولة طلب إلى الصفحة.في crontab الخاص بي، أقوم بجدولة طلب إلى صفحة ويب كل يوم في الساعة 8:45

45 8 * * * احصل على http://www.domain.com/myBatch?securitykey=verysecret

الآن يتم استدعاء MyBatch servlet كل صباح وهناك يمكنني القيام بكل ما يجب القيام به في ذلك الوقت.لتجنب اتصال الآخرين بهذه الصفحة وبدء الدفعة، قمت بإضافة معلمة مفتاح الأمان.

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