每个注射呼叫中的osgi-新实例中的春季豆服务



我试图使用Spring的应用程序上下文导出Spring Bean作为服务,我需要将它们导出为"原型"范围,但是由于OSGI服务注册表的opsgi服务登记册,这是不可能的服务为辛格尔顿。

做一些研究,我遇到了一篇文章,建议使用"会话"范围来解决这个问题。我正在遵循本教程以实现此功能,但是我遇到了一个问题,该问题与班级加载程序有关。

这是我宣布豆的方式

<osgi:service id="SimulationExporter" ref="simulationService" interface="org.geppetto.core.simulation.ISimulation"/>
<bean id="simulationService" scope="session" class="org.geppetto.simulation.SimulationService">
<aop:scoped-proxy proxy-target-class="false"/>
</bean>

将bean导出到另一个捆绑包时,我会收到以下错误

Caused by: java.lang.IllegalArgumentException: interface org.springframework.aop.scope.ScopedObject is not visible from class loader
at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:484)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:713)
at org.springframework.aop.framework.JdkDynamicAopProxy.getProxy(JdkDynamicAopProxy.java:117)

导入服务bean的捆绑包具有依赖项org.springframework.aop-3.0.0.Release,这也已复制到处女座存储库中。有什么想法,为什么班级加载程序找不到范围"会话"所需的接口?

您的subtest.mf是否包含aop.scope的导入软件包?如果您使用的是Apache Felix生成,则尝试添加类似的内容:

    <Import-Package>org.aopalliance.aop,org.springframework.aop,org.springframework.aop.scope,org.springframework.aop.framework,*</Import-Package>

最新更新