2013-02-23 4 views
3

У меня проблемы с использованием OSGI-сервиса на верблюжьем пути. Прочитайте tutorial-osgi-camel-part1 , но он не получил его на работу.Как использовать комплект OSGI в верблюжьем маршруте?

Установка:

  • расслоение 1 определяет интерфейс Service (отдельный пакет для интерфейса, потому что может быть несколько реализаций него)
  • пучка 2 реализует этот интерфейс
  • пучок 3 следует использовать пучок 2 что обеспечивает интерфейс от пучка 1

в пачке 2 (реализации) являются два XML-файла, один с

<osgi:service ref="invokeService"> 
    <osgi:interfaces> 
     <value>invoker.Invoker</value> 
    </osgi:interfaces> 
</osgi:service> 

, а другой с

<bean id="invokeService" class="invokerImpl.InvokerImpl"> 
</bean> 

Bundle 3 имеет XML-файл с

<osgi:reference id="invokeService" interface="invoker.Invoker"/> 

в нем. Bundle 3 и CamelContext начинается с

@Override 
public void start(BundleContext bundleContext) throws Exception { 
    OsgiDefaultCamelContext camelContext = new OsgiDefaultCamelContext(bundleContext); 
    camelContext.addRoutes(new ExampleRoute()); 
    camelContext.start(); 
} 

В моем маршруте я хочу использовать Услугу (из пучка 2) с

.to("bean:invokeService") 

Exception я получаю:

19:14:39.953 TRACE o.a.camel.core.osgi.OsgiClassResolver:42  Resolve class invokeService 
19:14:39.969 TRACE o.a.camel.core.osgi.OsgiClassResolver:84  Cannot load class: invokeService using classloader: CamleOSGIExample_1.0.0.qualifier [254]. This exception be ignored. 
java.lang.ClassNotFoundException: invokeService 
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513) ~[na:na] 
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) ~[na:na] 
(...) 

и

org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: invokeService 
    at org.apache.camel.component.bean.RegistryBean.getBean(RegistryBean.java:68) ~[camel-core-2.10.3.jar:2.10.3] 
    at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:83) ~[camel-core-2.10.3.jar:2.10.3] 

Я использую Equinox.

ответ

Смежные вопросы