The context class loader you set through activator is not the one spring
will use. It's not the same thread as the one throwing
"java.io.FileNotFoundException".

I found that the bundle(taxonomyimplbundle) containing the resource file
"/META-INF/spring/repo/test.db4o" was not the
bundle(258,taxonomydaoimplbundle)  which need to load the file.

According to OSGI class loading mechanism,  You need to either import the
package "META-INF.spring.repo" in the taxonomydaoimpl bundle or you can set
the context class loader in the right place.

Spring extender will not be responsible for this, it just collects the files
under /META-INF/spring/*  and create new application context for each
bundle, the files will not add to context class loader automatically.



2011/6/15 Shamik Bandopadhyay <[email protected]>

> Tribon, the Bundle-ClassPath in manifest file does contain "."  .
> Here's my manifest file.
>
> Manifest-Version: 1.0
> Export-Package: com.test.taxonomy.api.impl;uses:="org.springframew
>  ork.transaction.annotation";version="1.0.0"
> Bundle-ClassPath: .
> Built-By: bandops
> Tool: Bnd-0.0.357
> Bundle-Name: Taxonomy Impl Bundle
> Created-By: Apache Maven Bundle Plugin
> Build-Jdk: 1.6.0_21
> Bundle-Version: 1.0.0
> Bnd-LastModified: 1308013351431
> Embed-Transitive: true
> Bundle-ManifestVersion: 2
> Embed-Dependency: *;scope=compile|runtime;inline=true;artifactId=!spri
>  ng|commons-logging
> Import-Package: com.test.taxonomy.api.impl;resolution:=optional;ve
>  rsion="1.0",javax.management;resolution:=optional,javax.net;resolutio
>  n:=optional,javax.net.ssl;resolution:=optional,javax.xml.bind.annotat
>  ion;resolution:=optional,org.apache.commons.logging;resolution:=optio
>  nal,org.apache.tools.ant;resolution:=optional,org.apache.tools.ant.ty
>  pes;resolution:=optional,org.apache.tools.ant.types.resources;resolut
>  ion:=optional,org.apache.tools.ant.util.regexp;resolution:=optional,o
>  rg.springframework.beans.factory;resolution:=optional;version="2.5",o
>  rg.springframework.core;resolution:=optional;version="2.5",org.spring
>  framework.core.io;resolution:=optional;version="2.5",org.springframew
>  ork.dao;resolution:=optional;version="2.5",org.springframework.dao.su
>  pport;resolution:=optional;version="2.5",org.springframework.transact
>  ion;resolution:=optional;version="2.5",org.springframework.transactio
>  n.annotation;resolution:=optional;version="2.5",org.springframework.t
>  ransaction.support;resolution:=optional;version="2.5",org.springframe
>  work.util;resolution:=optional;version="2.5"
> Bundle-SymbolicName: taxonomyimplbundle
>
> 2011/6/14 Tribon Cheng <[email protected]>:
> > Maybe you can check "BundleClasspath" in the manifest header file of your
> > bundle.  does it include "."?
> > 在 2011-6-14 下午10:26, <[email protected]>写道:
> >> Take a look at this,
> >>
> >
> http://www.dynamicjava.org/articles/osgi-matters/3rd-party-components-with-osgi/11-osgi-matters/43-3rd-party-components-incompatibility-problems?tmpl=component&print=1&page=
> >>
> >> Quoting Shamik Bandopadhyay <[email protected]>:
> >>
> >>> Well, that's the part which is puzzling. I don't see any reason why
> >>> Spring would use a seperate classloader.I've even tried including the
> >>> db4o file under
> >>>
> >
> <input-resource>META-INF/spring/repo/test.db4o=target/classes/META-INF/spring/repo/test.db4o</input-reource>
> >>> , but issue remains the same...
> >>>
> >>> On Mon, Jun 13, 2011 at 12:42 PM, <[email protected]> wrote:
> >>>> I'm no expert but my best guess would be that spring is trying to load
> > the
> >>>> file from the wrong classloader. If I'm reading the spring source
> > correctly,
> >>>> it will attempt to load "classpath:META-INF/spring/repo/test.db4o"
> from
> >>>> Thread.currentThread().getContextClassLoader() and then from
> >>>> ClassUtils.class.getClassLoader() if that fails. That's my 2 cents
> > anyway.
> >>>>
> >>>> Quoting Shamik Bandopadhyay <[email protected]>:
> >>>>
> >>>>> The file is in the same bundle and located inside
> >>>>> src/resources/META-INF/spring/repo/test.db4o. I've confirmed this in
> >>>>> the generated bundle as well.
> >>>>>
> >>>>> On Mon, Jun 13, 2011 at 8:40 AM, Tribon Cheng <[email protected]>
> >>>>> wrote:
> >>>>>>
> >>>>>> Resources are loaded in the same way as classes. Make sure the file
> is
> >>>>>> under
> >>>>>> the classpath, and is exported if it is used in different bundle.
> >>>>>> 在 2011-6-13 下午11:25,"Shamik Bandopadhyay" <[email protected]>写道:
> >>>>>>>
> >>>>>>> Hi,
> >>>>>>>
> >>>>>>> I'm trying to deploy a spring based bundle in osgi (fuse esb).In
> >>>>>>> spring context, I'm referring to a db4o file which is inside
> > resources
> >>>>>>> folder. As per my understanding, a maven project will make sure
> that
> >>>>>>> any file available under resources folder will be available in
> > project
> >>>>>>> classpath. I've kept the file under
> >>>>>>> resources/META-INF/spring/repo/test.db4o.
> >>>>>>>
> >>>>>>> Here's the entry in spring context.
> >>>>>>>
> >>>>>>> <bean id="objectContainer"
> >>>>>>> class="org.springmodules.db4o.ObjectContainerFactoryBean">
> >>>>>>>    <property name="databaseFile"
> >>>>>>> value="classpath:META-INF/spring/repo/test.db4o" />
> >>>>>>> </bean>
> >>>>>>>
> >>>>>>> Once I install and try to start the application, I'm getting the
> >>>>>>> following exception.
> >>>>>>>
> >>>>>>> "java.io.FileNotFoundException: OSGi
> >>>>>>> resource[classpath:META-INF/spring/repo/test.db4o|bnd.id
> >>>>>>
> >>>>>> =258|bnd.sym=taxonomydaoimplbundle]
> >>>>>>>
> >>>>>>> cannot be resolved to absolute file path because it does not reside
> > in
> >>>>>>> the file system: bundle://258.0:1/META-INF/spring/repo/test.db4o"
> >>>>>>>
> >>>>>>> I've tried different combinations, but Felix doesn't seem to
> > recognize
> >>>>>>> this file. Any pointer will be appreciated.
> >>>>>>>
> >>>>>>> - Thanks
> >>>>>>>
> >>>>>>>
> ---------------------------------------------------------------------
> >>>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>> For additional commands, e-mail: [email protected]
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: [email protected]
> >>>>> For additional commands, e-mail: [email protected]
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: [email protected]
> >>>> For additional commands, e-mail: [email protected]
> >>>>
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [email protected]
> >>> For additional commands, e-mail: [email protected]
> >>>
> >>>
> >>
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
Contribute to Enterprise Integration

Reply via email to