Кварцевые и нестандартные сервисы для складов с Hazelcast ClassNotFoundException
Я использую servicemix с кварцем и RAMJobStore по умолчанию. Поскольку у нас есть кластер, мы хотим использовать Hazelcast, и мы сделали HazelcastJobStore. Я меняю это свойство
org.quartz.jobStore.class =
поставить свой пользовательский склад, но в servicemix, когда я делаю:
scheduler = schedulerFactory.getScheduler()
я получил эту ошибку
Caused by: org.quartz.SchedulerException: JobStore class 'com.sncf.canaltrain.transverse.jobStore.hazelcast.HazelCastJobStore' could not be instantiated. [See nested exception: java.lang.ClassNotFoundException: com.sncf.canaltrain.transverse.jobStore.hazelcast.HazelCastJobStore]
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:852)
at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1525)
at com.sncf.canaltrain.transverse.scheduler.SchedulerService.startScheduler(SchedulerService.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_71]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_71]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:297)[18:org.apache.aries.blueprint.core:1.4.3]
at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:958)[18:org.apache.aries.blueprint.core:1.4.3]
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:712)[18:org.apache.aries.blueprint.core:1.4.3]
... 54 more
Caused by: java.lang.ClassNotFoundException: com.sncf.canaltrain.transverse.jobStore.hazelcast.HazelCastJobStore
я вижу, что класс, который пытается создать экземпляр хранилища:
String classLoadHelperClass = this.cfg.getStringProperty("org.quartz.scheduler.classLoadHelper.class", "org.quartz.simpl.CascadingClassLoadHelper");
это было значение по умолчанию, но я думаю, что в servicmix это не правильно...
существует ли что-то, что я могу сделать, чтобы устранить эту ошибку пути к классам? или мне нужно реализовать свой собственный classLoadHelper и попытаться использовать osgi classthpath, чтобы найти мой класс?
Спасибо!
1 ответ
Наконец я нашел решение,
Я использую фрагмент, чтобы добавить свой customJobStore, и с фрагментом, хост (кварц) правильно находит мое хранилище заданий, и все работает нормально!
если это может помочь;)