4

我正在尝试将 guice 部署到 JBoss AS7 (7.2.0-Alpha) 中。这是许多罐子。我感兴趣的是

  • 吉斯
  • guice-servlet
  • guice-persist

guice 是一个主机包,guice-servlet 和 guice-persist 是这个主机的片段。

当我启动容器时,主机包总是被安装、解析并激活。片段总是会被安装,有时会被解析并“包含”在主机包中,有时不会。这似乎是随机的。

我也尝试过 Eclipse Virgo 并且行为是相同的,但是它具有定义计划的能力,您可以通过定义安装顺序来规避这个问题。(无论如何我似乎都能让它工作)。

查看 OSGi 规范并阅读此问题的答案,这似乎是预期的行为。JBoss 是一个 OSGi 4.2 容器,因此不能选择Require-CapabilityandProvide-Capability标头 - 另外我真的不想修改不属于我的 jar。

我应该如何让我的主机/片段包可靠地安装和解析?

我有一个想法(我不愿意这样做,因为它看起来不正确)是使用 maven-bundle-plugin/bndtools 并将 guice 包合并到一个单一的超级 guice 包中 - 在构建时有效地执行容器在 runtme 未能为我做什么。

4

1 回答 1

7

正如我在回答您链接到的问题时所说:如果在主机解析之前安装片段,它将附加到主机。实现这一点的最简单方法是先安装所有捆绑包(包括片段),然后再允许它们中的任何一个进行解析。

在许多情况下,解析是通过尝试启动捆绑来触发的。人们在 OSGi 中犯的最常见错误之一是试图在安装后立即启动每个包。您不能这样做,也就是说,在您安装完所有要运行的捆绑软件之后,您不应该启动任何捆绑软件。

于 2012-11-14T17:17:37.390 回答