[英]Karaf works with spring camel routes but not with java DSL camel routes
[英]Apache Camel on Karaf with Spring DSL + OSGi
我是 OSGI 世界的新手。
版本: Karaf:4.1.0 Camel:2.18.2 Spring:4.3.5_RELEASE_1(Apache 服务混合包)
我花了很多时间(甚至几天)用 osgi 容器搜索/理解camel-spring。 我没有找到适合像我这样的初学者的好文章,它适用于一些设置或 github.. 等。
我们的骆驼弹簧应用程序运行良好。 现在我们想转移到像 Karaf 这样的 OSGI 环境。 我们正在做一些迁移到 OSGI 的工作,我们遇到了一些严重的问题,我们能够解决其中的几个,但最终遇到了以下问题:
我不知道在哪里放置骆驼弹簧 xml 上下文和路由文件(以前在非 OSGi 的类路径中)。所以它没有加载上下文获取文件未找到。
如果我把它放在下面,我知道它可能是一种错误的方式
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext( new String[] {"file:app-camel-spring.xml" }); 异常:org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法为 XML 架构命名空间 [ http://camel.apache.org/schema/spring]找到 Spring NamespaceHandler 违规资源:URL [file:app-骆驼弹簧.xml]
即使使用 Spring DM 它也不起作用
谢谢,
Update-1 1. 在论坛要求我查看 GEMINI Blueprint(GB) 之后,我现在正在查看 GB。 但是我仍然遇到与 JAXB 错误相同的错误。
我现在正在使用:Felix:
runtimelib group: 'org.apache.felix', name: 'org.apache.felix.gogo.command', version: '1+'
runtimelib group: 'org.apache.felix', name: 'org.apache.felix.gogo.runtime', version: '1+'
runtimelib group: 'org.apache.felix', name: 'org.apache.felix.gogo.shell', version: '1+'
runtimelib group: 'org.apache.felix', name: 'org.apache.felix.bundlerepository', version: '2+'
runtimelib group: 'org.apache.felix', name: 'org.apache.felix.fileinstall', version: '3+'
runtimelib group: 'org.apache.felix', name: 'org.apache.felix.scr.annotations', version: '1.12.0'
捆绑清单:
lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (5.6.2)|5.6.2
1|Active | 1|Apache Felix Bundle Repository (2.0.8)|2.0.8
2|Active | 1|Apache Felix File Install (3.5.8)|3.5.8
3|Active | 1|Apache Felix Gogo Command (1.0.2)|1.0.2
4|Active | 1|Apache Felix Gogo Runtime (1.0.2)|1.0.2
5|Active | 1|Apache Felix Gogo Shell (1.0.0)|1.0.0
6|Active | 1|file:/E:/Codes/GIT/Repos/Experiments/osgi/felix/bundle/org.apache.felix.scr.annotations-1.12.0.jar (0.0.0)|0.0.0
7|Active | 1|Apache MINA Core (2.0.14)|2.0.14
8|Active | 1|Apache ServiceMix :: Bundles :: spring-context (4.3.1.RELEASE_1)|4.3.1.RELEASE_1
9|Active | 1|Logback Core Module (1.1.1)|1.1.1
10|Active | 1|slf4j-api (1.7.21)|1.7.21
11|Active | 1|camel-mina2 (2.18.0)|2.18.0
12|Active | 1|osgi_testing.test_cons (0.0.4.1488767989530)|0.0.4.1488767989530
13|Active | 1|Logback Classic Module (1.1.1)|1.1.1
14|Active | 1|Old JAXB Runtime (2.2.11)|2.2.11
15|Active | 1|Apache Log4j (1.2.17)|1.2.17
16|Active | 1|gemini-blueprint-core (2.0.9.BUILD-atlassian-m003)|2.0.9.BUILD-atlassian-m003
17|Installed | 1|Apache ServiceMix :: Bundles :: spring-context-support (4.3.1.RELEASE_1)|4.3.1.RELEASE_1
18|Active | 1|camel-core (2.18.0)|2.18.0
19|Active | 1|Apache ServiceMix :: Bundles :: aopalliance (1.0.0.6)|1.0.0.6
20|Active | 1|Apache ServiceMix :: Bundles :: spring-tx (4.3.1.RELEASE_1)|4.3.1.RELEASE_1
21|Active | 1|Apache ServiceMix :: Bundles :: spring-core (4.3.1.RELEASE_1)|4.3.1.RELEASE_1
22|Active | 1|gemini-blueprint-extender (2.0.9.BUILD-atlassian-m003)|2.0.9.BUILD-atlassian-m003
23|Active | 1|Apache ServiceMix :: Bundles :: spring-beans (4.3.1.RELEASE_1)|4.3.1.RELEASE_1
24|Active | 1|osgi_testing.test_impl2 (0.0.1.1488767989534)|0.0.1.1488767989534
25|Active | 1|camel-spring (2.18.0)|2.18.0
26|Active | 1|Apache Commons Logging (1.2.0)|1.2.0
27|Active | 1|test_api (0.0.2.1488767989527)|0.0.2.1488767989527
28|Active | 1|Apache Commons IO (2.5.0)|2.5.0
29|Active | 1|Old JAXB Core (2.2.11)|2.2.11
30|Active | 1|osgi_testing.test_impl3 (0.0.1.1488767989536)|0.0.1.1488767989536
31|Active | 1|Apache ServiceMix :: Bundles :: spring-expression (4.3.1.RELEASE_1)|4.3.1.RELEASE_1
32|Active | 1|Apache ServiceMix :: Bundles :: spring-aop (4.3.1.RELEASE_1)|4.3.1.RELEASE_1
33|Active | 1|gemini-blueprint-io (2.0.9.BUILD-atlassian-m003)|2.0.9.BUILD-atlassian-m003
34|Active | 1|osgi_testing.test_impl (0.0.1.1488767989532)|0.0.1.1488767989532
g! start 17
org.osgi.framework.BundleException: Unable to resolve org.apache.servicemix.bundles.spring-context-support [17](R 17.0): missing requirement
[org.apache.servicemix.bundles.spring-context-support [17](R 17.0)] osgi.wiring.package; (osgi.wiring.package=com.github.benmanes.caffeine.cache)
Unresolved requirements: [[org.apache.servicemix.bundles.spring-context-support [17](R 17.0)] osgi.wiring.package;
(osgi.wiring.package=com.github.benmanes.caffeine.cache)]
10:41:25.836 [fileinstall-load] ERROR com.tp.boot.ApplicationBootActivator - ERROR::
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://camel.apache.org/schema/spring]
Offending resource: URL [file:app-camel-spring.xml]
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70) ~[na:na]
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85) ~[na:na]
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80) ~[na:na]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:301) ~[na:na]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1408) ~[na:na]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401) ~[na:na]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:172) ~[na:na]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:142) ~[na:na]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) ~[na:na]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) ~[na:na]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) ~[na:na]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) ~[na:na]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252) ~[na:na]
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) ~[na:na]
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) ~[na:na]
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) ~[na:na]
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:612) ~[na:na]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:513) ~[na:na]
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) ~[na:na]
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) ~[na:na]
at com.tp.boot.ApplicationBootActivator.start(ApplicationBootActivator.java:54) ~[na:na]
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697) ~[felix.jar:na]
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2238) ~[felix.jar:na]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2144) ~[felix.jar:na]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) ~[felix.jar:na]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1253) ~[na:na]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1225) ~[na:na]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:512) ~[na:na]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:361) ~[na:na]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:312) ~[na:na]
10:41:25.870 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: osgi_testing.test_api
10:41:25.903 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: org.apache.mina.core
10:41:25.915 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: ch.qos.logback.core
10:41:25.928 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: slf4j.api
10:41:25.954 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: com.sun.xml.bind.jaxb-core
10:41:25.990 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: org.eclipse.gemini.blueprint.core
10:41:26.022 [fileinstall-load] DEBUG com.tp.device.rba.Activator - Started [osgi_testing.test_impl3]
10:41:26.035 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: osgi_testing.test_impl3
10:41:26.096 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: com.sun.xml.bind.jaxb-impl
10:41:26.123 [fileinstall-load] DEBUG com.tp.app.cons.Activator - start CONS
10:41:26.131 [fileinstall-load] DEBUG com.tp.app.cons.Activator - Device Bundle Tracker - started
10:41:26.139 [fileinstall-load] DEBUG com.tp.app.cons.DeviceHub - Device [rbaonguard] ClassName [com.tp.device.rba.RBADeviceImpl] Added
10:41:26.188 [fileinstall-load] DEBUG com.tp.app.cons.DeviceHub - Written to File [Config/devices]
10:41:26.195 [fileinstall-load] DEBUG com.tp.app.cons.DeviceServiceTracker - Service Reference- Added Device [rbaonguard] Device Class [com.tp.device.rba.RBADeviceImpl]
10:41:26.204 [fileinstall-load] DEBUG com.tp.app.cons.DeviceHub - Device [rbavoltagetep2] ClassName [com.tp.device.rba.RBADeviceImpl] Added
10:41:26.218 [fileinstall-load] DEBUG com.tp.app.cons.DeviceHub - Written to File [Config/devices]
10:41:26.225 [fileinstall-load] DEBUG com.tp.app.cons.DeviceServiceTracker - Service Reference- Added Device [rbavoltagetep2] Device Class [com.tp.device.rba.RBADeviceImpl]
10:41:26.240 [fileinstall-load] DEBUG com.tp.app.cons.DeviceHub - Device [xpi] ClassName [com.tp.device.xpi.XPIDeviceImpl] Added
10:41:26.266 [fileinstall-load] DEBUG com.tp.app.cons.DeviceHub - Written to File [Config/devices]
10:41:26.271 [fileinstall-load] DEBUG com.tp.app.cons.DeviceServiceTracker - Service Reference- Added Device [xpi] Device Class [com.tp.device.xpi.XPIDeviceImpl]
10:41:26.278 [fileinstall-load] DEBUG com.tp.app.cons.Activator - Device Service Tracker - started
10:41:26.283 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: osgi_testing.test_cons
10:41:26.295 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: org.apache.servicemix.bundles.spring-tx
10:41:26.832 [EclipseGeminiBlueprintExtenderThread-1] INFO o.e.g.b.c.s.AbstractDelegatedExecutionApplicationContext - About to begin startRefresh for osgi_testing.test_api [27]
10:41:26.985 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: org.eclipse.gemini.blueprint.extender
10:41:27.000 [EclipseGeminiBlueprintExtenderThread-2] INFO o.e.g.b.c.s.AbstractDelegatedExecutionApplicationContext - About to begin startRefresh for osgi_testing.test_api [27]
10:41:27.336 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: org.apache.servicemix.bundles.aopalliance
10:41:27.455 [fileinstall-load] DEBUG org.apache.camel.impl.osgi.Activator - Bundle started: ch.qos.logback.classic
10:41:27.559 [EclipseGeminiBlueprintExtenderThread-1] DEBUG o.a.c.s.h.CamelNamespaceHandler - Using org.apache.camel.spring.CamelContextFactoryBean as CamelContextBeanDefinitionParser
10:41:27.561 [EclipseGeminiBlueprintExtenderThread-2] DEBUG o.a.c.s.h.CamelNamespaceHandler - Using org.apache.camel.spring.CamelContextFactoryBean as CamelContextBeanDefinitionParser
10:41:27.762 [EclipseGeminiBlueprintExtenderThread-2] DEBUG o.e.g.b.c.s.AbstractDelegatedExecutionApplicationContext - Pre refresh error for osgi_testing.test_api [27]
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to create the JAXB binder; nested exception is javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "org.apache.camel.model.config" doesnt contain ObjectFactory.class or jaxb.index
- with linked exception:
[javax.xml.bind.JAXBException: "org.apache.camel.model.config" doesnt contain ObjectFactory.class or jaxb.index]
at org.apache.camel.spring.handler.CamelNamespaceHandler$CamelContextBeanDefinitionParser.doParse(CamelNamespaceHandler.java:380) ~[na:na]
at org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser.parseInternal(AbstractSingleBeanDefinitionParser.java:85) ~[na:na]
at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:61) ~[na:na]
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74) ~[na:na]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411) ~[na:na]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401) ~[na:na]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:172) ~[na:na]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:142) ~[na:na]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) ~[na:na]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) ~[na:na]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) ~[na:na]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) ~[na:na]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) ~[na:na]
at org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:170) ~[na:na]
at org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:140) ~[na:na]
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) ~[na:na]
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:612) ~[na:na]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$800(AbstractDelegatedExecutionApplicationContext.java:63) ~[na:na]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$3.run(AbstractDelegatedExecutionApplicationContext.java:249) ~[na:na]
at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) ~[na:na]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.startRefresh(AbstractDelegatedExecutionApplicationContext.java:224) ~[na:na]
at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:224) ~[na:na]
at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:177) ~[na:na]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:159) ~[na:na]
at org.eclipse.gemini.blueprint.extender.internal.activator.LifecycleManager$1.run(LifecycleManager.java:207) ~[na:na]
at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_102]
Caused by: javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "org.apache.camel.model.config" doesnt contain ObjectFactory.class or jaxb.index
at javax.xml.bind.ContextFinder.newInstance(Unknown Source) ~[na:1.8.0_102]
at javax.xml.bind.ContextFinder.find(Unknown Source) ~[na:1.8.0_102]
at javax.xml.bind.JAXBContext.newInstance(Unknown Source) ~[na:1.8.0_102]
at javax.xml.bind.JAXBContext.newInstance(Unknown Source) ~[na:1.8.0_102]
at org.apache.camel.impl.DefaultModelJAXBContextFactory.newJAXBContext(DefaultModelJAXBContextFactory.java:31) ~[na:na]
at org.apache.camel.spring.handler.CamelNamespaceHandler.getJaxbContext(CamelNamespaceHandler.java:217) ~[na:na]
at org.apache.camel.spring.handler.CamelNamespaceHandler$CamelContextBeanDefinitionParser.doParse(CamelNamespaceHandler.java:378) ~[na:na]
... 28 common frames omitted
Caused by: javax.xml.bind.JAXBException: "org.apache.camel.model.config" doesnt contain ObjectFactory.class or jaxb.index
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source) ~[na:1.8.0_102]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_102]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_102]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_102]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_102]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source) ~[na:1.8.0_102]
... 35 common frames omitted
10:41:27.770 [EclipseGeminiBlueprintExtenderThread-1] DEBUG o.e.g.b.c.s.AbstractDelegatedExecutionApplicationContext - Pre refresh error for osgi_testing.test_api [27]
使用 Apache Karaf 4.0.8,因为 4.1.0 有问题,该 Camel 版本不支持。
并且 spring XML 文件应该是文件夹中的占位符,如该示例所示,例如META-INF/spring
。
但请注意 Spring DM 已被弃用且已死。 因此强烈建议改用 OSGi Blueprint。
并且在未来,Karaf 将拥有某种 spring XML 到蓝图 XML 自动转换器,因此它可以像运行蓝图一样运行 spring xml 文件。 但有关该问题的更多详细信息,请访问 Karaf 社区。
[caused by: Unable to resolve camel-spring-dm/2.18.2: missing requirement
[camel-spring-dm/2.18.2] osgi.identity; osgi.identity=spring-dm;
错误很明显,功能解析器找不到spring-dm功能,需要先安装
feature:install spring-dm
如果我是对的,karaf 放弃了对 spring-dm 的支持,因此该功能可能不可用,您需要手动安装 spring-dm。 但是就像已经说过的那样,spring-dm 已被弃用,并且是在 OSGi 环境中使用 spring 的一种非常错误的方式。 你应该转向 aries 蓝图,或者如果 spring 真的不可或缺,你应该使用 gemini-blueprint,它是一个与 Spring 4.2.x 兼容的蓝图实现。
https://eclipse.org/gemini/blueprint/ http://www.eclipse.org/gemini/blueprint/documentation/migration/
终于用 OSGi 离开了 Camel-Spring。 它是一个噩梦组合尝试。 这种组合有很多问题。
现在尝试骆驼+蓝图+卡拉夫。
感谢您的支持。
使用 Karaf 4.2.3、Camel 2.22.3 和 Spring 5.1,它的工作方式与旧的 spring-dm 和 Spring 3.2 一样。 它适用于我多年前为 Spring 3.2 和 Spring DM 制作的旧集成,使用:
以上证明它是可行的,并且应该允许大多数旧的集成几乎开箱即用。 蓝图也有可能的好处——比如能够使用 Spring Data(尚未测试),例如 mongo,我也在研究。
显然,您需要使用新的依赖项重新编译您的项目以使您的清单正确。
它的工作归功于 Claus 所提到的 - Spring to Blueprint 兼容层。 提供此功能的特性称为“aries-blueprint-spring”。 我还没有在现实生活中使用它,但我正在研究如何将我们的 Spring 集成从 Karaf 2(Fuse 6.3)迁移到 Karaf 4(Fuse 7.2)。 我个人不是蓝图的忠实粉丝,因为它有一些恼人的限制,特别是如果你像我一样使用 Spring 已经十多年了。
兼容层还不完善,因为:
它有一些非关键的错误——比如如果你用骆驼路线重新启动包,它会以一些“模板”bean 注册错误开始失败,我相信社区会在某个时候解决这个问题。 这似乎与十年前完成的这个问题有关: https : //issues.apache.org/jira/browse/CAMEL-1899其中 Camel 添加了一些额外的 bean,这些 bean 是为了改进单元测试而创建的。 您可以通过添加到 Spring Context 来解决它,直到修复它:
<bean id="template" class="java.lang.String"/> <bean id="fluentTemplate" class="java.lang.String"/> <bean id="consumerTemplate" class="java.lang.String"/>
我无法让 spring 部署程序工作 - 将原始 Spring XML 部署为包,就像我们用于包的 JDBC 连接池一样。 但这是一种利基方法 - 很好。
此外,目前仅适用于 Spring 4 的 ActiveMQ 5 客户端存在问题,但 Red Hat 提供了解决方案,因为他们拥有自己的 ActiveMQ 客户端版本,似乎适用于 Spring 5。
有了以上所有内容,您应该很高兴在 Karaf 4.2.3 中使用 Spring 5 和 Camel。
更新
可悲的是,社区决定取消对 karaf 的骆驼弹簧支持。 Camel 3 spring 组件不再工作并且无法加载类和资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.