javatomcatjava-melody

JavaMelody throwing NullPointerException when firing up Tomcat


When we start up our WAR in out Tomcat 8, we always get the NPE from JavaMelody 1.78.0 shown below.

I can't find any hint on what might cause it on the web.

[INFO] [talledLocalContainer] java.lang.NullPointerException: null
[INFO] [talledLocalContainer]   at net.bull.javamelody.internal.model.Quartz2Adapter.getAllJobsOfScheduler(Quartz2Adapter.java:149) ~[javamelody-core-1.78.0.jar:1.78.0]
[INFO] [talledLocalContainer]   at net.bull.javamelody.internal.model.JobInformations.buildJobInformationsList(JobInformations.java:163) [javamelody-core-1.78.0.jar:1.78.0]
[INFO] [talledLocalContainer]   at net.bull.javamelody.internal.model.JavaInformations.<init>(JavaInformations.java:203) [javamelody-core-1.78.0.jar:1.78.0]
[INFO] [talledLocalContainer]   at net.bull.javamelody.internal.model.UpdateChecker.getAnonymousData(UpdateChecker.java:136) [javamelody-core-1.78.0.jar:1.78.0]
[INFO] [talledLocalContainer]   at net.bull.javamelody.internal.model.UpdateChecker.checkForUpdate(UpdateChecker.java:109) [javamelody-core-1.78.0.jar:1.78.0]
[INFO] [talledLocalContainer]   at net.bull.javamelody.internal.model.UpdateChecker$1.run(UpdateChecker.java:83) [javamelody-core-1.78.0.jar:1.78.0]
[INFO] [talledLocalContainer]   at java.util.TimerThread.mainLoop(Timer.java:555) [?:1.8.0_191-1-redhat]
[INFO] [talledLocalContainer]   at java.util.TimerThread.run(Timer.java:505) [?:1.8.0_191-1-redhat]

Does any one know to get rid of the NPE? Please let me know if I need to provide more details.


Solution

  • In your webapp, for one scheduler from org.quartz.impl.SchedulerRepository.getInstance().lookupAll(), the method scheduler.getJobGroupNames() returns null.

    This is not supposed to happen in quartz scheduler.

    Try to upgrade Quartz scheduler.

    Edit: Finally, JCRJobStore in Onehippo/Bloomreach breaks the JobStore interface contract from Quartz scheduler: https://code.onehippo.org/cms-community/hippo-repository/blob/hippo-repository-13.3.0/engine/src/main/java/org/hippoecm/repository/quartz/JCRJobStore.java#L468

    getJobGroupNames() should return an empty list instead of null.