Как настроить сервис Spring-DM OSGi для нового экземпляра на вызов? - PullRequest
2 голосов
/ 17 июня 2010

Я начинаю вникать в использование сервисов Spring DM и OSGi в приложении RCP.Я создал сервис, который используется другим пакетом в приложении RCP.Он выполняет поиск службы посредством вызовов getBundleContext (). GetServiceReference () с использованием явных имен пакетов и имен классов служб.Я пока не использую DI.Проблема, с которой я сталкиваюсь, заключается в том, что служба, возвращаемая в запрашивающем пакете, является одиночной.Иногда я замечаю проблему с многопоточностью, поскольку это служба с сохранением состояния.Как настроить приложение для получения нового экземпляра службы при каждом вызове?

Вот содержимое моего весеннего XML-файла, который регистрирует сервис:

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

1 Ответ

2 голосов
/ 30 июня 2010

Сервисы OSGi в целом могут вызываться одновременно несколькими клиентами.Единственное, что OSGi поддерживает «из коробки» - это использование ServiceFactory, который позволяет вам возвращать разные экземпляры для каждого вызывающего клиентского пакета.Не существует стандартного механизма для создания нового экземпляра для каждого вызова метода.Вы должны справиться с этим в своей реализации сервиса самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...