【问题标题】:Using Camel-hdfs in a karaf bundle在 karaf 包中使用 Camel-hdfs
【发布时间】:2013-05-04 23:12:29
【问题描述】:

我正在尝试实现一个骆驼路由,以使用没有蓝图的 Java 语言在带有 OSGI 包的 HDFS 服务器中发送文件,但由于在创建路由时找不到 tu hdfs 方案,我无法使其工作.

该类的代码已作为 Jar 进行了测试并且可以正常工作。问题出在 karaf,即使使用 list 命令显示 camel-hdfs 捆绑包,它似乎也无法将 camel-hdfs 用于捆绑包。

这是项目的 pom 文件:

<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
  • 卡拉夫版本:2.2.8
  • Maven:m2e 插件,3.0.4

提前致谢。

【问题讨论】:

  • 错误信息是什么?

标签: maven osgi apache-camel hdfs apache-karaf


【解决方案1】:

我建议使用蓝图 XML 文件来引导您的应用程序。只是为了设置一个

否则,您将不得不在您的激活器中进行大量手动 osgi 设置和诸如此类的操作,才能正确设置 Camel for OSGi。使用骆驼蓝图时,所有这些都得到了照顾。

如果您仍想通过 Activator 执行此操作,请查看 camel-core-osgi 并查看我们在那里做了什么。

【讨论】:

  • 我尝试了一个 XML 路由并且它成功了,所以我想我会选择这个。感谢您的回答!
猜你喜欢
  • 2018-08-01
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 2014-03-08
相关资源
最近更新 更多