[ 
http://jira.nuxeo.org/browse/NXP-2575?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=39776#action_39776
 ] 

Olivier Grisel commented on NXP-2575:
-------------------------------------

Here is the proposed patch:

diff --git 
a/nuxeo-platform-scheduler-core/src/main/java/org/nuxeo/ecm/platform/scheduler/core/EventJob.java
 
b/nuxeo-platform-scheduler-core/src/main/java/org/nuxeo/ecm/platform/scheduler/core/EventJob.java
--- 
a/nuxeo-platform-scheduler-core/src/main/java/org/nuxeo/ecm/platform/scheduler/core/EventJob.java
+++ 
b/nuxeo-platform-scheduler-core/src/main/java/org/nuxeo/ecm/platform/scheduler/core/EventJob.java
@@ -41,18 +41,20 @@ public class EventJob implements Job {

     private static final Log log = LogFactory.getLog(EventJob.class);

-    public void execute(JobExecutionContext context) throws 
JobExecutionException {
+    public void execute(JobExecutionContext context)
+            throws JobExecutionException {
         JobDataMap dataMap = context.getJobDetail().getJobDataMap();
         String eventId = dataMap.getString("eventId");
         String eventCategory = dataMap.getString("eventCategory");
         String username = dataMap.getString("username");

         // Setup a user session
-        UserSession us = new UserSession(username, 
dataMap.getString("password"));
+        UserSession us = new UserSession(username,
+                dataMap.getString("password"));
         try {
             us.login();
         } catch (LoginException e) {
-            e.printStackTrace();
+            log.error(e);
             return;
         }
         UserPrincipal principal = new UserPrincipal(username);
@@ -64,8 +66,19 @@ public class EventJob implements Job {
                 eventCategory, comment);
         CoreEventListenerService service = 
NXCore.getCoreEventListenerService();
         if (service != null) {
-            log.info("Sending scheduled event id=" + eventId + ", category=" + 
eventCategory);
-            service.notifyEventListeners(event);
+            log.info("Sending scheduled event id=" + eventId + ", category="
+                    + eventCategory);
+
+            // switch to the Nuxeo classloader so that the event listeners work
+            // as usual
+            ClassLoader jbossCL = 
Thread.currentThread().getContextClassLoader();
+            ClassLoader nuxeoCL = EventJob.class.getClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(nuxeoCL);
+                service.notifyEventListeners(event);
+            } finally {
+                Thread.currentThread().setContextClassLoader(jbossCL);
+            }
         } else {
             log.error("Cannot find EventListenerService");
         }


> Make Core Event Listeners triggered by the Nuxeo Scheduler use the nuxeo 
> class loader instead of Jboss'
> -------------------------------------------------------------------------------------------------------
>
>                 Key: NXP-2575
>                 URL: http://jira.nuxeo.org/browse/NXP-2575
>             Project: Nuxeo Enterprise Platform
>          Issue Type: Bug
>    Affects Versions: 5.1.5, 5.2 M2
>            Reporter: Olivier Grisel
>            Assignee: Olivier Grisel
>             Fix For: 5.1.6, 5.2 M3
>
>   Original Estimate: 2 hours
>  Remaining Estimate: 2 hours
>
> The fact that the Nuxeo Scheduler threads use the default jboss classload 
> make Framework.login() fail in core eventlisteners with a SystemLoginModule 
> classloading error.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.nuxeo.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to