【问题标题】:How does AEM jar creates all the bundles?AEM jar 如何创建所有捆绑包?
【发布时间】:2017-05-23 18:57:12
【问题描述】:

我有这个 AEM 6.2 jar,当我尝试执行这个 jar 时,它会创建所有必需的文件和文件夹,并在 /launchpad/felix 目录下创建所有包。

现在,如果我删除或重命名捆绑包,例如我将 bundle272 重命名为 bundle272aaa;尝试再次执行 jar,它从目录中删除了 bundle bundle272。

如果我将此 jar 复制到其他位置并尝试执行它,我可以在 /launchpad/felix 位置看到 bundle272。

为什么会这样?

【问题讨论】:

  • 你的目标是什么?你想达到什么目的?
  • 目标有点不同。我试图了解一个捆绑包对其他捆绑包的影响,但遇到了这个问题。
  • 您不需要删除文件系统上的包。只需转到localhost:4502/system/console/bundles 并停止捆绑。简而言之:Bundles 以 OSGi 服务的形式提供功能。其他包可以“使用”那些 OSGi 服务。一个捆绑包可以提供电子邮件服务,而另一个捆绑包使用此服务发送电子邮件。如果您停止电子邮件捆绑,则其他捆绑将无法再发送电子邮件。简而言之,这就是捆绑包之间的关系。 (显然,还有更多内容,但评论太多了)。
  • 这个我明白。我的问题是在捆绑包解决后出现的。我有一个 OSGI Bundle A 和 Bundle B。Bundle B 依赖于 Bundle A。Bundle B 和 Bundle A 都处于活动状态。现在我需要了解以下场景对 Bundle B 的影响 1)我已经停止了 Bundle A,Bundle B 会发生什么。2)我已经卸载了 Bundle A。Bundle B 会发生什么。3)我已经停止了 Bundle A , 然后我停止了 Bundle B,现在我试图从已安装状态解析 B。 4) 我已经卸载了 Bundle A,然后我停止了 Bundle B,现在我正在尝试从已安装状态解析 B。
  • 我猜你应该创建一个新问题。简而言之:如果您停止一个捆绑包,其他依赖于依赖捆绑包的捆绑包将保持活动状态或更改为“已解决”或“已安装”状态。这些捆绑包最终处于哪种状态取决于几件事。

标签: java jar content-management-system aem


【解决方案1】:

AEM jar(存档)包含所有这些文件。当您复制 AEM jar 并运行它时,它会将所有这些文件(包括捆绑包)提取到 crx-quickstart 目录中。

【讨论】:

  • 是的。这是我的想法,但你是说,它只提取第一次?
  • 另外,我试图检查它创建包的所有 jars 文件,我无法在 aem jar 中找到所有这些文件
  • 视情况而定。据我所知,某些文件总是被覆盖(例如sling.properties),并且可能不会每次都提取捆绑包之类的文件。可能不会太慢​​启动时间。
  • 这是我想的,但如果有人可以确认,我想。也看不到那个罐子里的所有罐子也让我有点烦恼。
【解决方案2】:

我认为这是一个很好的问题。您在 crx-quickstart/launchpad/felix 文件夹中看到的包只是作为缓存保留。这些包实际上位于安装文件夹中不同位置的 crx 存储库中。

Apache Sling 使用JCR Installer 从存储库的不同位置安装这些包。如果您将 osgi jar 放在安装文件夹(如 /apps/geometrixx/install)中,这就是为什么将它们部署到 AEM 的原因。

Apache Sling 还提供了一个名为File installer 的不同安装程序,它将捆绑包和配置存储在磁盘上。

我猜测 JCR 安装程序是通过继承 File Installer 来实现的,这就是为什么所有捆绑软件都写入磁盘但即使您重命名或删除它们也会恢复到磁盘上。我写这篇文章是为了猜测,因为此时我无法查看源代码并进行验证,但这很可能是幕后发生的事情。

【讨论】:

  • 即使我重新启动 jar,它们也不会恢复。只有当我将 jar 复制到其他地方然后启动它或完全删除启动板文件夹时,它才会将所有文件放在那里。
猜你喜欢
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2015-10-21
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 2012-04-10
相关资源
最近更新 更多