【问题标题】:Deploying Gemini Blueprint to Felix In Glassfish在 Glassfish 中将 Gemini 蓝图部署到 Felix
【发布时间】:2012-10-24 18:25:30
【问题描述】:

我有一个使用 Spring 并在 Glassfish 3.1.2 中运行的 Java Web 应用程序,我正在尝试将其转换为 OSGi 架构。

我首先下载 Gemini 蓝图并将 jar 复制到 Glassfish 中的 autodeploy/bundle 目录,此时我收到很多关于缺少要求的错误,如下所示:

[#|2012-10-24T12:58:07.176 0500|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_Thread
ID=18;_ThreadName=Thread-5;|org.osgi.framework.BundleException: 
Unresolved constraint in bundle org.eclipse.gemini.blueprint.core [258]: 
Unable to resolve 258.1: missing requirement [258.1] osgi.wiring.package; (&(osgi.wiring.package=org.aopalliance.aop)(version>=0.0.0))

还有org.apache.commons.logging 的类似错误。

我已经阅读了很多关于 OSGi 和 Glassfish 的文章,但我找不到任何为 Glassfish 创建 OSGi spring 应用程序的示例,所以我想我可能做错了什么。

任何人都知道我所做的是否正确,如果正确,如何解决这些问题。

【问题讨论】:

  • 澄清一下,您是想在 glassfish 中运行 osgi 容器还是在 osgi 容器中运行 glassfish?
  • @wins 对于当前的 Web 应用程序,我正在运行 glassfish 3.1,我理解它在 OSGi 容器中运行,我正在尝试通过部署到 Felix 将当前 Web 应用程序中的 jar 转换为与 Glassfish 捆绑运行(将罐子复制到自动完成)。我没有在 Glassfish 中安装任何东西。
  • 在这种情况下,根据错误消息,您的 Gemini 捆绑包似乎需要容器中尚不可用的捆绑包。您需要弄清楚它从其他包中导入的包/类是什么,并在部署 Gemini 之前安装和启动它们。您可以通过检查 Gemini bundle 的清单来做到这一点

标签: java jakarta-ee glassfish osgi apache-felix


【解决方案1】:

您似乎正在尝试在 glassfish 中运行 osgi 容器。如果是这样,您必须使用或编写一种 osgi 引导程序来启动 osgi 容器。它应该使用必要的 bundle 启动 osgi 容器,这是 osgi 容器为下一个要部署的 bundle 做好准备的最小设置。

更新的答案: 根据错误消息,您的 Gemini 捆绑包似乎需要容器中尚不可用的捆绑包。您需要弄清楚它从其他包中导入的包/类是什么,并在部署 Gemini 之前安装和启动它们。你可以通过检查 Gemini bundle 的清单来做到这一点

【讨论】:

  • 我想做的就是以尽可能简单的方式使用 OSGi 在 Glassfish 中运行 spring。我认为双子座蓝图提供了“绑定”以允许 spring 像这样工作,这就是我将它部署到 Glassfish 的原因。我的方法应该是什么?
  • 请在问题区查看我的评论。写这个答案时,我想念你的问题。我会删除这个答案
  • 用你在问题区做的cmet更新你提供的答案
  • 一开始我觉得很奇怪,gemini 是在没有基本依赖项的情况下交付的,但是当我想到它时,它会弹出和许多其他包。
猜你喜欢
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多