We recently deployed Quartz-1.5.1 in weblogic8.1(SP3) in our DEV/STG servers and it worked fine and it didnt work when it was moved to Production though the environment is same:
ISSUE:1
-------
The quartz Scheduler was initialized using a Generic Servlet and defined in the web.xml to load-on-startup. This worked fine in DEV/STG and it failed in PROD with the following error:
<Nov 8, 2005 1:28:59 AM EST> <Error> <HTTP> <BEA-101216> <Servlet: "QuartzScheduler" failed to preload on startup in Web application: "LRW".
javax.servlet.ServletException: org/quartz/SchedulerFactory
at weblogic.servlet.internal.ServletStubImpl.createServlet()Ljavax.servlet.Servlet;(ServletStubImpl.java:909)
at weblogic.servlet.internal.ServletStubImpl.createInstances()V(ServletStubImpl.java:873)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(Lweblogic.servlet.internal.RequestCallback;)V(ServletStubImpl.java:812)
at weblogic.servlet.internal.WebAppServletContext.preloadServlet(Ljava.lang.String;)V(WebAppServletContext.java:3281)
at weblogic.servlet.internal.WebAppServletContext.preloadServlets(Ljava.util.Vector;)V(WebAppServletContext.java:3238)
at weblogic.servlet.internal.WebAppServletContext.preloadServlets()V(WebAppServletContext.java:3224)
at weblogic.servlet.internal.WebAppServletContext.preloadResources()V(WebAppServletContext.java:3207)
at weblogic.servlet.internal.HttpServer.preloadResources()V(HttpServer.java:694)
at weblogic.servlet.internal.WebService.preloadResources()V(WebService.java:483)
at weblogic.servlet.internal.ServletInitService.resume()V(ServletInitService.java:30)
at weblogic.t3.srvr.SubsystemManager.resume()V(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume()V(T3Srvr.java:966)
at weblogic.t3.srvr.T3Srvr.run([Ljava.lang.String;)I(T3Srvr.java:361)
at weblogic.Server.main([Ljava.lang.String;)V(Server.java:32)
ISSUE:2
--------
Since we didnt get a clue for what was going on, we implemented in a different way instead of a servlet thats loads during start-up. We initialized the schduler in the contextInitialized() method of a class which implements ServletContextListener. This time it worked fine in DEV/STG environment and it again failed in PROD with the following error
<Nov 18, 2005 6:50:57 AM EST> <Error> <Deployer> <BEA-149231> <Unable to set the
activation state to true for the application LRW.
java.lang.NoClassDefFoundError: org/quartz/SchedulerFactory
at java.lang.Class.newInstanceCached(I)Ljava.lang.Object;(Unknown Source
)
at java.lang.Class.newInstance(I)Ljava.lang.Object;(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.registerEventListener(
Ljava.lang.String;)V(WebAppServletContext.java:2837)
at weblogic.servlet.internal.WebAppServletContext.activateFromDescriptor
s(Lweblogic.management.descriptors.WebDescriptorMBean;)V(WebAppServletContext.ja
va:2377)
at weblogic.servlet.internal.WebAppServletContext.activate()V(WebAppServ
letContext.java:5700)
at weblogic.servlet.internal.WebAppServletContext.setActive(Z)V(WebAppSe
rvletContext.java:5678)
at weblogic.servlet.internal.WebAppModule.activate(Ljava.lang.ClassLoade
r;)V(WebAppModule.java:846)
at weblogic.j2ee.J2EEApplicationContainer.activateModule(Lweblogic.utils
.classloaders.GenericClassLoader;Lweblogic.j2ee.J2EEApplicationContainer$Compone
nt;)V(J2EEApplicationContainer.java:3274)
at weblogic.j2ee.J2EEApplicationContainer.activate([Lweblogic.j2ee.J2EEA
pplicationContainer$Component;)V(J2EEApplicationContainer.java:2173)
at weblogic.j2ee.J2EEApplicationContainer.activate([Lweblogic.management
.configuration.ComponentMBean;)V(J2EEApplicationContainer.java:2146)
at weblogic.j2ee.J2EEApplicationContainer.activate()V(J2EEApplicationCon
tainer.java:2094)
at weblogic.management.deploy.slave.SlaveDeployer$Application.setActivat
ion(Z)V(SlaveDeployer.java:2976)
at weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForA
llApplications(ZZ)V(SlaveDeployer.java:1751)
at weblogic.management.deploy.slave.SlaveDeployer.resume()V(SlaveDeploye
r.java:359)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resum
e()V(DeploymentManagerServerLifeCycleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume()V(SubsystemManager.java:131
)
at weblogic.t3.srvr.T3Srvr.resume()V(T3Srvr.java:966)
at weblogic.t3.srvr.T3Srvr.run([Ljava.lang.String;)I(T3Srvr.java:361)
at weblogic.Server.main([Ljava.lang.String;)V(Server.java:32)
-------------
NOTE: The quartz-1.5.1.jar is available in the WEB-INF/lib folder along with all the depedent jars referred by quartz-1.5.1.jar.
The JDK used in STG is j2sdk1.4.2_04 and in PROD j2sdk1.4.2_05.
Will this cause the class-loader to behave differently. I am thinking of including the jar in the WL_CLASSPATH, but before that I want to get to the bottom of this.
Any suggestions or help would be appreciated.
-Jamil.
-
Issue with using Quartz-1.5.1 in Weblogic8.1(SP3) (2 messages)
- Posted by: Jamil Khan
- Posted on: November 21 2005 08:33 EST
Threaded Messages (2)
- Issue with using Quartz-1.5.1 in Weblogic8.1(SP3) by Jeryl Cook on November 23 2005 15:06 EST
- Issue with using Quartz-1.5.1 in Weblogic8.1(SP3) by Jamil Khan on November 25 2005 02:49 EST
-
Issue with using Quartz-1.5.1 in Weblogic8.1(SP3)[ Go to top ]
- Posted by: Jeryl Cook
- Posted on: November 23 2005 15:06 EST
- in response to Jamil Khan
i am using quartz 1.5.1 and weblogic(sp2) just fine...make sure u don't have a old quartz.jar around in both classpath(s). -
Issue with using Quartz-1.5.1 in Weblogic8.1(SP3)[ Go to top ]
- Posted by: Jamil Khan
- Posted on: November 25 2005 02:49 EST
- in response to Jeryl Cook
Thank you.
I have also noted the following interesting observation:
STEP: I Enabled the class loader debugging in Production and debug via the log.
While viewing the log, I noted an interesting distinction between Staging & production. In both the environments the class-loader is looking for the jars under a extract folder (temp). I have given below the path where it looks for in Staging & Production. The Staging path has the Quartz. jar whereas the production path doesn’t have it. I believe this copy is kept by Weblogic to load only the jars which have changed or newly added in WEB-INF/lib.
While it has added this correctly in STAGING, it hasn’t in PRODUCTION. I am not sure; copying manually the jar to this folder will work.
Staging Path
wls81/etg/nyclrws_12566_1/.wlnotdelete/extract/nyclrws_12566_1_LRW_LRW/jarfiles/WEB-INF/lib
Production Path
wls81/etg/nyclrwp_12566_1/.wlnotdelete/extract/nyclrwp_12566_1_LRW_LRW/jarfiles/WEB-INF/lib
Any idea why?