De functie van het Kader van de Aanpassing wordt ontworpen om de schendingen in niet verlengbare gebieden van de code (zoals APIS) of inhoud (zoals overlays) te helpen verminderen die niet verbeteringsvriendelijk zijn.
Er zijn twee componenten van het aanpassingskader: de API Oppervlak en de Inhoudclassificatie.
In eerdere versies van AEM vele API's werden deze via Uber Jar weergegeven. Sommige van deze API's waren niet bedoeld voor gebruik door klanten, maar werden blootgesteld aan ondersteuning voor AEM functionaliteit in verschillende bundels. In de toekomst worden de Java API's gemarkeerd als Public of Private om aan klanten aan te geven welke API's veilig kunnen worden gebruikt in de context van upgrades. Andere bijzonderheden zijn:
Java API's die zijn gemarkeerd als Public
kunnen worden gebruikt en waarnaar wordt verwezen door aangepaste implementatiebundels.
De openbare API's zijn achterwaarts compatibel met de installatie van een compatibiliteitspakket.
Het compatibiliteitspakket bevat een compatibiliteitspakket van Uber JAR om achterwaartse compatibiliteit te garanderen
Java API's die zijn gemarkeerd als Private
, mogen alleen worden gebruikt door AEM interne bundels en mogen niet worden gebruikt door aangepaste bundels.
Het concept van Private
en Public
in deze context zou niet met de noties van Java van openbare en privé klassen moeten worden verward.
AEM gebruikt al lang de principal of overlays en Sling Resource Merger om klanten toe te staan AEM functionaliteit uit te breiden en aan te passen. De vooraf bepaalde functionaliteit die de AEM consoles en UI drijft wordt opgeslagen in /libs. Klanten mogen nooit iets wijzigen onder /libs, maar kunnen wel extra inhoud onder /apps toevoegen om de functionaliteit die is gedefinieerd in /libs te bedekken en uit te breiden (zie Ontwikkelen met overlays voor meer informatie). Dit veroorzaakte nog steeds talrijke problemen bij het upgraden van AEM als de inhoud in /libs zou kunnen veranderen, waardoor de overlayfunctie op onverwachte manieren zou kunnen breken. Klanten kunnen AEM componenten ook uitbreiden via overerving via sling:resourceSuperType
of gewoon rechtstreeks via sling:resourceType verwijzen naar een component in /libs. Vergelijkbare upgradeproblemen kunnen optreden met verwijzing en gebruikstoepassingen negeren.
Om het voor klanten veiliger en gemakkelijker te maken om te begrijpen welke gebieden van /libs veilig zijn om te gebruiken en bedekken is de inhoud in /libs geclassificeerd met de volgende mengsels:
Public (granite:PublicArea) - Definieert een knooppunt als public zodat het kan worden bedekt, overgeërfd ( sling:resourceSuperType
) of rechtstreeks ( sling:resourceType
) gebruikt. De knopen onder /libs duidelijk als Openbaar zullen veilig zijn om met de toevoeging van een Pakket van de Verenigbaarheid te bevorderen. In het algemeen moeten klanten alleen knooppunten gebruiken die zijn gemarkeerd als Public.
Abstract (granite:AbstractArea) - Definieert een knooppunt als abstract. Knooppunten kunnen worden bedekt of overgeërfd ( sling:resourceSupertype
) maar moeten niet direct worden gebruikt ( sling:resourceType
).
Final (granite:FinalArea) - Definieert een knooppunt als definitief. Als definitief geclassificeerde knooppunten kunnen niet worden bedekt of overgeërfd. Uiteindelijke knooppunten kunnen rechtstreeks via sling:resourceType
worden gebruikt. Subknooppunten onder eindknooppunt worden standaard als intern beschouwd
Internal (granite:InternalArea) - Definieert een knooppunt als internal. Als internal geclassificeerde knooppunten kunnen niet worden bedekt, overgeërfd of rechtstreeks worden gebruikt. Deze knooppunten zijn alleen bedoeld voor de interne functionaliteit van AEM
Geen annotatie - knooppunten nemen de classificatie over op basis van de boomhiërarchie. De /-hoofdmap is standaard Openbaar. Knooppunten met een als intern of definitief ingedeelde ouder moeten ook als intern worden behandeld.
Dit beleid wordt slechts afgedwongen tegen het Verdelen van onderzoekspad gebaseerde mechanismen. Andere gebieden van /libs als een cliënt-zijbibliotheek kunnen als Internal
worden gemerkt, maar konden nog met standaardcliëntlib opneming worden gebruikt. Het is belangrijk dat een klant in deze gevallen de interne classificatie blijft respecteren.
In CRXDE Lite toegepaste mengsels tonen inhoudsknooppunten en bomen die als INTERNAL
zijn gemarkeerd als zijnde grijs. Bij FINAL
wordt alleen het pictogram grijs weergegeven. De onderliggende knooppunten van deze knooppunten worden ook grijs weergegeven. In beide gevallen is de functie Overlayknooppunt uitgeschakeld.
Openbaar
Definitief
Intern
Controle van inhoudsstatus
AEM 6.4 wordt verzonden met een health check om klanten te waarschuwen als overlay of inhoud waarnaar wordt verwezen wordt gebruikt op een manier die niet in overeenstemming is met de inhoudclassificatie.
De Sling/Granite Content Access Check is een nieuwe health check die de opslagplaats controleert om te zien of de code van de klant de beveiligde knooppunten in AEM op onjuiste wijze benadert.
Hierdoor wordt /apps gescand en duurt het meestal enkele seconden om te voltooien.
Voor toegang tot deze nieuwe health check moet u het volgende doen:
Navigeer in het AEM startscherm naar Gereedschappen > Bewerkingen > Gezondheidsrapporten
Klik op de Toegangscontrole voor inhoud splitsen/graniet zoals hieronder wordt getoond:
Nadat het aftasten volledig is, zal een lijst van waarschuwingen aan een eind - gebruiker op de hoogte brengen van de beschermde knoop die verkeerd referenced is:
Na het herstellen van de overtredingen keert het terug naar de groene staat:
De gezondheidscontrole toont informatie die door de achtergronddienst wordt verzameld die asynchroon controleert wanneer een bekleding of middeltype over alle Verschuivende onderzoekspaden wordt gebruikt. Als inhoudmix onjuist wordt gebruikt, wordt een schending gerapporteerd.