2017-10-21 4 views
1

J'ai écrit un planificateur à l'aide des annotations OSGi R6, mais il ne semble pas courir:6.3 AEM: Création d'annotations Scheduler à l'aide OSGi R6

package com.aem.sites.interfaces; 

import org.osgi.service.metatype.annotations.AttributeDefinition; 
import org.osgi.service.metatype.annotations.AttributeType; 
import org.osgi.service.metatype.annotations.ObjectClassDefinition; 

@ObjectClassDefinition(name = "Scheduler Configuration for Weather", description = "Configuration file for Scheduler") 
public @interface SchedulerConfiguration { 

    @AttributeDefinition(
      name = "sample parameter", 
      description="Sample String parameter", 
      type = AttributeType.STRING 
      ) 
    public String parameter() default "scheduler"; 

    @AttributeDefinition(
      name = "Concurrent", 
      description = "Schedule task concurrently", 
      type = AttributeType.BOOLEAN 
     ) 
     boolean scheduler_concurrent() default true; 

     @AttributeDefinition(
      name = "Expression", 
      description = "Cron-job expression. Default: run every minute.", 
      type = AttributeType.STRING 
     ) 
     String scheduler_expression() default "0 * * * * ?"; 

} 

et

package com.aem.sites.schedulers; 

import org.osgi.service.component.annotations.Component; 
import org.osgi.service.component.annotations.Activate; 
import org.osgi.service.metatype.annotations.Designate; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

import com.aem.sites.interfaces.SchedulerConfiguration; 

@Component(immediate = true, 
     configurationPid = "com.aem.sites.schedulers.WeatherServiceScheduler") 
@Designate(ocd=SchedulerConfiguration.class) 
public class WeatherServiceScheduler implements Runnable { 

    private final Logger logger = LoggerFactory.getLogger(this.getClass()); 

    private String myParameter; 

    @Override 
    public void run() { 
     logger.info("*******************************************Sample OSGi Scheduler is now running", myParameter); 

    } 
    @Activate 
    public void activate(SchedulerConfiguration config) { 
     logger.info("*******************************************weather service scheduler"+ myParameter); 
     myParameter = config.parameter(); 
    } 

} 

Je suis cela https://github.com/nateyolles/aem-osgi-annotation-demo/blob/master/core/src/main/java/com/nateyolles/aem/osgiannotationdemo/core/schedulers/SampleOsgiScheduledTask.java mais on dirait que je fais quelque chose de mal ici. Je ne suis pas sûr de quoi.

Merci à l'avance

Répondre