2014-01-25 35 views
2

我試圖使用Spring的應用程序上下文將spring bean導出爲服務,我需要將它們作爲「原型」範圍導出,但由於OSGi服務註冊表將服務緩存爲單例。在OSGI中導出Spring Bean服務 - 每次注入調用的新實例

做一些研究我遇到了一個post建議使用「會話」範圍來解決這個問題。我正在關注this tutorial以獲得此工作,但是我遇到了與類加載器無法找到接口有關的問題。

這裏是如何,我宣佈豆

<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> 

當導出豆到另一個包,我收到以下錯誤

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) 

束導入服務豆有依賴org.springframework .aop-3.0.0.RELEASE,這也被複制到處女座倉庫。任何想法爲什麼類加載器沒有找到它需要的範圍「會話」的接口?

回答

1

您的MANIFEST.MF是否包含aop.scope的導入包? 如果您使用Apache Felix生成它,請嘗試添加如下內容:

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