WELD OSGI пример - безрезультатно

1

Я хочу сделать следующее решение: Apache Felix + Weld для Java SE (я использую felix 4.6.1 и WELD 2.2.10.SP1). Для этого я хочу запустить один из примеров из архива сварки - сварку-osgi-paint.

Я устанавливаю только следующие пакеты:

xbean-bundleutils-3.18.jar
pax-cdi-api-0.8.0.jar
pax-cdi-extension-0.8.0.jar
pax-cdi-spi-0.8.0.jar
pax-cdi-extender-0.8.0.jar
pax-swissbox-core-1.8.0.jar
pax-swissbox-lifecycle-1.8.0.jar
pax-swissbox-tracker-1.8.0.jar
ops4j-base-lang-1.5.0.jar
slf4j-api-1.7.6.jar
slf4j-log4j12-1.7.2.jar
log4j-1.2.17.jar
weld-osgi-paint-api.jar
weld-osgi-paint-core.jar
weld-osgi-paint-triangle.jar
weld-osgi-paint-square.jar

Я начинаю только два пучка:

org.apache.felix.scr-1.8.2.jar
weld-osgi-paint-core.jar

Помимо weld-se.jar и weld-se.jar weld-se-core.jar я добавил к пути lib, и я экспортирую "javax. *" Пакеты из них следующим образом:

String SYSTEM_PACKAGES =
        "org.osgi.framework;version=\"1.8\"," +
        "org.osgi.util.tracker;version=\"1.8\","+
        "org.osgi.service.packageadmin;version=\"1.8\","+
        "org.osgi.framework.wiring;version=\"1.8\","+
        "javax.swing,javax.management,javax.naming,javax.xml.parsers,"+
        "javax.el,javax.enterprise.context;version=\"1.0\","+
        "javax.enterprise.event;version=\"1.0\","+
        "javax.enterprise.inject;version=\"1.0\","+
        "javax.enterprise.util;version=\"1.0\","+
        "javax.inject;version=\"1.0\","+
        "javax.annotation;version=\"1.1\","+
        "javax.enterprise.context.spi;version=\"1.0\","+
        "javax.enterprise.inject.spi;version=\"1.0\","+
        "org.w3c.dom,org.xml.sax,org.xml.sax.helpers";
       configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES, SYSTEM_PACKAGES);

Я запускаю программу, и у меня нет ошибок и исключений. Я ничего не получаю. Что я делаю неправильно?

ИЗМЕНИТЬ 1
Я удалил пакеты slf4j и вместо этого установил pax-logging-api-1.8.2.jar. Это то, что я получаю сейчас:

org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling SLF4J API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Jakarta Commons Logging API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Log4J API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Avalon Logger API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling JULI Logger API support.

И это все. Ничего больше. Программа не заканчивается. Он просто ничего не показывает.

Теги:
osgi
cdi
weld
apache-felix

2 ответа

0
Лучший ответ

Я не уверен, что вы подразумеваете под "добавлением сварного шва к пути lib".

Pax CDI требует weld-osgi-bundle и его зависимостей. Weld SE предназначен для Java SE, а не для OSGi.

Взгляните на тесты интеграции Pax CDI для рабочих примеров.

0

Вам нужно будет запустить pax-cdi-extender. Он обрабатывает пример. Btw. Я бы начал все пучки, кроме фрагментов. Если у них есть какое-то активное поведение, имеет смысл начать их, если они просто libs, это не повредит.

  • 0
    Я запустил все пакеты, кроме slf4j-log4j12-1.7.2.jar. Результат тот же.
  • 0
    Не уверен, что материал slf4j правильный. Я бы предпочел установить pax logging. Обычный slf4j не работает в OSGi. С pax-logging вы можете увидеть что-то в журнале. Либо pax-cdi не обрабатывает ваш пакет, либо он сталкивается с ошибкой.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню