【问题标题】:WELD OSGI example - no resultWELD OSGI 示例 - 无结果
【发布时间】:2015-04-13 10:28:16
【问题描述】:

我想做以下解决方案:Apache Felix + Weld for Java SE(我使用 felix 4.6.1 和 WELD 2.2.10.SP1)。为此,我想运行焊接档案中的一个示例 -weld-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.jarweld-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.

仅此而已。没有其他的。程序不会终止。它只是显示没有其他内容。

【问题讨论】:

    标签: java osgi cdi apache-felix weld


    【解决方案1】:

    我不确定您所说的“将weld-se* 添加到lib 路径”是什么意思。

    Pax CDI 需要 weld-osgi-bundle 及其依赖项。 Weld SE 适用于 Java SE 而不是 OSGi。

    查看Pax CDI integration tests 的工作示例。

    【讨论】:

      【解决方案2】:

      您需要启动 pax-cdi-extender。它处理示例。顺便提一句。除了片段之外,我会启动所有捆绑包。如果它们有一些积极的行为,那么启动它们是有意义的,如果它们只是库,它不会受到伤害。

      【讨论】:

      • 我启动了除 slf4j-log4j12-1.7.2.jar 之外的所有捆绑包。结果是一样的。
      • 不确定 slf4j 的内容是否正确。我宁愿安装 pax 日志记录。普通的 slf4j 在 OSGi 中不起作用。使用 pax-logging,您可能会在日志中看到一些内容。 pax-cdi 没有处理您的包,或者它遇到错误。
      • 您需要安装 pax-logging。不是 pax-logging api。
      猜你喜欢
      • 2013-03-11
      • 2014-05-17
      • 2011-03-28
      • 2014-05-27
      • 2013-12-27
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      相关资源
      最近更新 更多