【发布时间】: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