You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@deltaspike.apache.org by Tvori Kod <tv...@gmail.com> on 2014/10/30 22:54:36 UTC

Using @Scheduled with nested class throws InstantiationException

Hi,

CustomJob is a nested class  annotated with @Scheduled inside in class
annotated with @ApplicationScoped and @Named


@Named("appBean")
@ApplicationScoped
public class ApplicationBean implements Serializable {


@Scheduled(cronExpression = "0/5 * * * * ?")
    public class CustomJob implements Job {

        public CustomJob() {}

        @Override
        public void execute(JobExecutionContext context) throws
JobExecutionException {
            System.out.println(System.currentTimeMillis());
        }
    }

Re: Using @Scheduled with nested class throws InstantiationException

Posted by Gerhard Petracek <ge...@gmail.com>.
hi,

your nested job-class needs to be static.

-> in your example:
//...
public static class CustomJob implements Job { /*...*/ }
//...

regards,
gerhard

http://www.irian.at

Your JavaEE powerhouse -
JavaEE Consulting, Development and
Courses in English and German

Professional Support for Apache
MyFaces, DeltaSpike and OpenWebBeans



2014-10-30 23:03 GMT+01:00 Tvori Kod <tv...@gmail.com>:

> Hi,
>
> Sorry I sended the question incomplete (wrong key pressed). Here is the
> complete question.
>
> CustomJob is a nested class  annotated with @Scheduled inside in class
> annotated with @ApplicationScoped and @Named.
>
>
> @Named
> @ApplicationScoped
> public class ApplicationBean implements Serializable {
>
> ...
>
>     @Scheduled(cronExpression = "0/5 * * * * ?")
>     public class CustomJob implements Job {
>
>         public CustomJob() {}
>
>         @Override
>         public void execute(JobExecutionContext context) throws
> JobExecutionException {
>             System.out.println(System.currentTimeMillis());
>         }
>     }
>
> ...
> }
>
> When Wildfly (8.1.0.Final, patched Weld 2.2.5) is starting throws the next
> exception:
>
> 15:49:55,001 ERROR [org.quartz.core.ErrorLogger]
> (DefaultQuartzScheduler_QuartzSchedulerThread) An error occured
> instantiating job to be executed. job= 'DEFAULT.CustomJob':
> org.quartz.SchedulerException: Problem instantiating class
> 'com.app.ApplicationBean$CustomJob' [See nested exception:
> java.lang.InstantiationException: com.app.ApplicationBean$CustomJob]
>     at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:58)
>     at
>
> org.quartz.simpl.PropertySettingJobFactory.newJob(PropertySettingJobFactory.java:69)
>     at org.quartz.core.JobRunShell.initialize(JobRunShell.java:127)
>     at
> org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:375)
> Caused by: java.lang.InstantiationException:
> com.app.ApplicationBean$CustomJob
>     at java.lang.Class.newInstance(Class.java:359) [rt.jar:1.7.0_67]
>     at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:56)
>     ... 3 more
>
> I'm using the last snapshot of 1.4 Deltaspike version and  JSF 2.2.
>
> There is a some problem creating the instance of nested class. When I'm
> not using nested class is working well. If the nested class is static also
> work well.
>
> On Thu, Oct 30, 2014 at 3:54 PM, Tvori Kod <tv...@gmail.com> wrote:
>
> > Hi,
> >
> > CustomJob is a nested class  annotated with @Scheduled inside in class
> > annotated with @ApplicationScoped and @Named
> >
> >
> > @Named("appBean")
> > @ApplicationScoped
> > public class ApplicationBean implements Serializable {
> >
> >
> > @Scheduled(cronExpression = "0/5 * * * * ?")
> >     public class CustomJob implements Job {
> >
> >         public CustomJob() {}
> >
> >         @Override
> >         public void execute(JobExecutionContext context) throws
> > JobExecutionException {
> >             System.out.println(System.currentTimeMillis());
> >         }
> >     }
> >
>

Re: Using @Scheduled with nested class throws InstantiationException

Posted by Tvori Kod <tv...@gmail.com>.
Hi,

Sorry I sended the question incomplete (wrong key pressed). Here is the
complete question.

CustomJob is a nested class  annotated with @Scheduled inside in class
annotated with @ApplicationScoped and @Named.


@Named
@ApplicationScoped
public class ApplicationBean implements Serializable {

...

    @Scheduled(cronExpression = "0/5 * * * * ?")
    public class CustomJob implements Job {

        public CustomJob() {}

        @Override
        public void execute(JobExecutionContext context) throws
JobExecutionException {
            System.out.println(System.currentTimeMillis());
        }
    }

...
}

When Wildfly (8.1.0.Final, patched Weld 2.2.5) is starting throws the next
exception:

15:49:55,001 ERROR [org.quartz.core.ErrorLogger]
(DefaultQuartzScheduler_QuartzSchedulerThread) An error occured
instantiating job to be executed. job= 'DEFAULT.CustomJob':
org.quartz.SchedulerException: Problem instantiating class
'com.app.ApplicationBean$CustomJob' [See nested exception:
java.lang.InstantiationException: com.app.ApplicationBean$CustomJob]
    at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:58)
    at
org.quartz.simpl.PropertySettingJobFactory.newJob(PropertySettingJobFactory.java:69)
    at org.quartz.core.JobRunShell.initialize(JobRunShell.java:127)
    at
org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:375)
Caused by: java.lang.InstantiationException:
com.app.ApplicationBean$CustomJob
    at java.lang.Class.newInstance(Class.java:359) [rt.jar:1.7.0_67]
    at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:56)
    ... 3 more

I'm using the last snapshot of 1.4 Deltaspike version and  JSF 2.2.

There is a some problem creating the instance of nested class. When I'm
not using nested class is working well. If the nested class is static also
work well.

On Thu, Oct 30, 2014 at 3:54 PM, Tvori Kod <tv...@gmail.com> wrote:

> Hi,
>
> CustomJob is a nested class  annotated with @Scheduled inside in class
> annotated with @ApplicationScoped and @Named
>
>
> @Named("appBean")
> @ApplicationScoped
> public class ApplicationBean implements Serializable {
>
>
> @Scheduled(cronExpression = "0/5 * * * * ?")
>     public class CustomJob implements Job {
>
>         public CustomJob() {}
>
>         @Override
>         public void execute(JobExecutionContext context) throws
> JobExecutionException {
>             System.out.println(System.currentTimeMillis());
>         }
>     }
>