0
석영 트리거로 내 OSGi 서비스에 액세스하려면 어떻게해야합니까?카라프의 석영
아래에서 타이머가 실행될 때 내 서비스 회사 Dao는 null입니다. 번들 컨텍스트를 스케줄러 나 작업에 제공해야합니까? 그렇다면 어떻게?
@Service
@Component(immediate = true, specVersion = "1.1", inherit = true)
public class TechnicalStageTimer implements Job {
@Reference(cardinality = MANDATORY_UNARY, policy = DYNAMIC)
protected CompanyDao companyDao;
private static final Logger LOG = LoggerFactory.getLogger(TechnicalStageTimer.class.getCanonicalName());
Scheduler scheduler;
@Activate
public void start(BundleContext context) throws Exception {
LOG.warn("Starting Timer TechnicalStageTimer");
SchedulerFactory sf = new StdSchedulerFactory();
scheduler = sf.getScheduler();
JobDetail job = JobBuilder.newJob(TechnicalStageTimer.class).build();
Trigger trigger = TriggerBuilder.newTrigger()
.withSchedule(CronScheduleBuilder.dailyAtHourAndMinute(11, 00)) // every day at 11:00
.build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
@Deactivate
public void stop(BundleContext context) throws Exception {
scheduler.shutdown(true);
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
LOG.warn("Timer Triggered");
List<Company> companies = companyDao.getPool();
}
}
작업 데이터 맵에 companyDao를 추가하고 작업 실행 서비스에서 액세스했습니다. – user2641043