2016-03-01 73 views
7

Ho un componente con proprietà come segue.Perché sling: il nodo OsgiConfig non funziona in/etc/folder in AEM?

@Component(immediate = true, metatype = true, label = "Conf Details") 
@Service(value = { LocationConfigurationUtil.class }) 
@Properties({ 
     @Property(label = "location blueprint", name = "locationPath", value = "", description = "..."), 
     @Property(label = "location page template", name = "locationTemplate", value = "", description = "..."), 
     @Property(label = "basepath live copies", name = "liveCopyRoot", value = "/content/WebRoot", description = "...") }) 
public class LocationConfigurationUtil { 
@Activate 
    protected void activate(Map<String, Object> mapCreated) { 
      // some code 
    } 
} 

Per rendere le proprietà modificabili in un nodo jcr, ho utilizzato un metodo non standard. Ho creato sling:OsgiConfig nel percorso /apps/system/config con proprietà dichiarate nel codice java, che funziona bene.

screen shot

Ma se non mi resta che lo stesso sling:OsgiConfig all'interno /etc/myapp/myconfig, non funziona.

risposta

9

Con le impostazioni predefinite, il provider di installazione JCR non cerca bundle e nodi installabili (sling:OsgiConfig) in cartelle diverse da /libs e /apps. quindi nessuna configurazione in /etc non verrà caricata.

Se si desidera modificare questo comportamento, creare una voce del percorso di ricerca nella finestra di configurazione di "Apache Sling JCR Installer" nella console di configurazione di osgi. Ma attenzione, non è consigliabile, non si dovrebbe mettere alcun nodo sling:osgiconfig in /etc in primo luogo.

+0

Ha iniziato a lavorare in '/ etc/system/config /', dopo aver aggiunto '/ etc: 300'. Ma all'interno della cartella '/ etc/myapp/myconfig' ancora non funziona. – Dileepa

+1

Rinomina la cartella myconfig per la configurazione. – awd

+0

lavorato. Grazie. :) – Dileepa

5

Si noti che posizionare i nodi di configurazione sotto /etc è una pessima idea.

Da un punto di vista della sicurezza, /libs e /apps sono bloccati, ma con /etc/ ti esponi ad almeno due grandi buchi di sicurezza:

  • configurazioni OSGi possono essere letti dagli utenti anonimi
  • Il codice può essere distribuito da utenti non privilegiati

Riconsiderare l'aggiunta del percorso /etc alle voci del percorso di ricerca degli Installer JCR e distribuire la configurazione. ioni a /apps.