Hi David,

If you want to be able to deploy a framework that isn't prepared you can
create a fragment bundle containing the javax.activation api with the
system bundle as fragment host. You still won't be able to swap
implementations at runtime as the framework needs to be restarted to
refresh such a fragment bundle.

Regards,
Bram

On Wed, Apr 22, 2015 at 9:33 AM David Bosschaert <[email protected]>
wrote:

> Hi all,
>
> Thanks for the additional suggestions. I guess the unfortunate thing
> is for all of them that the JRE or framework configuration needs to be
> changed before it works...
>
> Just curious, is anyone aware of a modified/alternate version of
> javax.activation that does not suffer from this problem? I know
> similar things were done in the past in the Geronimo and ServiceMix
> projects...
>
> Thanks again,
>
> David
>
> On 22 April 2015 at 08:22, Freeman Fang <[email protected]> wrote:
> > Hi David,
> >
> > Could you put that activation bundle into the endorsed dir so that all
> > activation class and java.awt.datatransfer.DataFlavor could be loaded
> from
> > system class loader to avoid this problem? That's what Karaf do
> currently,
> > you can see org.apache.servicemix.specs.activation-api-1.1-2.4.0.jar in
> > $KARAF_HOME/lib/endorsed.
> >
> > -------------
> > Freeman(Yue) Fang
> >
> > Red Hat, Inc.
> > FuseSource is now part of Red Hat
> >
> >
> >
> > On 2015-4-21, at 下午9:23, David Bosschaert wrote:
> >
> > Hi all,
> >
> > Apologies for posting to the Karaf list as this is not really a Karaf
> > issue, but I this list may contain people that might have come across
> > this issue as well.
> >
> > I have some code that runs in OSGi that uses
> > javax.activation.DataHandler. As this is javax... you should be able
> > to provide your own bundle providing these classes. So I have a bundle
> > that provides an alternative javax.activation.DataHandler. Now it
> > turns out that this class has a dependency on
> > java.awt.datatransfer.DataFlavor, a java.awt class! The DataFlavor
> > code is kicked in from DataHandler, but then DataFlavor tries to load
> > some classes too, in my case it tries to load DataHandler again. The
> > code in DataFlavor tries to load classes from the System Classloader
> > first, so it finds the javax.activation.DataHandler in the JRE and
> > loads that -> boom LinkageError.
> >
> > I was wondering whether there are any 'fixed' versions of
> > javax.activation that don't expose this behaviour and work properly in
> > a modular environment like OSGi.
> >
> > Many thanks,
> >
> > David
> >
> >
>

Reply via email to