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.
This appeared to go away when I switched my pom.xml to 5.10.5 for Confluence.
In other words, the following works great.
@ComponentImport private SchedulerService schedulerService;
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.