Я бы хотел экспортировать bean-компонент из одного контекста в другой.Проблемы начинаются, когда у этого компонента нет интерфейса, такого как MongoClient.Регистр контекста первого пакета Mongoclient, но когда я хочу представить его другому, я получаю: «В реестре не найдено bean-компонента для mongo типа: com.mongodb.Mongo» из ссылочного комплекта.Есть ли способ определить bean-компонент в реестре OSGi по классу, а не по интерфейсу?
Исключение исходит из набора ссылок:
Исключение в потоке "SpringOsgiExtenderThread-86"
org.apache.camel.RuntimeCamelException:
org.apache.camel.FailedToCreateRouteException: не удалось создать маршрут article-author-getAll at: >>> Filter [{in ([header {operationName} ==
getAllAuthors])} -> [SetHeader [CamelMongoDbLimit, {2}],
В [mongodb: mongo? Database = xxxx & collection = xxxx & operation = findAll], войти [после db выберите getAllAuthors $ {body}]]] <<< в маршруте:<br> Маршрут (article-author-getAll) [[From [activemq: queue: backend.au ...
из-за не удалось разрешить конечную точку:
mongodb: // mongo? Collection = xxx & database = xxxx & operation =findAll из-за: Не удалось найти bean-компонент в реестре для: mongo типа:
com.mongodb.Mongo
В комплекте услуг все выглядит хорошо!
кодвыглядит так в пакете услуг:
<bean id="mongoDatasource" class="com.mongodb.MongoClient">
<constructor-arg name="uri" ref="mongoClientUri" />
</bean>
<bean id="mongoClientUri" class="com.mongodb.MongoClientURI">
<constructor-arg name="uri" value="${mongo_host}" />
</bean>
Код отконтекст пакета ference:
<reference id="mongoDataSourceReference" bean-name="mongoDatasource"
context-class-loader="service-provider"
interface="com.mongodb.MongoClient"/>
MongoClient не имеет интерфейса и osgi: ссылка должна иметь определенное свойство интерфейса.
Я попытался расширить класс MongoClient и реализует интерфейс, а затем раскрыть егок реестру osgi я получил его правильно в справочном комплекте, но затем я получил исключение из camelMongo, где я должен определить только класс MongoClient!
Маршрут Camel Mongo выглядит следующим образом:
from("direct:findAll")
.to("mongodb:MYMONGOCLIENTBEAN?database=flights&collection=tickets&operation=findAll")
Маршрут Camel Mongoожидать bean-компонента MongoClient в строке подключения.
Так есть ли способ определить bean-компонент в реестре osgi по классам, а не по интерфейсу?или я должен определить bean-компонент MongoClient в том же пакете, что и camelMongo?