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.

Questo prodotto è concesso in licenza in base alla licenza di Attribuzione-Non commerciale-Condividi allo stesso modo 3.0 Unported di Creative Commons.  I post su Twitter™ e Facebook non sono coperti dai termini di Creative Commons.

Note legali   |   Informativa sulla privacy online