MBean configuration - ClassLoader issue
tprime Jan 14, 2008 9:43 AMI having problem using configuring Quartz MBean. Specifically having problem with JBoss Class Loading.
Enviorment:
OS: Linux (Ubuntu 7.10)
Jboss: 4.0.4 GA
Java: 1.5
I have very simple ear with following content:
myapp.ear |--------- META-INF | |------------- application.xml (reference modules some.jar and other.jar) | |------------- jboss-app.xml (reference to service archive myquartz.sar) | |--------- some.jar | |------------- my.test.SomeJob1 (Does not use any external class) | |------------- my.test.SomeJob2 (references/uses my.test.OtherBean) | |--------- other.jar | |------------- my.test.OtherBean | |--------- myquartz.sar |--------- META-INF |------------- jboss-service.xml (initialize Quartz MBean)
If i use only my.test.SomeJob1 which does not reference any external class then everything works great.
(Quartz Scheduler is properly started and jobs get trigger properly too)
But if i use my.test.SomeJob2 which uses an external class in Other.jar(in the same ear)
It throws following ClassLoader complain it can not find my.test.OtherBean.
[main] - 01/14/2008 09:09:55 [QuartzService] ERROR: org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't recover jobs: No ClassLoaders found for: com.illuminatics.accounting.organization.Organization [See nested exception: java.lang.ClassNotFoundException: No ClassLoaders found for: my.test.OtherBean]] at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.j ava:512) at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:396) at org.quartz.impl.StdScheduler.start(StdScheduler.java:147) at org.quartz.ee.jmx.jboss.QuartzService.startService(QuartzService.java:239) at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.jav a:289) at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport .java:245) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:15 5) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:9 78) at $Proxy0.start(Unknown Source) at org.jboss.system.ServiceController.start(ServiceController.java:417) at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) . . . * Nested Exception (Underlying Cause) --------------- org.quartz.JobPersistenceException: Couldn't recover jobs: No ClassLoaders found for: com.illuminatics.accounting.organization.Organization [See nested exception: java.lang.ClassNotFoundException: No ClassLoaders found for: com.illuminatics.accounting.organization.Organization] at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:7 17) at org.quartz.impl.jdbcjobstore.JobStoreCMT.recoverJobs(JobStoreCMT.java:186) at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.j ava:510) at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:396) at org.quartz.impl.StdScheduler.start(StdScheduler.java:147) at org.quartz.ee.jmx.jboss.QuartzService.startService(QuartzService.java:239) at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.jav a:289) at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport .java:245) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:15 5) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:9 78) at $Proxy0.start(Unknown Source) at org.jboss.system.ServiceController.start(ServiceController.java:417)
Why can Jboss find the the my.test.OtherBean? Does any one have any suggestion to resolve this issue?
i have been searching for the solution for good time now.
pike