Spring classes and their long names
Spring team likes big names. One of the biggest is “SimpleRemoteStatelessSessionProxyFactoryBean“. This is not a problem, since I’m not a Fortran programmer. Unfortunatelly, I found two classes with similar names that aren’t type-safe (i.e.: I don’t receive a ClassCast or similar if I swap them): MethodInvokingFactoryBean e MethodInvokingJobDetailFactoryBean. I use the latter a lot, but, after using NB’s autocomplete feature, I selected the former instead:
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="cache"/> <property name="targetMethod" value="reload"/> </bean>
Results? NullPointerException:
org.quartz.SchedulerException: Registration of jobs and triggers failed: null [See nested exception: java.lang.NullPointerException] at org.springframework.scheduling.quartz.SchedulerFactoryBean.registerJobsAndTriggers(SchedulerFactoryBean.java:861) at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:649) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334) ... 13 more Caused by: java.lang.NullPointerException at org.quartz.core.QuartzScheduler.addJob(QuartzScheduler.java:808) at org.quartz.impl.StdScheduler.addJob(StdScheduler.java:288) at org.springframework.scheduling.quartz.SchedulerFactoryBean.addJobToScheduler(SchedulerFactoryBean.java:883) at org.springframework.scheduling.quartz.SchedulerFactoryBean.addTriggerToScheduler(SchedulerFactoryBean.java:906) at org.springframework.scheduling.quartz.SchedulerFactoryBean.registerJobsAndTriggers(SchedulerFactoryBean.java:842) ... 16 more
This wasn’t easy to solve, since the NPE wasn’t obvious. Both MIFB and MIJDFB are “factory” instances (they create real instances as needed), and, in this case, no type check was done.
Tags: jobdetail, nullpointerexception, spring