Discussions

General J2EE: Issue with using Quartz-1.5.1 in Weblogic8.1(SP3)

  1. Issue with using Quartz-1.5.1 in Weblogic8.1(SP3) (2 messages)

    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.
  2. 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).
  3. 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?