在探索了 OSGi 框架之后,我开发了一个示例 Web 应用程序。Web 应用程序包(.war 或 .jar)被打包在一个 eba 中。war 文件在其目录中包含一堆嵌入的 jar 文件。这些WEB-INF/lib
jar 已(using maven-bundle-plugin
根据 jar 之间的关系转换为 OSGi bundles 以及所需的导出和导入包。现在我什至不得不提到(WEB-INF/lib)
bundle-classpath 中的所有这些 jar。上述工作是因为一个包(wab 也是一个包)可以在其中包含一个或多个 jarfile,并使用 Bundle-Classpath manifest.mf 条目指向它们。
如果我没有在 bundle-classpath 中包含 jar,我会得到一个ClassNotFoundException
.
问题是,那么将 jars 转换为 osgi bundles 是没有意义的。显然,其中的所有 jarsWEB-INF/lib
都是由同一个类加载器(即 wab 的类加载器)加载的,所以我们没有获得 OSGi 的主要好处,这主要是一个每个捆绑类加载器概念?