Apache camel 缺少骆驼DNS

Apache camel 缺少骆驼DNS,apache-camel,apache-servicemix,Apache Camel,Apache Servicemix,我正在运行servicemix 4.4.1。我找不到骆驼dns模块 我已经运行了features:list和osgi:list,但我没有看到骆驼dns。当我表演 <to uri="dns:lookup"/> 有什么想法吗?并非所有第三方库都符合OSGi,因此我们无法为此类组件提供功能。但是,您可以尝试自己将JAR作为包装包安装。我认为DNS的一个问题是它依赖于SUN JDK或者类似的东西 请参见包裹展开器: 请参阅camel dns组件的pom.xml文件,以查看它在运行时需要哪些

我正在运行servicemix 4.4.1。我找不到
骆驼dns
模块

我已经运行了
features:list
osgi:list
,但我没有看到
骆驼dns
。当我表演

<to uri="dns:lookup"/>

有什么想法吗?

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

请参见包裹展开器:

请参阅camel dns组件的pom.xml文件,以查看它在运行时需要哪些依赖项:

然而,dnsjava的最新版本现在似乎是OSGi捆绑包。 因此,我们可以为它添加一个功能,所以在下一个Camel版本中可以看到这一点

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

osgi:install mvn:dnsjava/dnsjava/2.1.1
然后是骆驼dns包

 osgi:install mvn:org.apache.camel/camel-dns/2.9.0

注意使用正确的驼峰版本,我输入了2.9.0。但是SMX 4.4.1可能会使用2.9.1,我不记得了。

好的,使用SMX开箱即用有点棘手,因为SMX不会公开DNS包需要的JVM包。因此,您将得到如下错误:

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的配置

添加以下内容

sun.net.spi.nameservice
例如,对于导出的Java平台包,我的文件现在以

 org.xml.sax, \
 org.xml.sax.ext, \
 org.xml.sax.helpers, \
 sun.net.spi.nameservice
您需要重新启动ESB才能使此更改生效

要安装驼峰dns,首先需要安装它所需的依赖项,也就是junit。这是哪一个包:

在基本的ApacheKaraf2.2.5上,我成功地安装了它

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 Camel示例路径: ,并启动驼峰应用程序:

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

dnsjava捆绑包依赖于sun API,该API很可能不是由ESBHi Claus导出的,谢谢您的帮助!我能以你为榜样,让它发挥作用。
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