2010-06-16 73 views
2

我开始深入研究在RCP应用程序中使用Spring DM和OSGi服务。我创建了一个由RCP应用程序中的另一个包使用的服务。它通过调用getBundleContext()。getServiceReference()使用显式的包名称和服务类名称来查找服务。我还没有在任何地方使用DI。我遇到的问题是请求包中返回的服务是单例。有时我会注意到线程问题,因为它是一种“有状态”的服务。如何配置应用程序以便在每次调用时获取新的服务实例?如何为每次调用的新实例配置Spring-DM OSGi服务?

这里是我的春天xml文件内容注册服务:一般

<bean id="myServBean" class="com.xyz.ClassImpl"/> 
<osgi:service ref="myServBean" class="com.xyz.Class"/> 

回答

2

OSGi服务可以同时被多个客户端调用。 OSGi开箱即可支持的唯一方法是使用ServiceFactory,它允许您为每个调用的客户端软件包返回一个不同的实例。没有标准的机制来为每个方法调用创建一个新的实例。你必须自己处理你的服务实现。

+0

谢谢,这也是我在其他地方阅读过的并希望证实的内容。 – Bhav 2010-07-06 19:21:58

相关问题