Spring DM中的服务提供商和消费者

Spring DM中的服务提供商和消费者,spring,osgi,equinox,Spring,Osgi,Equinox,我有一个包,可以提供和消费服务。我的应用程序上下文是: <bean id="dbConsumer" class="service.User"> <property name="db" ref="DBservice"></property> </bean> <osgi:reference id="DBservice"> <osgi:interfaces> <value>com.d

我有一个包,可以提供和消费服务。我的应用程序上下文是:

<bean id="dbConsumer" class="service.User">
    <property name="db" ref="DBservice"></property>
</bean> 

<osgi:reference id="DBservice">
    <osgi:interfaces>
        <value>com.db.manager.DatabaseManager</value>
    </osgi:interfaces>
</osgi:reference>

<bean name="ServicioZB" id="zbservice" class="service.ZBService"/>

<osgi:service  ref="zbservice">
    <osgi:interfaces>
        <value>service.IZBService</value>
    </osgi:interfaces>
</osgi:service>

com.db.manager.DatabaseManager
service.IZBService
问题是何时部署。我在Equinox工作,如果我观看服务,我可以看到捆绑使用DBservice。但是,该服务没有公开。但是如果我删除引用标记,我的服务就会暴露。也就是说,我有3个包(A,B,C)。B导出a使用的服务。同样,C导出B使用的服务。那么,我的问题是:标签不能放在一起吗?我如何开发一个捆绑包来消费和提供服务

提前谢谢


问候

如果仅使用发布一个接口,请尝试使用interface属性而不是interfaces标记。因此,替换

 <osgi:service ref="zbservice">
     <osgi:interfaces>
         <value>service.IZBService</value>
     </osgi:interfaces>
 </osgi:service>

service.IZBService


有一次我也遇到过类似的问题,这种方法确实对我有效

 <osgi:service ref="zbservice" interface="service.IZBService"/>