[jboss-svn-commits] JBL Code SVN: r14777 - labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/schedule.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 31 08:40:04 EDT 2007


Author: kevin.conner at jboss.com
Date: 2007-08-31 08:40:04 -0400 (Fri, 31 Aug 2007)
New Revision: 14777

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/schedule/ScheduleProvider.java
Log:
Initialise the TCC: JBESB-949

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/schedule/ScheduleProvider.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/schedule/ScheduleProvider.java	2007-08-31 11:21:47 UTC (rev 14776)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/schedule/ScheduleProvider.java	2007-08-31 12:40:04 UTC (rev 14777)
@@ -47,6 +47,8 @@
     /* Quartz scheduler instance */
     private Scheduler scheduler;
     private List<Schedule> schedules;
+    
+    private final ClassLoader tcc ;
 
     public ScheduleProvider(Properties properties, List<Schedule> schedules) throws ConfigurationException {
         try {
@@ -65,6 +67,7 @@
             } else {
                 scheduler = new StdSchedulerFactory().getScheduler();
             }
+            tcc = Thread.currentThread().getContextClassLoader() ;
         } catch (SchedulerException e) {
             throw new ConfigurationException("Unable to create Scheduler instance.", e);
         } catch (IOException e) {
@@ -138,6 +141,7 @@
 
         jobDetail = new JobDetail("JBossESB", name, ESBScheduledJob.class);
         jobDataMap.put(ScheduledEventListener.class.getName(), listener);
+        jobDataMap.put(ClassLoader.class.getName(), tcc);
         jobDetail.setJobDataMap(jobDataMap);
         try {
             scheduler.scheduleJob(jobDetail, trigger);
@@ -197,13 +201,21 @@
 
     public static class ESBScheduledJob implements Job {
         public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-            ScheduledEventListener listener = (ScheduledEventListener) jobExecutionContext.getJobDetail().getJobDataMap().get(ScheduledEventListener.class.getName());
+            final JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap() ;
+            ScheduledEventListener listener = (ScheduledEventListener) jobDataMap.get(ScheduledEventListener.class.getName());
+            final ClassLoader tcc = (ClassLoader)jobDataMap.get(ClassLoader.class.getName());
+            
+            final Thread thread = Thread.currentThread() ;
+            final ClassLoader currentClassLoader = thread.getContextClassLoader() ;
+            thread.setContextClassLoader(tcc) ;
             try {
                 listener.onSchedule();
             } catch (SchedulingException e) {
                 JobExecutionException jobException = new JobExecutionException("Scheduling exception on " + jobExecutionContext.getJobDetail().getName());
                 jobException.initCause(e);
                 throw jobException;
+            } finally {
+                thread.setContextClassLoader(currentClassLoader) ;
             }
         }
     }




More information about the jboss-svn-commits mailing list