Apache Camel на Karaf с Spring DSL + OSGi

Я новичок в мире OSGI.

Версии: Karaf: 4.1.0 Camel: 2.18.2 Spring: 4.3.5_RELEASE_1 (пакеты Apache Service Mix)

Ссылка: Camel- UserForum-по тому же вопросу

Я потратил много времени (даже дней) на поиск / понимание верблюжьей пружины с контейнером osgi. Я не нашел хорошей статьи для новичков вроде меня, которая работает с некоторыми настройками или github ... и т. Д.

У нас хорошо работает приложение верблюжьей пружины. Теперь мы хотим перейти в среду OSGI, такую ​​как Karaf. Мы работаем над переходом на OSGI, у нас есть серьезные проблемы, которые мы смогли решить, но в итоге возникают следующие проблемы:

  1. Я не знаю, где разместить XML-контекст Camel-Spring и файлы маршрута (ранее в пути к классам с NON-OSGi). Поэтому его не загружающий контекст, получающий файл, не найден.

  2. если я поставлю это, как показано ниже, я знаю, что это может быть неправильный путь

    ClassPathXmlApplicationContext appContext = новый ClassPathXmlApplicationContext (новый String [] {"файл: app-camel-spring.xml"}); Исключение: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: проблема конфигурации: невозможно найти Spring NamespaceHandler для пространства имен схемы XML [http://camel.apache.org/schema/spring] Недействительный ресурс: URL [file: app-camel-spring.xml]

Даже с Spring DM не работает

Спасибо,

Обновление-1 1. После того, как форумы попросили меня изучить GEMINI Blueprint (GB), я теперь проверяю GB. Но все же я получаю ту же ошибку с ошибками JAXB.

Использую сейчас: Феликс:

  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]

person Slok    schedule 05.03.2017    source источник


Ответы (4)


Используйте Apache Karaf 4.0.8, так как 4.1.0 содержит ошибки и не поддерживается для этого выпуска Camel.

И весенние XML-файлы должны быть заполнителем в папке, как показано в этом примере, например META-INF/spring.

Но имейте в виду, что Spring DM устарел и мертв. Поэтому настоятельно рекомендуется использовать вместо этого OSGi Blueprint.

А в будущем у Karaf будет какой-то весенний XML для автоконвертера XML, чтобы он мог запускать весенние XML-файлы, как если бы они были чертежами. Но для получения более подробной информации спросите в сообществе Караф.

person Claus Ibsen    schedule 05.03.2017
comment
хорошо спасибо. Пробовал сейчас использовать karaf 4.0.8. Я также узнал, что GEMINI Blueprint - это способ работы с Spring в среде osgi. Есть ли у нас какой-нибудь пример верблюда с CAMEL + SPRING + GEMINI BLUEPRINT + KARAF? пока что не могу перейти к плану Овна. - person Slok; 06.03.2017
comment
Нет, этого нет. Apache Camel поддерживает только Apache Blueprint от Apache Felix - person Claus Ibsen; 06.03.2017
comment
Хорошо, спасибо, что уделили время. Тогда мы начнем придумывать план. - person Slok; 06.03.2017

[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 устарел и является очень ошибочным способом использования Spring в среде OSGi. Вам следует перейти к aries blueprint, или, если Spring действительно необходим, вы должны использовать gemini-blueprint, это реализация blueprint, совместимая с Spring 4.2.x.

https://eclipse.org/gemini/blueprint/ http://www.eclipse.org/gemini/blueprint/documentation/migration/

person Cλstor    schedule 05.03.2017
comment
Я начал экспериментировать с gemini blueprint с помощью Spring и Camel, давайте посмотрим ... Но у меня все еще возникают проблемы с jaxb с org.apache.camel.mode.config - person Slok; 06.03.2017

Наконец, переходим из Camel-Spring с OSGi. Это кошмарная комбинация, которую стоит попробовать. Много проблем с этой комбинацией.

Теперь пробуем Camel + Blueprint + Karaf.

Спасибо за вашу поддержку.

person Slok    schedule 07.03.2017

С Karaf 4.2.3, Camel 2.22.3 и Spring 5.1 он работает так же, как со старым spring -dm и Spring 3.2. У меня это сработало для старой интеграции, созданной много лет назад для Spring 3.2 и Spring DM, используя:

  • услуги / ссылки, протестированы с помощью диспетчера транзакций ссылок
  • свойства компендиума
  • @Transactional аннотация метода bean-компонента, который также правильно создал аспект транзакции

Вышеупомянутое доказывает, что это выполнимо и должно позволить большинству старых интеграций работать почти сразу же. Существуют также возможные преимущества по сравнению с blueprint-подобными возможностями использования Spring Data (еще не протестированных), например, с mongo, на которую я также смотрю.

Очевидно, вам нужно перекомпилировать свой проект с новыми зависимостями, чтобы получить правильный манифест.

Он работает благодаря тому, что упомянул Клаус - уровню совместимости Spring to Blueprint. Функция, обеспечивающая эту функциональность, называется aries-blueprint-spring. Я пока не использую его в реальной жизни, но я изучаю, как перенести наши интеграции Spring с Karaf 2 (Fuse 6.3) на Karaf 4 (Fuse 7.2). Я лично не большой поклонник blueprint'а, так как у него есть некоторые досадные ограничения, особенно если вы, как и я, используете Spring более десяти лет.

Уровень совместимости еще не идеален, так как:

  1. В нем есть некоторые некритические ошибки - например, если вы перезапустите пакет с помощью маршрута верблюда, он не сможет запуститься из-за некоторой ошибки регистрации компонента шаблона, которая, я уверен, будет исправлена ​​сообществом в какой-то момент. Похоже, это связано с проблемой, решенной десять лет назад: https://issues.apache.org/jira/browse/CAMEL-1899, где Camel добавляет несколько дополнительных bean-компонентов, которые были созданы для улучшения модульного тестирования. Вы можете обойти это до тех пор, пока не будет исправлено, добавив в свой Spring Context:

    <bean id="template" class="java.lang.String"/>
    <bean id="fluentTemplate" class="java.lang.String"/>
    <bean id="consumerTemplate" class="java.lang.String"/>
    
  2. Я не могу заставить spring deployer работать - развертывать необработанные XML-файлы Spring в виде пакетов, как мы используем пул соединений JDBC для пакетов. Но это нишевый подход, и его приятно иметь.

Кроме того, есть проблемы с клиентом ActiveMQ 5, который в настоящее время работает только с Spring 4, но есть решение для этого от Red Hat, поскольку у них есть собственная версия клиента ActiveMQ, которая, похоже, работает со Spring 5.

Учитывая все вышесказанное, вы должны быть отсортированы и счастливы использовать Spring 5 с Camel в Karaf 4.2.3.

Обновлять

К сожалению, сообщество решило убить верблюжью весеннюю опору для карафа. Компонент пружины Camel 3 больше не работает и не работает при загрузке классов и ресурсов.

person Piotr Klimczak    schedule 05.03.2019