You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2014/10/29 11:30:26 UTC

git commit: https://issues.apache.org/jira/browse/AMQ-5417 - use proper classloader in TaskRunnerFactory

Repository: activemq
Updated Branches:
  refs/heads/trunk adafdfe97 -> dffccb1c7


https://issues.apache.org/jira/browse/AMQ-5417 - use proper classloader in TaskRunnerFactory


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/dffccb1c
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/dffccb1c
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/dffccb1c

Branch: refs/heads/trunk
Commit: dffccb1c7dc8e4b4a6282fd5056dfd854d2d2a9b
Parents: adafdfe
Author: Dejan Bosanac <de...@nighttale.net>
Authored: Wed Oct 29 11:30:15 2014 +0100
Committer: Dejan Bosanac <de...@nighttale.net>
Committed: Wed Oct 29 11:30:15 2014 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/activemq/broker/BrokerService.java  | 1 +
 .../java/org/apache/activemq/thread/TaskRunnerFactory.java   | 8 ++++++++
 2 files changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/dffccb1c/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
index 5c36034..3af7075 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
@@ -1202,6 +1202,7 @@ public class BrokerService implements Service {
         if (this.taskRunnerFactory == null) {
             this.taskRunnerFactory = new TaskRunnerFactory("ActiveMQ BrokerService["+getBrokerName()+"] Task", getTaskRunnerPriority(), true, 1000,
                     isDedicatedTaskRunner());
+            this.taskRunnerFactory.setThreadClassLoader(this.getClass().getClassLoader());
         }
         return this.taskRunnerFactory;
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/dffccb1c/activemq-client/src/main/java/org/apache/activemq/thread/TaskRunnerFactory.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/thread/TaskRunnerFactory.java b/activemq-client/src/main/java/org/apache/activemq/thread/TaskRunnerFactory.java
index 86f4f3f..d6b1938 100755
--- a/activemq-client/src/main/java/org/apache/activemq/thread/TaskRunnerFactory.java
+++ b/activemq-client/src/main/java/org/apache/activemq/thread/TaskRunnerFactory.java
@@ -53,6 +53,7 @@ public class TaskRunnerFactory implements Executor {
     private final AtomicBoolean initDone = new AtomicBoolean(false);
     private int maxThreadPoolSize = Integer.MAX_VALUE;
     private RejectedExecutionHandler rejectedTaskHandler = null;
+    private ClassLoader threadClassLoader;
 
     public TaskRunnerFactory() {
         this("ActiveMQ Task");
@@ -172,6 +173,9 @@ public class TaskRunnerFactory implements Executor {
                 Thread thread = new Thread(runnable, threadName);
                 thread.setDaemon(daemon);
                 thread.setPriority(priority);
+                if (threadClassLoader != null) {
+                    thread.setContextClassLoader(threadClassLoader);
+                }
 
                 LOG.trace("Created thread[{}]: {}", threadName, thread);
                 return thread;
@@ -239,6 +243,10 @@ public class TaskRunnerFactory implements Executor {
         this.maxThreadPoolSize = maxThreadPoolSize;
     }
 
+    public void setThreadClassLoader(ClassLoader threadClassLoader) {
+        this.threadClassLoader = threadClassLoader;
+    }
+
     public RejectedExecutionHandler getRejectedTaskHandler() {
         return rejectedTaskHandler;
     }