JBoss Fuse: java.lang.IllegalStateException: у ресурса нет uri для установленного пакета

Я работаю над JBossFuse 6.2, имею конечную точку CXF, для которой мне нужно было настроить некоторые специальные свойства через блок конфигурации httpj:engine-factory. Попробовав это, я столкнулся с этой проблемой https://issues.jboss.org/browse/ENTESB-3499

Ошибка была следующая

> ERROR | pool-43-thread-1 | BlueprintContainerImpl | 14 -
> org.apache.aries.blueprint.core - 1.4.2 | Unable to start blueprint
> container for bundle test-ws java.lang.NoClassDefFoundError:
> org/apache/aries/blueprint/reflect/MapMetadataImpl at
> org.apache.cxf.transport.http_jetty.blueprint.JettyServerEngineFactoryParser.parseEngineConnector(JettyServerEngineFactoryParser.java:110)
> at
> org.apache.cxf.transport.http_jetty.blueprint.JettyServerEngineFactoryParser.parse(JettyServerEngineFactoryParser.java:83)

Это появилось при попытке добавить блок httpj для определения CXF.

<httpj:engine-factory bus="cxf">
    <httpj:engine port="${port}" host="${host}">
        <httpj:threadingParameters minThreads="${minThreads}" maxThreads="${maxThreads}"/>
    </httpj:engine>
</httpj:engine-factory>

Я попробовал предложенное решение в упомянутых сообщениях, которое устанавливает пакет osgi для совместимости с ядром Blueprint.

osgi:install mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.core.compatibility/1.0.0

Однако после установки пакета при запуске контейнера я получаю следующее исключение:

 2016-06-22 11:01:13,279 | ERROR | 63859-1-thread-1 | DeploymentAgent                  | ?? | 83 - io.fabric8.fabric-agent - 1.2.0.redhat-133 | Unable to update agent 
    java.lang.IllegalStateException: Resource has no uri
    at io.fabric8.agent.service.Deployer.getBundleInputStream(Deployer.java:1354)[83:io.fabric8.fabric-agent:1.2.0.redhat-133]
    at io.fabric8.agent.service.Deployer.deploy(Deployer.java:714)[83:io.fabric8.fabric-agent:1.2.0.redhat-133]
    at io.fabric8.agent.service.Agent.provision(Agent.java:348)[83:io.fabric8.fabric-agent:1.2.0.redhat-133]
    at io.fabric8.agent.service.Agent.provision(Agent.java:194)[83:io.fabric8.fabric-agent:1.2.0.redhat-133]
    at io.fabric8.agent.DeploymentAgent.doUpdate(DeploymentAgent.java:642)[83:io.fabric8.fabric-agent:1.2.0.redhat-133]
    at io.fabric8.agent.DeploymentAgent$2.run(DeploymentAgent.java:256)[83:io.fabric8.fabric-agent:1.2.0.redhat-133]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_80]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_80]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_80]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_80]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_80]

Кто-нибудь когда-нибудь применял предложенное решение в JbossFuse? Я не совсем понимаю, почему это исключение запускается.

Заранее спасибо!


person Luciano Salotto    schedule 22.06.2016    source источник
comment
Не могли бы вы вместо этого попробовать JBoss Fuse 6.2.1? Пакет org.apache.aries.blueprint.core.compatibility предоставляется и его нужно только запустить. Найдите его идентификатор с помощью list -t 0 | grep ries, а затем запустите его.   -  person Alessandro Da Rugna    schedule 24.06.2016
comment
@AlessandroDaRugna Спасибо за ваш ответ, но 6.2.1 в данный момент не вариант, так как мы приближаемся к дате запуска. Я знаю, что это не должно иметь значения, но, учитывая, что в нем есть несколько исправлений ошибок и улучшений по сравнению с 6.2, это может быть немного рискованно. Я связался с парнем в RH и предоставил решение, как только я смогу его попробовать, если оно сработает, я опубликую его в Интернете, чтобы любой другой, столкнувшийся с этой проблемой, нашел обходной путь.   -  person Luciano Salotto    schedule 27.06.2016


Ответы (1)


Если кто-нибудь попадает в это, я получил ответ от кого-то из Red Hat. Проблема заключалась в том, что я работал в среде Fabric, поэтому мне пришлось добавить пакет OSGi Blueprint Core Compatibility в профиль Karaf в Fabric. Это можно сделать из консоли karaf, выполнив следующую команду

profile-edit --bundles mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.core.compatibility/1.0.0 karaf 1.x

Где 1.x — текущая используемая версия структуры.

Если вы НЕ работаете в среде Fabric, решение, опубликованное выше, должно работать как есть.

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

person Luciano Salotto    schedule 22.07.2016