2016-06-02 3 views
0

Я хочу, чтобы запланировать событие в Nuxeo IDE, но я получаю java.lang.ClassCastException ошибки:Как сделать слушателя событий в Nuxeo IDE

org.nuxeo.ecm.core.event.impl .EventContextImpl нельзя отнести к org.nuxeo.ecm.core.event.impl.DocumentEventContext.

Мой планировщик вклад:

<?xml version="1.0"?> 

<component name="org.nuxeo.sample.ScheduleCall" version="1.0"> 
<extension target="org.nuxeo.ecm.core.scheduler.SchedulerService" 
point="schedule"> 
<schedule id="testschedule"> 
<username>Administrator</username> 
<eventId>user_created</eventId> 
<eventCategory>default</eventCategory> 

<cronExpression>0 1 * * * ?</cronExpression> 
</schedule> 
</extension> 

</component> 

Мой слушатель вклад:

<component name="org.nuxeo.sample.listener.contrib.ScheduleListener"> 

    <extension target="org.nuxeo.ecm.core.event.EventServiceComponent" 
    point="listener"> 

    <listener name="schedulelistener" async="false" postCommit="true" 
     class="org.nuxeo.sample.ScheduleListener" priority="140"> 
     <event>user_created</event> 
    </listener> 
    </extension> 

</component> 

Мой Java-класс для слушателя:

/** 
* 
*/ 

package org.nuxeo.sample; 

import org.nuxeo.ecm.core.event.EventListener; 
import org.nuxeo.ecm.core.event.Event; 





/** 
* @author Parul.Puri01 
*/ 


public class ScheduleListener implements EventListener { 

    public void handleEvent(Event event){ 
     try{ 
      if(event!=null && event.getName().equals("user_created")){ 
       System.out.println("parul"); 
      } 
      System.out.println("not an event"); 
     } 
     catch (Exception e){ 
      e.printStackTrace(); 

     } 


    } 

} 

Ошибка:

java.lang.ClassCastException: org.nuxeo.ecm.core.event.impl.EventContextImpl cannot be cast to org.nuxeo.ecm.core.event.impl.DocumentEventContext 
    at org.nuxeo.ecm.user.center.profile.localeProvider.UserLocaleSelectorListener.handleEvent(UserLocaleSelectorListener.java:43) 
    at org.nuxeo.ecm.core.event.impl.EventServiceImpl.fireEvent(EventServiceImpl.java:200) 
    at org.nuxeo.ecm.core.scheduler.EventJob.execute(EventJob.java:119) 
    at org.nuxeo.ecm.core.scheduler.EventJob.execute(EventJob.java:65) 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) 
2016-06-02 12:13:01,047 WARN [Nuxeo-Work-default-3] [org.nuxeo.ecm.platform.ec.notification.NotificationEventListener] Can not handle notification on a event that is not bound to a DocumentEventContext 

Пожалуйста, дайте мне знать, как создать точку расширения слушателя в Nuxeo IDE. Я создаю его как слушателя документа. Как устранить ошибку?

ответ

2

user_created EVENTID используется внутренне платформой Nuxeo в контексте документа.

Поэтому вы не можете запустить это событие с помощью планировщика, который не имеет контекста документа.

Если вы хотите сделать свой образец работы, просто переименовать user_created в my_user_created или любой другой.

Беста,

+0

привет, я попытался это, но сталкиваюсь с теми же ошибками, вы можете помочь с ошибкой – Parul

+0

привет еще раз, я лично проверил ваш образец и она отлично работает для меня. Ваше cronExpression (0 1 * * *?) Означает каждый час в первую минуту часа **, например. 16h01, 17h01, 18h01 и т. Д. **, который не соответствует отметке времени вашего журнала (** 2016-06-02 12: 13: 01,047 **), что заставляет меня думать, что стек не связан с вашим планировщиком, но что-то другое. –

+0

привет, большое спасибо .. мой nuxeo не был настроен. Теперь его сделали, чтобы эта ошибка не сохранялась. Но я не могу получить какой-либо вывод. Можете ли вы предоставить мне информацию, если вы создаете планировщик как компонент nuxeo и слушатель в качестве слушателя документов .. также вы видите вывод в окне вашего eclipse? Ваша помощь приветствуется – Parul