骆驼DNS缺失
我在servicemix 4.4.1上运行。我找不到camel-dns
模块。骆驼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
任何想法?
好吧,使用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)
所以,你需要调整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我设法得到它安装
[email protected]> 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/ ,到deploy目录,并有骆驼应用程序的启动:
[email protected]> camel:context-list
Name Status Uptime
[camel ] [Started ] [22.339 seconds ]
[email protected]> 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
并非所有的第三方库都符合OSGi标准,因此我们不能包含此类组件的功能。但是,您可以尝试自己将JAR安装为包裹包。我认为DNS的一个问题是它的SUN JDK依赖或类似的问题。
见包装部署:http://karaf.apache.org/manual/2.2.5/users-guide/deployer.html
见骆驼DNS组件的pom.xml文件,看它需要在运行时哪些依赖关系: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
然后骆驼的DNS束
osgi:install mvn:org.apache.camel/camel-dns/2.9.0
心灵使用正确的骆驼版本上安装它,我输入了2.9.0。但SMX 4.4.1可能使用2.9.1,我不记得了。
的dnsjava束取决于太阳API,它是最有可能不是由ESB – 2012-03-19 09:37:39
嗨克劳斯出口,感谢您的帮助!我能够按照你的例子,并得到它的工作。 – emmitt1219 2012-03-25 07:30:30