Проблема установки hazelcast 3.6.5 в Jboss Fuse 6.2.1 (Управляемая структура)
Я пытаюсь установить версию hazelcast-all-3.6.5 на сервере Jboss Fuse 6.2.1 (Fabric Managed). При установке выдает следующую ошибку.
Unable to update agent org.osgi.service.resolver.ResolutionException: Unable to resolve root: missing requirement [root]
osgi.identity; osgi.identity=appid1-hazelcast; type=karaf.feature; version=0
[caused by: Unable to resolve appid1-hazelcast/3.0.1.release: missing requirement [appid1-hazelcast/3.0.1.release]
osgi.identity; osgi.identity=com.hazelcast; type=osgi.bundle; version="[3.6.5,3.6.5]"; resolution:=mandatory
[caused by: Unable to resolve com.hazelcast/3.6.5: missing requirement [com.hazelcast/3.6.5]
osgi.wiring.package; filter:="(osgi.wiring.package=sun.misc)"]]
Попытка установки фрагмента пакета, чтобы выставить пакет sun.misc, но получил следующую ошибку "Ошибка: Ресурс не имеет URI".
Фрагмент пакета: mvn:com.diffplug.osgi/com.diffplug.osgi.extension.sun.misc/0.0.0
2017-03-16 18:02:22,814 | INFO | 2.0.1-1-thread-1 | Agent | 72 - io.fabric8.fabric-agent - 1.2.0.redhat-621166 | null
2017-03-16 18:02:22,814 | ERROR | 2.0.1-1-thread-1 | DeploymentAgent | 72 - io.fabric8.fabric-agent - 1.2.0.redhat-621166 | Unable to update agent
java.lang.IllegalStateException: Resource has no uri
at io.fabric8.agent.service.Deployer.getBundleInputStream(Deployer.java:1466)[72:io.fabric8.fabric-agent:1.2.0.redhat-621166]
at io.fabric8.agent.service.Deployer.deploy(Deployer.java:812)[72:io.fabric8.fabric-agent:1.2.0.redhat-621166]
at io.fabric8.agent.service.Agent.provision(Agent.java:366)[72:io.fabric8.fabric-agent:1.2.0.redhat-621166]
at io.fabric8.agent.service.Agent.provision(Agent.java:199)[72:io.fabric8.fabric-agent:1.2.0.redhat-621166]
at io.fabric8.agent.DeploymentAgent.doUpdate(DeploymentAgent.java:733)[72:io.fabric8.fabric-agent:1.2.0.redhat-621166]
at io.fabric8.agent.DeploymentAgent$4.run(DeploymentAgent.java:289)[72:io.fabric8.fabric-agent:1.2.0.redhat-621166]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_55]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_55]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_55]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_55]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_55]
Примечание: тот же подход прекрасно работает в версии Fuse 6.1.0 (как автономной, так и в виде структуры).
2 ответа
Сначала я добавил пакет sun.misc к свойству " org.osgi.framework.system.packages.extra " в файле etc / config.properties, но это не решило проблему. (Это должно работать в 90% случаев) .
Позже выяснилось, что в файле /etc/custom.properties есть еще одно свойство с именем " org.osgi.framework.system.packages.extra ", добавление пакета sun.misc в файл /etc/custom.properties устранило проблему.
# Branding
org.osgi.framework.system.packages.extra = org.apache.karaf.branding,com.sun.xml.bind.v2.model.core,sun.misc
Вам необходимо активировать доступ к sun.misc.Unsafe
пакет в jboss. Обычно платформа OSGi имеет некоторую конфигурацию, в которой вы можете включить пакеты из системного загрузчика классов в пакеты (делегирование загрузочного класса). Хотя я не уверен, как именно это работает в fabric8, но этот более ранний пост исправил это в прошлом, думаю, конфигурация все та же: https://developer.jboss.org/message/884503