كيف يمكنني الاستماع إلى جميع الأحداث السياقية التماس مع أسماء معلمة؟
-
23-08-2019 - |
سؤال
سوف التماس النار أنواع مختلفة من الأحداث يتصل هذا بندات أو مهام أو عمليات معينة وإلحاق اسم النطاق أو المهمة أو العملية إلى نهاية الحدث.
كيف أستمع إلى جميع أحداث النوع؟
على سبيل المثال لأي <name>
أود أن أستمع إلى أحداث مثل هذه:
org.jboss.seam.createProcess.<name>
- دعا عند إنشاء العمليةorg.jboss.seam.endProcess.<name>
- دعا عند انتهاء العمليةorg.jboss.seam.initProcess.<name>
- دعا عند ارتباط العملية بالمحادثةorg.jboss.seam.startTask.<name>
- دعا عند بدء المهمةorg.jboss.seam.endTask.<name>
- دعا عند انتهاء المهمة
ولست بحاجة للقيام بذلك على الرغم من عدم معرفة قائمة الأسماء الصحيحة صريح... :-(
آمل أن أستخدم Robserver لإنشاء المراقب، أو شيء مشابه، وسوف أستمع إلى فصول حدثين في نفس المكون.
المحلول
يمكنك بسهولة القيام بذلك عن طريق استبدال فئة أحداث التماس مع التنفيذ الخاص بك. ثم ابحث عن الأحداث التي يتم رفعها التي تبدأ بسلسلة معينة:
@Scope(ScopeType.STATELESS)
@BypassInterceptors
@Name("org.jboss.seam.core.events")
@Install(precedence=APPLICATION)
public class Events extends org.jboss.seam.core.Events
{
@Override
public void raiseEvent(String type, Object... parameters )
{
super.raiseEvent( type, parameters );
if ( type.startsWith( "org.jboss.seam.createProcess" ) )
{
super.raiseEvent( "org.jboss.seam.createProcess", parameters );
}
//etc.
}
}
يمكنك الآن ملاحظة "org.jboss.seam.createprocess" للحصول على جميع الأحداث CreateProcess.
نصائح أخرى
داخل إذا، يجب أن تكتب Super.raiseevent (...) وإلا فسوف تحصل على حلقة لا حصر لها.
لا تنتمي إلى StackOverflow