【问题标题】:GlassFish 4.1.1 and Apache Felix 5.4.0GlassFish 4.1.1 和 Apache Felix 5.4.0
【发布时间】:2016-10-13 22:34:19
【问题描述】:

我有一个需要新版本 osgi (org.osgi.core 6.0.0) 的包。我需要在 GF 4.1.1 开源版本中部署这个包。默认情况下,在 GF 中有一个旧版本的 apache felix (4.2.1) 所以我将文件 glassfish4/glassfish/osgi/felix/bin/felix.jar 替换为 5.4.0 版本(我重命名为 org.apache.felix.framework- 5.4.0.jar 到 felix.jar)。之后,我清理了域中的 felix 缓存并启动了 GF。 GF 似乎可以正常工作,但是我无法部署我的包:

[2016-06-13T16:09:04.036+0300] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=287 _ThreadName=Thread-8] [timeMillis: 1465823344036] [levelValue: 800] [[
  org.osgi.framework.BundleException: Unable to resolve com.temp [248](R 248.0): missing requirement [com.temp [248](R 248.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0))) Unresolved requirements: [[com.temp [248](R 248.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1175)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1153)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.processAllBundles(DirectoryWatcher.java:1146)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:456)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:263)]]

我检查了 org.apache.felix.framework-5.4.0.jar 有 default.properties 并且 org.osgi.framework 1.8.0 包被导出。如何解决?

【问题讨论】:

  • org.osgi.framework 的版本是否可能在某些 GF 配置中被覆盖?

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


【解决方案1】:

问题已通过编辑glassfish4/glassfish/config/osgi.properties 文件修复

【讨论】:

  • @MuzaffarMahmood 我现在不记得了,但我认为是 osgi 版本。
  • 我想用 java 制作一个基于插件的 web 应用程序。我应该用什么? JavaEE 或 OSGI 实现,如 Apache Felix 或 Eclipse Equinox 或其他?
  • @MuzaffarMahmood 我不会去 OSGi,因为 OSGi 现在已经死了,当然这是恕我直言。我之所以说它死了,是因为Java 9中出现的JPMS。所以,模块化系统现在在java中,在一个程序中使用两个模块化系统(OSGI和JPMS)是没有意义的。所以OSGI已经死了。您可以将 Java EE servlet 与 JPMS 一起使用,请参见此处:github.com/eclipse/jetty.project/issues/2191,但是,这并不容易开始,因为我花了大约两个月的时间来制作一个可以使用它的框架。另一方面,JavaEE 更容易开始,但没有模块化。
猜你喜欢
  • 2011-11-03
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 2012-01-11
  • 2013-12-18
  • 2012-07-26
  • 2015-08-28
相关资源
最近更新 更多