【问题标题】:Apache Karaf - missing dependencies (DataSources as it seems)Apache Karaf - 缺少依赖项(似乎是数据源)
【发布时间】:2020-02-12 15:23:28
【问题描述】:

我在启动 Karaf 时收到以下错误。我的一位同事具有完全相同的功能、捆绑包等,但没有收到错误。我们都使用 Windows 10 和 Karaf 4.0.7。

事实上,他只是压缩了他的 Karaf 文件夹并给了我。所以我们的卡拉夫装置是相同的。现在我正试图让它在我的机器上工作。

那么它怎么不能在我的本地机器上运行呢?

我不太了解 Karaf,所以我不知道如何进一步排除故障。可能是什么原因?

可能是我本地 Maven 存储库中的某些 jar 文件丢失了 (我的同事有但我没有)?我听说这是 Karaf 正在寻找一些组件的地方。

            data-access (2381)
            ------------------
            Status: Failure
            Blueprint
            10/15/19 4:51 PM
            Exception:
            null
            java.util.concurrent.TimeoutException
                    at org.apache.aries.blueprint.container.BlueprintContainerImpl$1.run(BlueprintContainerImpl.java:371)
                    at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
                    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
                    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                    at java.lang.Thread.run(Thread.java:748)

            Missing dependencies:
            (&(osgi.unit.name=ybkDS)(objectClass=javax.persistence.EntityManager)) (&(osgi.unit.name=ybDS)(objectClass=javax.persistence.EntityManagerFactory))

事实上,当我启动 Karaf 时,我首先得到了几分钟,然后我得到了上面发布的错误。

            karaf@root()> bundle:diag
            Bundle 53
            ---------
            Status: Installed
            Unsatisfied Requirements:


            data-access (2384)
            ------------------
            Status: GracePeriod
            Blueprint
            10/15/19 6:36 PM
            Missing dependencies:
            (&(osgi.unit.name=ybDS)(objectClass=javax.persistence.EntityManagerFactory)) (&(osgi.unit.name=ybkDS)(objectClass=javax.persistence.EntityManager))


            website-performance (2385)
            --------------------------
            Status: GracePeriod
            Blueprint
            10/15/19 6:36 PM
            Missing dependencies:
            (&(osgi.unit.name=ybDS)(objectClass=javax.persistence.EntityManagerFactory)) (&(osgi.unit.name=ybkDS)(objectClass=javax.persistence.EntityManager))

它在寻找什么我没有的东西?

【问题讨论】:

    标签: java osgi apache-karaf osgi-bundle


    【解决方案1】:

    您对 EntityManager 和 EntityManagerFactory 的 OSGi 服务具有依赖关系,两者都具有属性 osgi.unit.name=ybkDS。这些服务没有出现。您可以先在 diag 中观察到这一点。 5 分钟后,蓝图容器放弃等待这些服务并记录错误。

    所以你必须调试为什么这些服务没有出现。您能否提供有关如何实例化 EntityManager 的更多信息?

    我猜你正在使用 Apache Aries JPA 和 ops4j pax-jdbc。 在这种情况下,您需要检查 DataSource 是否出现(也应该是 OSGi 服务)以及您是否安装了正确的 jpa impl(如 hibernate)。

    如果您可以上传日志(尤其是来自 aries 和 pax-jdbc 的所有内容)也会有所帮助。

    【讨论】:

    • 非常感谢您在这里回复...我不确定我是否能够做到这一切。正如我所说,我不熟悉 Karaf,OSGI,所有这些东西......如果你能具体指导我在这里提取和上传什么,那就太好了。另外,我的同事有相同的 Karaf 文件夹,但没有问题。所以我想是卡拉夫外部的东西导致了这些问题。只是猜测......
    • 您可以在日志中查找“org.ops4j.pax.jdbc”。
    • OK...顺便说一句,我开始阅读您网站上的 Karaf 教程 :) 但我时间有限,实际上我不需要成为 Karaf 专家...我只需要得到它运行以测试其中的一些Web服务...感谢您的帮助,非常感谢。我可以尝试在 SO 中与您建立聊天吗?
    • 是的。如果不需要太长时间。
    • 谢谢,我会看看这是否可能。顺便说一句,我的日志文件中没有关于 org.ops4j.pax.jdbc 的内容。它只有这个超时错误。我会看看我是否可以启用更详细的日志记录。
    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 2015-05-28
    • 2017-02-18
    • 1970-01-01
    • 2017-12-25
    • 2015-04-18
    • 2020-03-24
    • 2012-07-12
    相关资源
    最近更新 更多