Как я могу отладить отсутствующий NamespaceHandler в Aries Blueprint, работающем в Karaf? - PullRequest
0 голосов
/ 27 октября 2019

Я обсуждал этот вопрос снова и снова. Это сводится к:

Как я могу отладить Aries Blueprint, работающий внутри Apache Karaf?

Я получаю вывод из diag, который только намекает на тот факт, что пространство имен XML http://camel.apache.org/schema/blueprint/cxf не может найти допустимую схему. Кстати, URL схемы документа http://camel.apache.org/schema/blueprint/camel-cxf-blueprint.xsd.

Status: GracePeriod
Declarative Services
Blueprint
10/27/19 4:52 PM
Missing dependencies:
(&(objectClass=org.apache.aries.blueprint.NamespaceHandler)(osgi.service.blueprint.namespace=http://camel.apache.org/schema/blueprint/cxf))

Да, camel-cxf запущен. Но как я могу увидеть, что именно идет не так?

Я дошел до того, что нашел это примечание в документации IBM:

Среда выполнения проекта анализирует дескрипторы проекта дважды. Первый проход выполняется быстро и находит только каждое пространство имен, используемое пакетом чертежей. Если в наборе чертежей используется нестандартное пространство имен, то контейнер чертежей пытается найти службы NamespaceHandler в реестре служб OSGi для каждого настраиваемого пространства имен. Служба NamespaceHandler объявляет каждое пространство имен xml, которое оно может обработать с использованием свойств службы OSGi. Среда выполнения проекта не анализирует проект xml до тех пор, пока службы NamespaceHandler не будут найдены для каждого настраиваемого пространства имен, используемого в пакете. Если службы NamespaceHandler не найдены для каждого настраиваемого пространства имен, контейнер чертежа не сможет обработать пакет. Этот результат может означать, что контейнер светокопии ждет бесконечно, если не существует NamespaceHandler. Если возникает такая ситуация, то контейнер светокопии выдает предупреждение в журнал. Когда синтаксический анализатор начинает анализировать XML-файлы чертежей, он анализирует любые стандартные элементы чертежей. Когда анализатор достигает пользовательского элемента, он вызывает NamespaceHandler, который объявил о поддержке пространства имен пользовательского элемента. Здесь NamespaceHandler имеет возможность обрабатывать информацию в пользовательском элементе, изменять модель плана выполнения или выполнять любые другие операции. Если в любом из определений пространства имен есть ошибка ввода, план почти наверняка не запустится.

https://www.ibm.com/support/knowledgecenter/SSD28V_liberty/com.ibm.websphere.wlp.core.doc/ae/rwlp_blueprint_namespace_handler.html

1 Ответ

0 голосов
/ 27 октября 2019

Это мой лучший ответ, но я надеюсь, что кто-то более опытный даст лучший ответ.

Я подозревал, что другой экземпляр проекта может работать против меня.

Я запустил list -t 0 -s | grep blueprint в Карафе и обнаружил, что запущены два разных экземпляра blueprint.api и blueprint.core. Это виновник? Я не знаю. Я понятия не имею, как отлаживать подобные вещи внутри Карафа.

 69 │ Active      │  20 │ 1.0.1              │ org.apache.aries.blueprint.api
 70 │ Active      │  20 │ 1.3.1              │ org.apache.aries.blueprint.cm
 71 │ Active      │  20 │ 1.10.2             │ org.apache.aries.blueprint.core
 72 │ Resolved    │  20 │ 1.0.0              │ org.apache.aries.blueprint.core.compatibility
 73 │ Active      │  30 │ 1.2.0              │ org.apache.aries.jmx.blueprint.api
 74 │ Active      │  30 │ 1.2.0              │ org.apache.aries.jmx.blueprint.core
 78 │ Active      │  50 │ 2.24.1             │ org.apache.camel.camel-blueprint
117 │ Active      │  30 │ 4.2.7              │ org.apache.karaf.bundle.blueprintstate
118 │ Active      │  24 │ 4.2.7              │ org.apache.karaf.deployer.blueprint
120 │ Active      │  30 │ 4.2.7              │ org.apache.karaf.jaas.blueprint.config

Это произошло после обновления Карафа.

Другая попытка выяснить, что именно регистрируется в какомобработчики.

karaf@root()> bundle:services -p org.apache.camel.camel-cxf

camel-cxf (80) provides:
------------------------
objectClass = [org.apache.aries.blueprint.NamespaceHandler]
osgi.service.blueprint.namespace = http://camel.apache.org/schema/blueprint/cxf
service.bundleid = 80
service.id = 194
service.scope = bundle
----
objectClass = [org.osgi.service.blueprint.container.BlueprintContainer]
osgi.blueprint.container.symbolicname = org.apache.camel.camel-cxf
osgi.blueprint.container.version = 2.24.1
service.bundleid = 80
service.id = 195
service.scope = singleton
----
objectClass = [org.apache.karaf.shell.commands.info.InfoProvider]
service.bundleid = 80
service.id = 196
service.scope = singleton
----
component = [cxf, cxfbean, cxfrs]
objectClass = [org.apache.camel.spi.ComponentResolver]
service.bundleid = 80
service.id = 197
service.scope = singleton
----
objectClass = [org.apache.camel.spi.TypeConverterLoader]
service.bundleid = 80
service.id = 198
service.scope = singleton
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...