KARAF-4431 - Improve classloader handling in kafka appender
Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/f0b749b5 Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/f0b749b5 Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/f0b749b5 Branch: refs/heads/master Commit: f0b749b5f876b1def888e613e57d3c3a6fd07a8b Parents: 69bbf4b Author: Jean-Baptiste Onofré <[email protected]> Authored: Tue Mar 22 11:06:21 2016 +0100 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Tue Mar 22 11:06:21 2016 +0100 ---------------------------------------------------------------------- .../apache/karaf/decanter/appender/kafka/KafkaAppender.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/f0b749b5/appender/kafka/src/main/java/org/apache/karaf/decanter/appender/kafka/KafkaAppender.java ---------------------------------------------------------------------- diff --git a/appender/kafka/src/main/java/org/apache/karaf/decanter/appender/kafka/KafkaAppender.java b/appender/kafka/src/main/java/org/apache/karaf/decanter/appender/kafka/KafkaAppender.java index 241d843..a4e4e09 100644 --- a/appender/kafka/src/main/java/org/apache/karaf/decanter/appender/kafka/KafkaAppender.java +++ b/appender/kafka/src/main/java/org/apache/karaf/decanter/appender/kafka/KafkaAppender.java @@ -127,8 +127,13 @@ public class KafkaAppender implements EventHandler { this.topic = getValue(config, "topic", "decanter"); // workaround for KAFKA-3218 - Thread.currentThread().setContextClassLoader(null); - this.producer = new KafkaProducer<>(properties); + ClassLoader originClassLoader = Thread.currentThread().getContextClassLoader(); + try { + Thread.currentThread().setContextClassLoader(null); + this.producer = new KafkaProducer<>(properties); + } finally { + Thread.currentThread().setContextClassLoader(originClassLoader); + } } private String getValue(Dictionary<String, Object> config, String key, String defaultValue) {
