First,I deploy a bundle A which exports two services with the same interface,like this
Second,I deploy a web bundle B which references a collection of the service above,like thisCode:<service ref="provider1" interface="x.y.z.provider.IXmlparseProvider" /> <service ref="provider2" interface="x.y.z.provider.IXmlparseProvider" />
Third,I autowire the list service into class in web bundle B,like thisCode:<list id="xmlparseProviders" interface="x.y.z.provider.IXmlparseProvider" />
Then, an error occur when starting spring dm server:Code:@Autowired private List<IXmlparseProvider> xmlparseProviders;
Web bundle B doesn't reference the two services exported by bundle A as a list collection.Code:org.springframework.osgi.service.ServiceUnavailableException: service matching filter=[(objectClass=x.y.z.provider.IXmlparseProvider)] unavailable at org.springframework.osgi.service.importer.support.internal.collection.OsgiServiceCollection.mandatoryServiceCheck(OsgiServiceCollection.java:318) at org.springframework.osgi.service.importer.support.internal.collection.OsgiServiceCollection.afterPropertiesSet(OsgiServiceCollection.java:282) at org.springframework.osgi.service.importer.support.OsgiServiceCollectionProxyFactoryBean.createProxy(OsgiServiceCollectionProxyFactoryBean.java:240) at org.springframework.osgi.service.importer.support.AbstractServiceImporterProxyFactoryBean.getObject(AbstractServiceImporterProxyFactoryBean.java:86) at org.springframework.osgi.service.importer.support.OsgiServiceCollectionProxyFactoryBean.getObject(OsgiServiceCollectionProxyFactoryBean.java:188) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143) ... 32 common frames omitted
What's the matter? Is there something wrong with my code?
I am very confused with this issue;can somebody give me some ideas?


