DG dg
Developer Guidelines (Linee guida per gli sviluppatori)
Informazioni di base background
DG identifica deviazioni da specifiche linee guida di sviluppo per AEM 6.5 e AEM as a Cloud Service. Seguendo le best practice è possibile migliorare la manutenzione e le prestazioni del sistema. Queste deviazioni potrebbero non essere un problema in altri contesti applicativi, incluse versioni precedenti di AEM; tuttavia possono causare problemi se vengono utilizzate con AEM as a Cloud Service.
I sottotipi vengono utilizzati per identificare diversi tipi di violazioni rilevate:
java.io.inputstream: utilizzo dijava.io.InputStreamnel codice dell’applicazione.maintenance.task.configuration: configurazione di una certa attività di manutenzione periodica.sling.commons.scheduler: utilizzo dell’API Sling Commons Scheduler per un’attività pianificata.unsupported.asset.api: utilizzo delle API di Asset Manager non supportate nel codice dell’applicazione.javax.jcr.observation.EventListener: utilizzo di un listener di eventi nel codice dell’applicazione.custom.guava.cache: l’utilizzo della cache Guava nel codice dell’applicazione.java.api: alcune API Java sono state rimosse da Java 11 a Java 17.configuration.admin: il codice personalizzato che accede alle configurazioni verrà contrassegnato.guava.api: Guava non è supportato come standard in AEM 6.5 LTS.com.day.cq.dam.scene7.api.model: modifica della versione principale perpackage com.day.cq.dam.scene7.api.model.
Possibili implicazioni e rischi implications-and-risks
-
java.io.inputstream- Lo streaming di dati binari con
java.io.InputStreampuò sfruttare le risorse di memoria al punto di influire sulle prestazioni. Questo diventa un problema a causa della memoria limitata disponibile nei contenitori utilizzati in AEM as a Cloud Service.
- Lo streaming di dati binari con
-
maintenance.task.configuration- Alcune attività di manutenzione che in precedenza richiedevano una configurazione esplicita vengono ora configurate e gestite automaticamente in AEM as a Cloud Service.
- La configurazione dell’attività di manutenzione in AEM as a Cloud Service deve essere spostata nel controllo del codice sorgente.
-
sling.commons.scheduler- Le applicazioni dipendenti da attività in background che utilizzano Sling Commons Scheduler potrebbero non funzionare come previsto perché la loro esecuzione non è garantita in AEM as a Cloud Service.
- Secondo le linee guida per attività in background e processi con tempi di esecuzione lunghi, per il codice eseguito come attività pianificata si dovrebbe presupporre che in qualsiasi momento si potrebbe verificare un’interruzione dell’istanza su cui il codice è in esecuzione. Pertanto, il codice deve essere resiliente e ripristinabile.
-
unsupported.asset.api-
Le seguenti API di AssetManager sono contrassegnate come non supportate in AEM as a Cloud Service.
- createAssetForBinary
- getAssetForBinary
- removeAssetForBinary
- createAsset
-
-
javax.jcr.observation.EventListener- Le applicazioni dipendenti dal listener di eventi potrebbero non funzionare come previsto perché l’esecuzione non può essere garantita.
-
custom.guava.cache- L’utilizzo della cache Guava può causare problemi di prestazioni in AEM.
-
java.api- Con AEM 6.5 LTS su JRE17, queste API Java rimosse non saranno disponibili e il loro utilizzo non riuscirà.
-
configuration.admin- Controlla il tuo utilizzo per assicurarti di non utilizzare configurazioni non supportate come social network.
-
guava.api- Poiché Guava non è supportato in AEM 6.5 LTS, il codice personalizzato in uso con Guava non sarà attivo.
-
com.day.cq.dam.scene7.api.model- Il pacchetto importato
com.day.cq.dam.scene7.api.modelnei bundle personalizzati non verrà risolto a causa di una modifica di versione principale.
- Il pacchetto importato
Soluzioni possibili solutions
-
java.io.inputstream- Utilizza un approccio di caricamento binario diretto in cui i dati binari vengono aggiunti direttamente al datastore.
- Per i casi di utilizzo relativi alle risorse, consulta aem-upload. Per altri tipi di dati binari, la logica di caricamento personalizzata può essere modellata secondo lo stesso schema.
-
maintenance.task.configuration- Consulta la documentazione sulle Attività di manutenzione in AEM as a Cloud Service.
- Assicurati che la configurazione delle attività di manutenzione sia inclusa nel controllo del codice sorgente.
-
sling.commons.scheduler- Sostituisci l’uso di Sling Commons Scheduler con processi Sling, che dispongono di una garanzia di esecuzione “almeno una volta”.
- I processi di lunga durata dovrebbero essere evitati.
-
unsupported.asset.api- Anziché utilizzare le API non supportate di Asset Manager, consulta aem-upload.
-
javax.jcr.observation.EventListener- Invece di utilizzare il listener di eventi, si consiglia di eseguire il refactoring del meccanismo di gestione degli eventi con Processi Sling per essere sicuri che il processo venga eseguito.
-
custom.guava.cache- Se necessario, le cache devono essere create al di fuori di AEM. Potrebbe essere utile una soluzione di memorizzazione in cache esterna.
-
Contatta il team di supporto AEM per ottenere chiarimenti o per eventuali dubbi.
-
configuration.admin- Rimuovi eventuali utilizzi di configurazione di funzioni non supportate come Social.
-
guava.api- Installa Guava o rimuovi l’utilizzo se Guava viene utilizzato nel codice personalizzato.
-
com.day.cq.dam.scene7.api.model- Aggiornare l'intervallo di versioni per il pacchetto importato
com.day.cq.dam.scene7.api.modela 3.0.4.
- Aggiornare l'intervallo di versioni per il pacchetto importato