2013-05-10 3 views
1

Я пытаюсь реализовать маршрут верблюда для отправки файлов на сервере HDFS с помощью пакета OSGI, используя язык Java без синего цвета, но я не могу заставить его работать из-за hdfs схема не найдена при создании маршрута.Использование Camel-hdfs в комплекте karaf

Код класса был протестирован как Jar и работает. Проблема заключается в карафе, который, похоже, не может использовать верблюжий hdf для пакета, даже если пакет camel-hdfs показан с помощью команды list.

Вот П файл проект:

<modelVersion>4.0.0</modelVersion> 
<groupId>the.group</groupId> 
<artifactId>receiveFile</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<name>receiveFile</name> 
<packaging>bundle</packaging> 

<dependencies> 

    <dependency> 
     <groupId>org.osgi</groupId> 
     <artifactId>osgi_R4_core</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
     <optional>true</optional> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-hdfs</artifactId> 
     <version>2.10.4</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-core</artifactId> 
     <version>2.10.4</version> 
    </dependency> 

</dependencies> 

<build> 
    <plugins> 

     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>2.3.7</version> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Import-Package>*</Import-Package> 
        <Export-Package>activation</Export-Package> 
        <Private-Package>activation</Private-Package> 
        <Bundle-Activator>activation.Activator</Bundle-Activator> 
       </instructions> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 

Я попытался также Встраиванием-Завис с переходным вариантом, но он по-прежнему не работает, и я вроде застрял прямо сейчас ,

Karaf выводит следующее сообщение об ошибке:

org.osgi.framework.BundleException: Exception in activation.Activator.start() of bundle group.receiveFile. 

Журнал:

org.osgi.framework.BundleException: Exception in activation.Activator.start() of bundle group.receiveFile. 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806)[osgi-3.6.2.R36x_v20110210.jar:] 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)[osgi-3.6.2.R36x_v20110210.jar:] 
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)[osgi-3.6.2.R36x_v20110210.jar:] 
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)[osgi-3.6.2.R36x_v20110210.jar:] 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1244)[6:org.apache.felix.fileinstall:3.2.4] 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1216)[6:org.apache.felix.fileinstall:3.2.4] 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1205)[6:org.apache.felix.fileinstall:3.2.4] 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:500)[6:org.apache.felix.fileinstall:3.2.4] 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:291)[6:org.apache.felix.fileinstall:3.2.4] 
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route route1027 at: >>> To[hdfs://hadoopServer/received] <<< in route: Route[[From[file://toSend/]] -> [To[hdfs://hadoopServer/rece... because of Failed to resolve endpoint: hdfs://hadoopServer/received due to: No component found with scheme: hdfs 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:879) 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:172) 
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:722) 
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1789) 
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1575) 
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1444) 
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60) 
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1412) 
    at activation.Activator.start(Activator.java:24) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)[osgi-3.6.2.R36x_v20110210.jar:] 
    at java.security.AccessController.doPrivileged(Native Method)[:1.7.0_11] 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)[osgi-3.6.2.R36x_v20110210.jar:] 
    ... 8 more 
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: hdfs://hadoopServer/received due to: No component found with scheme: hdfs 
    at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:485) 
    at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:50) 
    at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:187) 
    at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:108) 
    at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:114) 
    at org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:61) 
    at org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:55) 
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:461) 
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:179) 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:876) 
    ... 19 more 
  • Karaf версия: 2.2.8
  • Maven: m2e плагин, 3.0.4

Заранее спасибо.

+0

Какое сообщение об ошибке? –

ответ

0

Я бы предложил использовать XML-файл проекта для загрузки вашего приложения. Просто настройте < camelContext>.

В противном случае вам нужно будет сделать много ручной настройки osgi и еще что-то в вашем активаторе, чтобы правильно настроить Camel для OSGi. Все, о чем заботятся при использовании верблюжьей печати.

Если вы все еще хотите сделать это от Активатора, то проверьте верблюжье ядро-osgi и посмотрите, что мы там делаем.

+0

Я пробовал XML-маршрут, и это сработало, поэтому, я думаю, я поеду с этим. Спасибо за ответ ! – Djee

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