Problema
Quando distribuisci il codice ad AEM, il bundle del framework OSGi si aggiorna, causando un'interruzione di AEM. Nei log vedi messaggi simili a quelli qui sotto per il tuo bundle personalizzato:
19.04.2017 15:09:11.606 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Updated bundle custom-bundle-name [496] from resource TaskResource(url=jcrinstall:/apps/customapp/install/custom-bundle-name-1.2.0-SNAPSHOT.jar, entity=bundle:custom-bundle-name, state=INSTALL, attributes=[org.apache.sling.installer.api.tasks.ResourceTransformer=:9035:9042:9011:, Bundle-SymbolicName=custom-bundle-name, Bundle-Version=1.2.0.SNAPSHOT], digest=1492632551274) 19.04.2017 15:09:11.607 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Refreshing 1 bundles: [custom-bundle-name [496]] 19.04.2017 15:09:11.608 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Waiting up to 90 seconds for bundles refresh 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Done refreshing 1 bundles 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] custom-bundle-nameBundleEvent RESOLVED 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] custom-bundle-name BundleEvent STARTING 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] custom-bundle-name BundleEvent STARTED 19.04.2017 15:09:11.610 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Started bundle custom-bundle-name [496] 19.04.2017 15:09:11.627 *INFO* [FelixDispatchQueue] org.apache.felix.framework FrameworkEvent PACKAGES REFRESHED
Ambiente
AEM 6.x
Causa
1. Una possibile causa è che il bundle non contiene né esportazioni, né importazioni, né alcun codice. Questo causa notoriamente il problema.
2. Il bundle personalizzato potrebbe esportare a livello di sistema pacchetti java già esportati e usati da alcuni bundle core AEM, Apache Felix o Sling.
Risoluzione
Bundle OSGi vuoto
Se stai implementando un bundle vuoto, smetti di farlo. Non è valido farlo a meno che non si tratti di un bundle di frammenti contenente risorse.
Esportazione a livello di sistema
Se stai esportando qualche libreria utilizzata dal sistema (AEM, Sling, Apache Felix, Oak, ecc.), allora modifica il bundle personalizzato per incorporare la libreria usando il tag maven-bundle-plugin <Embed-Dependency>. È possibile scegliere se aggiungere o meno la libreria al tag <Export-Package>. Si potrà comunque accedere alla libreria all'interno del codice del bundle, ma non sarà esportata a tutti gli altri bundle.
Accedi al tuo account