首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >缺少Camel-DNS

缺少Camel-DNS
EN

Stack Overflow用户
提问于 2012-03-18 23:45:10
回答 2查看 554关注 0票数 0

我在servicemix 4.4.1上运行。我找不到camel-dns模块。

我已经运行了features:listosgi:list,但看不到camel-dns。当我执行

代码语言:javascript
复制
<to uri="dns:lookup"/>

我得到了一个

代码语言:javascript
复制
org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint:
dns://lookup due to: No component found with scheme: dns

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-19 17:47:49

好的,使用SMX开箱即用就有点棘手了,因为SMX不会公开DNS捆绑包所需的来自JVM的包。所以你会得到一个类似这样的错误:

代码语言:javascript
复制
ERROR: Error starting file:bundles/dnsjava_2.1.1.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle dnsjava [69]: Unable to resolve 69.0: missing requirement [69.0] package; (package=sun.net.spi.nameservice))
org.osgi.framework.BundleException: Unresolved constraint in bundle dnsjava [69]: Unable to resolve 69.0: missing requirement [69.0] package; (package=sun.net.spi.nameservice)
    at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3404)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1714)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1143)
    at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
    at java.lang.Thread.run(Thread.java:680)

因此,您需要在etc/jre.properties中调整SMX的配置

添加以下内容

代码语言:javascript
复制
sun.net.spi.nameservice

添加到导出的Java平台包中,例如,我的文件现在以

代码语言:javascript
复制
 org.xml.sax, \
 org.xml.sax.ext, \
 org.xml.sax.helpers, \
 sun.net.spi.nameservice

您需要重新启动ESB才能使此更改生效。

要安装camel-dns,首先需要安装它所需的依赖项,这也是junit。这就是这个包:http://repo2.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.junit/4.10_1/

在一个基本的Apache Karaf 2.2.5上,我设法安装了它

代码语言:javascript
复制
karaf@root> osgi:list
START LEVEL 100 , List Threshold: 50
   ID   State         Blueprint      Spring    Level  Name
[  49] [Active     ] [            ] [       ] [   60] Apache ServiceMix :: Bundles :: junit (4.10.0.1)
[  50] [Active     ] [            ] [       ] [   60] dnsjava (2.1.1)
[  65] [Active     ] [            ] [       ] [   50] camel-core (2.10.0.SNAPSHOT)
[  66] [Active     ] [Created     ] [       ] [   50] camel-karaf-commands (2.10.0.SNAPSHOT)
[  73] [Active     ] [            ] [       ] [   50] geronimo-jta_1.1_spec (1.1.1)
[  74] [Active     ] [            ] [       ] [   50] camel-spring (2.10.0.SNAPSHOT)
[  75] [Active     ] [            ] [       ] [   60] camel-dns (2.10.0.SNAPSHOT)
[  76] [Active     ] [            ] [Started] [   60] IPCheck.xml (0.0.0)

我将IPCheck.xml驼峰示例路由从这里:https://svn.apache.org/repos/asf/camel/trunk/components/camel-dns/src/test/resources/复制到部署目录,并让驼峰应用程序启动:

代码语言:javascript
复制
karaf@root> camel:context-list 
Name                 Status               Uptime              
[camel             ] [Started           ] [22.339 seconds    ]
karaf@root> camel:context-info camel 
Camel Context camel
    Name: camel
    Version: 2.10-SNAPSHOT
    Status: Started
    Uptime: 25.835 seconds

Advanced
    Auto Startup: true
    Starting Routes: false
    Suspended: false
    Tracing: true

Properties

Components
    direct
    mock
    dns
    spring-event

Endpoints
    direct://start
    dns://ip
    mock://result
    spring-event://default

Routes
    IPCheck
票数 1
EN

Stack Overflow用户

发布于 2012-03-19 17:07:17

并不是所有的第三方库都符合OSGi,因此我们不能包含此类组件的功能。但是,您可以尝试自己将JAR安装为打包的包。我认为DNS的一个问题是它依赖于SUN JDK或类似的东西。

请参阅包装部署程序:http://karaf.apache.org/manual/2.2.5/users-guide/deployer.html

查看camel-dns组件的pom.xml文件,了解它在运行时需要哪些依赖项:https://svn.apache.org/repos/asf/camel/trunk/components/camel-dns/pom.xml

然而,最近发布的dnsjava现在似乎是OSGi包。因此,我们可能会为它添加一个功能,所以请期待下一个Camel版本。

您可以使用以下命令在SMX中手动安装它

代码语言:javascript
复制
osgi:install mvn:dnsjava/dnsjava/2.1.1

然后是camel-dns包

代码语言:javascript
复制
 osgi:install mvn:org.apache.camel/camel-dns/2.9.0

注意使用正确的Camel版本,我输入了2.9.0。但是SMX 4.4.1可能使用2.9.1,我记不起来了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9759648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档