我有一个使用 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 Bootstrap 来启动 osgi 容器。它应该使用必要的包来启动 osgi 容器,这是 osgi 容器为下一个包部署做好准备的最小集合。
更新的答案: 根据错误消息,您的 Gemini bundle 似乎需要容器中尚不可用的 bundle 。在部署 Gemini 之前,您需要弄清楚它从其他 bundle 导入的包/类是什么,并安装并启动它们。您可以通过检查 Gemini 包的 list 来做到这一点
关于java - 在 Glassfish 中将 Gemini 蓝图部署到 Felix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13055388/