I have an annotated component that works well.
However I could not get access to the SchedulerService through annotation.
@Component
@ExportAsService({HealthCheckMonitorService.class})
@Named("health-check-monitor-service")
public class HealthCheckMonitorServiceImpl
implements InitializingBean, DisposableBean, HealthCheckMonitorService {When I tried to get the SchedulerService this way.
@ComponentImport
private SchedulerService schedulerService;
I got the following error.
did not enable within 5 seconds.The plugin should not take this long to enable. Will only attempt to load plugin for another '25' seconds.
.
.
actualEnable Unable to start the following plugins due to timeout while waiting for plugin to enable
When I tried this.
@Qualifier("schedulerService")
private SchedulerService schedulerService;Instead I saw this result.
found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.atlassian.scheduler.SchedulerService] found for dependency:
My workaround was to do the following in my constructor.
@Inject
public HealthCheckMonitorServiceImpl(HealthCheckService healthCheckService){
this.schedulerService = ComponentLocator.getComponent(SchedulerService.class);
this.healthCheckService = healthCheckService;
}
Question: Is there any way to get that component through annotation? It would be much more elegant.
Note: This is Confluence 5.9.11.