Пропавший Верблюд-DNS - PullRequest
0 голосов
/ 18 марта 2012

Я работаю на servicemix 4.4.1.Я не могу найти модуль camel-dns.

Я запустил features:list и osgi:list, и я не вижу camel-dns.Когда я выполняю

<to uri="dns:lookup"/>

, я получаю

org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint:
dns://lookup due to: No component found with scheme: dns

Есть идеи?

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Хорошо, было немного сложнее работать из коробки с SMX, так как SMX не предоставляет пакет из JVM, который нужен DNS-пакету.Таким образом, вы получите ошибку, подобную этой:

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)

Итак, вам нужно настроить конфигурацию SMX в файле etc / jre.properties

Добавить следующее

sun.net.spi.nameservice

К экспортированным пакетам платформы Java, например, мой файл теперь оканчивается на

 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 мне удалось установить его

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)

И я скопировал примерный маршрут Camel IPCheck.xml изздесь: https://svn.apache.org/repos/asf/camel/trunk/components/camel-dns/src/test/resources/, в каталог развертывания и запуск приложения 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
1 голос
/ 19 марта 2012

Не все сторонние библиотеки совместимы с OSGi, и поэтому мы не можем включать функции для таких компонентов.Однако вы можете попробовать установить JAR как упакованный пакет самостоятельно.Я думаю, что проблема с DNS состояла в том, что его SUN JDK зависел или что-то в этом роде.

См. Wrap deployer: http://karaf.apache.org/manual/2.2.5/users-guide/deployer.html

См. Файл pom.xml компонента camel-dnsчтобы увидеть, какие зависимости требуются во время выполнения: https://svn.apache.org/repos/asf/camel/trunk/components/camel-dns/pom.xml

Однако, похоже, недавний выпуск dnsjava теперь является пакетом OSGi.Таким образом, мы могли бы добавить функцию для этого, так что ожидайте этого в следующем выпуске Camel.

Вы можете установить его вручную в SMX с помощью

osgi:install mvn:dnsjava/dnsjava/2.1.1

И затем пакет camel-dns

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

Разум использует правильную верблюжью версию, я набрал 2.9.0.Но SMX 4.4.1 может использовать 2.9.1, я не помню.

...