[
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