2015-03-02 3 views
0

Моя цель - заставить Camel работать под сервером приложений IBM Liberty с использованием OSGi и иметь возможность описывать маршруты DSL (Domain Specific Language) в Blueprint. Я добиваюсь прогресса, и теперь у меня есть среда Liberty с Camel, установленной и настроенной как пакеты OSGi. Когда я пишу приложение Java DSL Camel в качестве пакета OSGi, все работает точно так, как я мог бы надеяться.Использование плана DSL Apache для описания маршрутов в IBM Liberty

Мой последний шаг - описать маршруты моего верблюда в Blueprint. Для этого я создаю новый OSGi расслоения и определен blueprint.xml, который выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:camelBlueprint="http://camel.apache.org/schema/blueprint" 
    xsi:schemaLocation="http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint-2.14.1.xsd"> 

    <camelBlueprint:camelContext> 
     <camelBlueprint:route> 
      <camelBlueprint:from uri="file:c:/temp/in"/> 
      <camelBlueprint:to uri="file:c:/temp/out"/> 
     </camelBlueprint:route> 
    </camelBlueprint:camelContext> 

</blueprint> 

При попытке развернуть этот OSGi сверток, рамки IBM Liberty OSGi не удается развернуть приложение со следующими ошибками :

[3/2/15 0:42:38:796 CST] 00000035 com.ibm.ws.app.manager.esa.internal.DeploySubsystemAction 
A CWWKZ0403E: A management exception was generated when trying to install the application Camel1 into an OSGi framework. The error text from the OSGi framework is: 
Resource does not exist: org.apache.aries.subsystem.core.archive.SubsystemContentRequirement: 
namespace=osgi.identity, attributes={}, directives={filter=(&(osgi.identity=OSGITest1)(type=osgi.bundle)(version>=1.0.0))}, reso[email protected]7bc2d3bc 

К сожалению, здесь я сейчас застопорился и застрял. Я считаю, что IBM Liberty использует Equinox как платформу OSGi, а не Karaf, но, читая документы Camel Blueprint, я, похоже, понимаю, что Apache Aries требуется (что Liberty поставляет и использует), и что Karaf не является зависимостью.

Мой MANIFEST.MF для моего тестового расслоении:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: OSGITest1 
Bundle-SymbolicName: OSGITest1 
Bundle-Version: 1.0.0.qualifier 
Bundle-Blueprint: OSGI-INF/blueprint/*.xml 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Export-Package: kolban.osgitest 
Import-Package: org.apache.camel;version="2.14.1", 
org.apache.camel.blueprint;version="2.14.1" 

ответ

0

это сообщение может произойти, если распознаватель не может увидеть связку, или есть что-то неправильно с расслоением (как правило, с Blueprint). Если пакет удаляется нормально, когда вы удаляете чертеж, вам нужно посмотреть, что может быть неправильным в проекте. Если это так, я подозреваю, что во время выполнения не включен обработчик пространства имен Camel.

Надеюсь, это поможет.

С уважением, Грэм.

+0

Учитывая, что сообщение об ошибке кажется довольно общим, существует ли предлагаемая настройка трассировки или другая методика, где я мог бы получить дополнительную информацию о сообщении? Я полностью верю, что у меня может не быть правильной настройки среды, что, вероятно, означает, что мне нужна помощь технологов Camel. Мой MANIFEST.MF был воспроизведен в исходном вопросе, и полное распространение последнего Camel было помещено в внутренний репозиторий OSGi ... так что если что-то было опущено ... не уверен, что это может быть. – Kolban

Смежные вопросы