There are multiple places in Kafka where the context class loader or
Class.forName() is used to load classes. Perhaps it would be better to use
a common utility everywhere for dynamic classloading with an option to use
the right classloader.loadClass() that works with OSGi?

Regards,

Rajini

On Mon, Jan 11, 2016 at 1:49 PM, Ramon Gordillo <gordillo.ra...@gmail.com>
wrote:

> Hi.
>
> I have tried using 0.9.0.0, building an OSGi bundle and exporting the
> packages. However, when creating a Producer, I get an Ex:
>
> Caused by: org.apache.kafka.common.config.ConfigException: Invalid value
> org.apache.kafka.clients.producer.internals.DefaultPartitioner for
> configuration partitioner.class: Class
> org.apache.kafka.clients.producer.internals.DefaultPartitioner could not be
> found.
>
> at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:255)
> ~[kafka-clients-0.9.0.0.jar:na]
> at org.apache.kafka.common.config.ConfigDef.define(ConfigDef.java:78)
> ~[kafka-clients-0.9.0.0.jar:na]
> at org.apache.kafka.common.config.ConfigDef.define(ConfigDef.java:94)
> ~[kafka-clients-0.9.0.0.jar:na]
> at org.apache.kafka.clients.producer.ProducerConfig.<clinit>(
> ProducerConfig.java:206) ~[kafka-clients-0.9.0.0.jar:na]
>
> That is because the static ProducerConfig initializer sets the Class name
> and ConfigDef does a Class.forName, which does not work pretty well in OSGi
> environments. But there is another way to set those "class" parameters, and
> is using directly the class. So in my OSGi environment, changing
> ProducerConfig:
>
>
>                                .define(PARTITIONER_CLASS_CONFIG,
>                                         Type.CLASS,
>                                         DefaultPartitioner.class.getName(),
>                                         Importance.MEDIUM,
> PARTITIONER_CLASS_DOC)
> for
>
>                                .define(PARTITIONER_CLASS_CONFIG,
>                                         Type.CLASS,
>                                         DefaultPartitioner.class,
>                                         Importance.MEDIUM,
> PARTITIONER_CLASS_DOC)
>
> works fine in OSGi too.
>
> What do you think about this?
>
> Thanks in advance.
>

Reply via email to