Hi Guillaume,

Here is the output of the command executed for the osgi bundle exporting the
service :

ActiveMq Broker Feature (105) provides:
---------------------------------------
org.apache.activemq.camel.component.ActiveMQComponent

Nevertheless, if I change the syntax in my service like this :

from :
    <osgi:service id="activemqservice" ref="active-mq"
auto-export="all-classes"/>
 to 
   <osgi:service id="activemqservice" ref="active-mq"
interface="org.apache.activemq.camel.component.ActiveMQComponent"/>

it works except that I have a new error during proxy creation of the class
ActiveMqComponent :

16:48:27,902 | ERROR | xtenderThread-16 | OsgiBundleXmlApplicationContext  |
gatedExecutionApplicationContext  366 | Post refresh error
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'importedActiveMqService': FactoryBean threw exception on object
creation; nested exception is java.lang.NoClassDefFoundError:
org/springframework/core/task/TaskExecutor
        at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:127)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:116)
        at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:91)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1288)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:217)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:425)
        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
        at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:68)
        at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:343)
        at
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
        at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:308)
        at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:138)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError:
org/springframework/core/task/TaskExecutor
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
        at java.lang.Class.getDeclaredMethod(Class.java:1935)
        at net.sf.cglib.proxy.Enhancer.getCallbacksSetter(Enhancer.java:627)
        at net.sf.cglib.proxy.Enhancer.setCallbacksHelper(Enhancer.java:615)
        at net.sf.cglib.proxy.Enhancer.setThreadCallbacks(Enhancer.java:609)
        at net.sf.cglib.proxy.Enhancer.createUsingReflection(Enhancer.java:631)
        at net.sf.cglib.proxy.Enhancer.firstInstance(Enhancer.java:538)
        at
net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:225)
        at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
        at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
        at
org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:201)
        at
org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
        at
org.springframework.osgi.service.util.internal.aop.ProxyUtils$1.run(ProxyUtils.java:65)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.osgi.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:62)
        at
org.springframework.osgi.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:39)
        at
org.springframework.osgi.service.importer.support.AbstractServiceProxyCreator.createServiceProxy(AbstractServiceProxyCreator.java:107)
        at
org.springframework.osgi.service.importer.support.OsgiServiceProxyFactoryBean.createProxy(OsgiServiceProxyFactoryBean.java:185)
        at
org.springframework.osgi.service.importer.support.AbstractServiceImporterProxyFactoryBean.getObject(AbstractServiceImporterProxyFactoryBean.java:86)
        at
org.springframework.osgi.service.importer.support.OsgiServiceProxyFactoryBean.getObject(OsgiServiceProxyFactoryBean.java:141)
        at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:121)
        ... 15 more
Caused by: java.lang.ClassNotFoundException:
org.springframework.core.task.TaskExecutor
        at
org.springframework.osgi.context.internal.classloader.ChainedClassLoader.doLoadClass(ChainedClassLoader.java:126)
        at
org.springframework.osgi.context.internal.classloader.ChainedClassLoader.loadClass(ChainedClassLoader.java:108)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)


gnodet wrote:
> 
> Can you run the "osgi/ls xx" command on the service bundle and paste the
> output ?
> 
> 2009/3/16 cmoulliard <[email protected]>
> 
>>
>> 1) Service
>>
>> The bundle where the service is declared (osgi:service) only import this
>> package
>>
>> org.apache.activemq.camel.component
>>
>> 2) Referenced
>>
>> The bundle where the service will be consumed (osgi:reference) import
>> these
>> references :
>>
>> org.apache.commons.logging,
>> org.apache.camel,
>> org.apache.camel.component,
>> org.apache.camel.component.jms,
>> org.apache.activemq.camel.component;${activemq.osgi.version},
>> org.apache.activemq.pool,
>>
>> but the error is alway there
>>
>>
>>
>> gnodet wrote:
>> >
>> > You don't need to export the package, as this one is exported by the
>> > activemq-camel bundle.
>> > But you need to import additional packages such as org.apache.camel and
>> > all
>> > packages that are used by the osgi service that you are trying to get a
>> > reference to.
>> >
>> > 2009/3/16 cmoulliard <[email protected]>
>> >
>> >>
>> >> My issue is that the name of the package is the same between
>> >> import-package
>> >> and export-package and maven felix bnd does not add export package :
>> >>
>> >>                                <configuration>
>> >>
>> >>  <manifestLocation>META-INF</manifestLocation>
>> >>                                        <instructions>
>> >>
>> >>  <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
>> >>
>> >> 
>> <Import-Package>org.apache.activemq.camel.component,*</Import-Package>
>> >>
>> >>  <Export-Package>org.apache.activemq.camel.component</Export-Package>
>> >>
>> >>  <Include-Resource>src/main/resources</Include-Resource>
>> >>
>> >>
>> >>
>> <Spring-Context>*;publish-context:=false;create-asynchronously:=true</Spring-Context>
>> >>
>> >>  <Private-Package></Private-Package>
>> >>                                        </instructions>
>> >>                                </configuration>
>> >>
>> >> and result of the importation (no Export-Package appears)
>> >>
>> >> ActiveMq Broker Feature (103)
>> >> -----------------------------
>> >> Manifest-Version = 1.0
>> >> Bnd-LastModified = 1237215735043
>> >> Tool = Bnd-0.0.255
>> >> Spring-Context = *;publish-context:=false;create-asynchronously:=true
>> >> Bundle-Name = ActiveMq Broker Feature
>> >> Built-By = Charlesm
>> >> Import-Package = org.apache.activemq.camel.component
>> >> Bundle-SymbolicName = reportincident.activemq
>> >> Bundle-Version = 1.0.0.SNAPSHOT
>> >> Build-Jdk = 1.6.0_12
>> >> Created-By = Apache Maven Bundle Plugin
>> >> Bundle-ManifestVersion = 2
>> >>
>> >>
>> >>
>> >> gnodet wrote:
>> >> >
>> >> > The reason is that for a given OSGi bundle to be able to see a
>> service
>> >> in
>> >> > the OSGi registry, it has to have on its classpath all the classes
>> or
>> >> > interfaces exported by the target OSGi service.  I suspect that in
>> your
>> >> > case, your client bundle does not import all the needed packages. 
>> You
>> >> can
>> >> > see the exact list of classes exported using the "osgi/ls" command
>> and
>> >> the
>> >> > list of packages imported using "packages/import" command.
>> >> > Make sure your bundle imports all the packages from the export list.
>> >> > This is a drawback of using auto-export imho.
>> >> >
>> >> > 2009/3/16 cmoulliard <[email protected]>
>> >> >
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> I have created an osgi bundle where the bean to expose as a service
>> is
>> >> >> defined in a spring file :
>> >> >>
>> >> >>    <bean id="activemq"
>> >> >> class="org.apache.activemq.camel.component.ActiveMQComponent">
>> >> >>                        <property name="brokerURL"
>> >> >> value="vm://localhost:61616?create=false" />
>> >> >>    </bean>
>> >> >>
>> >> >>    <osgi:service id="activemqservice" ref="activemq"
>> >> >> auto-export="all-classes"/>
>> >> >>
>> >> >> The service is well published. See the log here after.
>> >> >>
>> >> >> 13:18:42,058 | DEBUG | xtenderThread-16 |
>> >> OsgiBundleXmlApplicationContext
>> >> >>  |
>> >> >> ractOsgiBundleApplicationContext  247 | Registering BundleContext
>> as
>> a
>> >> >> bean
>> >> >> named bundleContext
>> >> >> 13:18:42,058 | DEBUG | xtenderThread-16 |
>> >> >> WaiterApplicationContextExecutor
>> >> >> |
>> >> >> WaiterApplicationContextExecutor  218 | Pre-refresh completed;
>> >> >> determining
>> >> >> dependencies...
>> >> >> 13:18:42,058 | DEBUG | xtenderThread-16 | DependencyServiceManager
>> >> >> |
>> >> >> startup.DependencyServiceManager  253 | Discovered local dependency
>> >> >> factories: []
>> >> >> 13:18:42,074 | DEBUG | xtenderThread-16 |
>> DefaultListableBeanFactory
>> >> >> |
>> >> >> ort.DefaultSingletonBeanRegistry  214 | Creating shared instance of
>> >> >> singleton bean 'activemqservice'
>> >> >> 13:18:42,074 | DEBUG | xtenderThread-16 |
>> DefaultListableBeanFactory
>> >> >> |
>> >> >> ractAutowireCapableBeanFactory$1  383 | Creating instance of bean
>> >> >> 'activemqservice'
>> >> >> 13:18:42,074 | DEBUG | xtenderThread-16 |
>> DefaultListableBeanFactory
>> >> >> |
>> >> >> stractAutowireCapableBeanFactory  459 | Eagerly caching bean
>> >> >> 'activemqservice' to allow for resolving potential circular
>> references
>> >> >> 13:18:42,105 | DEBUG | xtenderThread-16 |
>> CachedIntrospectionResults
>> >> >> |
>> >> >> beans.CachedIntrospectionResults  151 | Not strongly caching class
>> >> >>
>> >> >>
>> >>
>> [org.springframework.osgi.service.importer.support.OsgiServiceProxyFactoryBean]
>> >> >> because it is not cache-safe
>> >> >> 13:18:42,105 | DEBUG | xtenderThread-16 |
>> DefaultListableBeanFactory
>> >> >> |
>> >> >> stractAutowireCapableBeanFactory 1367 | Invoking
>> afterPropertiesSet()
>> >> on
>> >> >> bean with name 'activemqservice'
>> >> >> 13:18:42,105 | DEBUG | xtenderThread-16 |
>> DefaultListableBeanFactory
>> >> >> |
>> >> >> ractAutowireCapableBeanFactory$1  411 | Finished creating instance
>> of
>> >> >> bean
>> >> >> 'activemqservice'
>> >> >> 13:18:42,105 | INFO  | xtenderThread-16 | DependencyServiceManager
>> >> >> |
>> >> >> startup.DependencyServiceManager  278 | Adding OSGi service
>> dependency
>> >> >> for
>> >> >> importer [&activemqservice] matching OSGi filter
>> >> >>
>> [(objectClass=org.apache.activemq.camel.component.ActiveMQComponent)]
>> >> >>
>> >> >> Unfortunately, the osgi bundle who will consume the osgi:service
>> >> >>
>> >> >>        <osgi:reference id="activemqservice"
>> >> >> interface="org.apache.activemq.camel.component.ActiveMQComponent"
>> />
>> >> >>
>> >> >> generates an error
>> >> >>
>> >> >> 13:18:42,105 | DEBUG | xtenderThread-16 | DependencyServiceManager
>> >> >> |
>> >> >> startup.DependencyServiceManager  226 | 1 OSGi service
>> dependencies,
>> 1
>> >> >> unsatisfied (for beans [&activemqservice]) in
>> >> >> OsgiBundleXmlApplicationContext(bundle=reportincident.interfaces,
>> >> >> config=osgibundle:/META-INF/spring/*.xml)
>> >> >> 13:18:42,105 | INFO  | xtenderThread-16 | DependencyServiceManager
>> >> >> |
>> >> >> startup.DependencyServiceManager  232 |
>> >> >> OsgiBundleXmlApplicationContext(bundle=reportincident.interfaces,
>> >> >> config=osgibundle:/META-INF/spring/*.xml) is waiting for
>> unsatisfied
>> >> >> dependencies [[&activemqservice]]
>> >> >> 13:18:42,105 | DEBUG | xtenderThread-16 |
>> >> >> WaiterApplicationContextExecutor
>> >> >> |
>> >> >> WaiterApplicationContextExecutor  257 | Registering service
>> dependency
>> >> >> dependencyDetector for
>> >> >> OsgiBundleXmlApplicationContext(bundle=reportincident.interfaces,
>> >> >> config=osgibundle:/META-INF/spring/*.xml)
>> >> >> 13:18:42,121 | DEBUG | xtenderThread-16 | DependencyServiceManager
>> >> >> |
>> >> >> startup.DependencyServiceManager  297 |
>> >> >> OsgiBundleXmlApplicationContext(bundle=reportincident.interfaces,
>> >> >> config=osgibundle:/META-INF/spring/*.xml) has registered service
>> >> >> dependency
>> >> >> dependencyDetector with filter:
>> >> >> (objectClass=org.apache.activemq.camel.component.ActiveMQComponent)
>> >> >>
>> >> >> What is the cause of this issue ? Do I have to change something in
>> my
>> >> >> MANIFEST file ?
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> -----
>> >> >> Charles Moulliard
>> >> >> SOA Architect
>> >> >>
>> >> >> My Blog :  http://cmoulliard.blogspot.com/
>> >> >> http://cmoulliard.blogspot.com/
>> >> >> --
>> >> >> View this message in context:
>> >> >>
>> >>
>> http://www.nabble.com/1-OSGi-service-dependencies%2C-1-unsatisfied-%28for-beans---activemqservice-%29-in-OsgiBundleXmlApplicationContext-tp22537014p22537014.html
>> >> >> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> > --
>> >> > Cheers,
>> >> > Guillaume Nodet
>> >> > ------------------------
>> >> > Blog: http://gnodet.blogspot.com/
>> >> > ------------------------
>> >> > Open Source SOA
>> >> > http://fusesource.com
>> >> >
>> >> >
>> >>
>> >>
>> >> -----
>> >> Charles Moulliard
>> >> SOA Architect
>> >>
>> >> My Blog :  http://cmoulliard.blogspot.com/
>> >> http://cmoulliard.blogspot.com/
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/1-OSGi-service-dependencies%2C-1-unsatisfied-%28for-beans---activemqservice-%29-in-OsgiBundleXmlApplicationContext-tp22537014p22540154.html
>> >> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>> > --
>> > Cheers,
>> > Guillaume Nodet
>> > ------------------------
>> > Blog: http://gnodet.blogspot.com/
>> > ------------------------
>> > Open Source SOA
>> > http://fusesource.com
>> >
>> >
>>
>>
>> -----
>> Charles Moulliard
>> SOA Architect
>>
>> My Blog :  http://cmoulliard.blogspot.com/
>> http://cmoulliard.blogspot.com/
>> --
>> View this message in context:
>> http://www.nabble.com/1-OSGi-service-dependencies%2C-1-unsatisfied-%28for-beans---activemqservice-%29-in-OsgiBundleXmlApplicationContext-tp22537014p22540577.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -- 
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
> 
> 


-----
Charles Moulliard
SOA Architect

My Blog :  http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/  
-- 
View this message in context: 
http://www.nabble.com/1-OSGi-service-dependencies%2C-1-unsatisfied-%28for-beans---activemqservice-%29-in-OsgiBundleXmlApplicationContext-tp22537014p22541181.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to