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 di java.io.InputStream nel 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 per package 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.InputStream può 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.
  • 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.model nei bundle personalizzati non verrà risolto a causa di una modifica di versione principale.

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

  • 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.model a 3.0.4.
recommendation-more-help
c50d24a5-718e-4110-a484-b335e8a63206