我有这个AEM 6.2 jar,当我尝试执行这个jar时,它会创建所有必需的文件和文件夹,并在/ launchpad / felix目录下创建所有的bundle。
现在,如果我删除或重命名一个包,例如我将bundle272重命名为bundle272aaa;尝试再次执行jar,它从目录中删除了bundle bundle272。
如果我将此jar复制到其他位置并尝试执行它,我可以在/ launchpad / felix位置看到bundle272。
为什么会这样?
答案 0 :(得分:1)
AEM jar(存档)包含所有这些文件。当您只是复制AEM jar并运行它时,它会将所有这些文件(包括包)提取到crx-quickstart
目录中。
答案 1 :(得分:0)
我认为这是一个很好的问题。您在crx-quickstart / launchpad / felix文件夹中看到的捆绑包只是作为缓存持久化。捆绑包实际上位于安装文件夹中不同位置的crx存储库中。
Apache Sling使用JCR Installer从存储库中的不同位置安装这些软件包。这就是为什么你的osgi jar被部署到AEM的原因,如果你把它们放在像/ apps / geometrixx / install这样的安装文件夹中。
Apache Sling还提供了一个名为File installer的不同安装程序,用于存储捆绑包和安装程序。磁盘上的配置。
我猜测JCR安装程序是通过继承File Installer实现的,这就是为什么所有bundle都写入磁盘的原因,但即使你重命名或删除它们也会恢复到磁盘上。我写这个是猜测因为我无法查看源代码并在此时验证,但这是最有可能发生在幕后的事情。