Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I developed my own JobListener,but i don't know how to use it. can you give me some examples for using it? help me ,thanks #1819

Closed
dolphin-bear opened this issue Jan 21, 2021 · 4 comments
Labels

Comments

@dolphin-bear
Copy link

Question

For English only, other languages will not accept.

Before asking a question, make sure you have:

Please pay attention on issues you submitted, because we maybe need more details.
If no response anymore and we cannot reproduce it on current information, we will close it.

@dolphin-bear dolphin-bear changed the title I developed my own JobListener,but i don't know how I developed my own JobListener,but i don't know how to use it. can you tell me Jan 21, 2021
@dolphin-bear dolphin-bear changed the title I developed my own JobListener,but i don't know how to use it. can you tell me I developed my own JobListener,but i don't know how to use it. can you give me some examples for using it? help me ,thanks Jan 21, 2021
@TeslaCN
Copy link
Member

TeslaCN commented Jan 21, 2021

Hi @dolphin-bear
JobListener is discovered by SPI.

  1. You may specify your implementation under
    META-INF/services/org.apache.shardingsphere.elasticjob.infra.listener.ElasticJobListener like the following file.
    https://github.com/apache/shardingsphere-elasticjob/blob/master/elasticjob-lite/elasticjob-lite-core/src/test/resources/META-INF/services/org.apache.shardingsphere.elasticjob.infra.listener.ElasticJobListener

  2. Specify the type of your implementation in JobConfiguration.

@dolphin-bear
Copy link
Author

implements ElasticJobListener is OK, but extends AbstractDistributeOnceElasticJobListener is wrong. why ?

exception like this:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration': Invocation of init method failed; nested exception is java.util.ServiceConfigurationError: org.apache.shardingsphere.elasticjob.infra.listener.ElasticJobListener: Provider elasticjob.listeners.MyDistributeOnceJobListener could not be instantiated
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:414) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:240) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:721) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:534) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at elasticjob.SchedulingApplication.main(SchedulingApplication.java:9) [classes/:na]
Caused by: java.util.ServiceConfigurationError: org.apache.shardingsphere.elasticjob.infra.listener.ElasticJobListener: Provider elasticjob.listeners.MyDistributeOnceJobListener could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232) ~[na:1.8.0_172]
at java.util.ServiceLoader.access$100(ServiceLoader.java:185) ~[na:1.8.0_172]
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384) ~[na:1.8.0_172]
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) ~[na:1.8.0_172]
at java.util.ServiceLoader$1.next(ServiceLoader.java:480) ~[na:1.8.0_172]
at java.lang.Iterable.forEach(Iterable.java:74) ~[na:1.8.0_172]
at org.apache.shardingsphere.elasticjob.infra.spi.ElasticJobServiceLoader.registerTypedService(ElasticJobServiceLoader.java:51) ~[elasticjob-infra-common-3.0.0-RC1.jar:3.0.0-RC1]
at org.apache.shardingsphere.elasticjob.infra.listener.ElasticJobListenerFactory.(ElasticJobListenerFactory.java:34) ~[elasticjob-infra-common-3.0.0-RC1.jar:3.0.0-RC1]
at org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobScheduler.lambda$getElasticJobListeners$1(JobScheduler.java:109) ~[elasticjob-lite-core-3.0.0-RC1.jar:3.0.0-RC1]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_172]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) ~[na:1.8.0_172]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_172]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_172]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_172]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_172]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_172]
at org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobScheduler.getElasticJobListeners(JobScheduler.java:110) ~[elasticjob-lite-core-3.0.0-RC1.jar:3.0.0-RC1]
at org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobScheduler.(JobScheduler.java:81) ~[elasticjob-lite-core-3.0.0-RC1.jar:3.0.0-RC1]
at org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap.(ScheduleJobBootstrap.java:36) ~[elasticjob-lite-core-3.0.0-RC1.jar:3.0.0-RC1]
at org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration.registerClassedJob(ElasticJobBootstrapConfiguration.java:101) ~[elasticjob-lite-spring-boot-starter-3.0.0-RC1.jar:3.0.0-RC1]
at org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration.constructJobBootstraps(ElasticJobBootstrapConfiguration.java:84) ~[elasticjob-lite-spring-boot-starter-3.0.0-RC1.jar:3.0.0-RC1]
at org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration.createJobBootstrapBeans(ElasticJobBootstrapConfiguration.java:57) ~[elasticjob-lite-spring-boot-starter-3.0.0-RC1.jar:3.0.0-RC1]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_172]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_172]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_172]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_172]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
... 18 common frames omitted
Caused by: java.lang.InstantiationException: elasticjob.listeners.MyDistributeOnceJobListener
at java.lang.Class.newInstance(Class.java:427) ~[na:1.8.0_172]
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380) ~[na:1.8.0_172]
... 44 common frames omitted
Caused by: java.lang.NoSuchMethodException: elasticjob.listeners.MyDistributeOnceJobListener.()
at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_172]
at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_172]
... 45 common frames omitted

@TeslaCN
Copy link
Member

TeslaCN commented Jan 22, 2021

SPI requires no args constructor to instantiate your listener.

@dolphin-bear
Copy link
Author

got it,thanks!!

@TeslaCN TeslaCN closed this as completed Jan 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants