This discussion is archived
6 Replies Latest reply: Feb 6, 2013 2:01 PM by 947278 RSS

Servlet exception when deploying a WAR to WebLogic 10.3.5

947278 Newbie
Currently Being Moderated
Hello,

I've got a web application in a war file that I am attempting to deploy to a test environment which runs WebLogic 10.3.5. I've got a couple of developer environments that run WebLogic 12.1.1 and 10.3.4. The application can be deployed and started on 10.3.4 and 12.1.1 without any problems. It will deploy to the server running 10.3.5, but when I attempt to start the application (Start > Servicing All Requests) then I'm getting an error.

javax.servlet.ServletException: [HTTP:101249][ServletContext@21871606[app:HelloWeb module:HelloWeb.war path:/HelloWeb spec-version:2.5]]: Servlet class for servlet helloweb could not be loaded because the requested class was not found in the classpath . java.lang.ClassNotFoundException


The error log doesn't offer me any additional information about the cause of the error, just this error message and a stack trace of weblogic APIs that I'm not familiar with. Upgrading from 10.3.5 to a newer version of WebLogic isn't an option -- I don't own the test environment and I'm not allowed to make changes to the application server version. I've spent a the last two days trolling for help on this error message and I'm out of ideas. Any help would be welcome.
  • 1. Re: Servlet exception when deploying a WAR to WebLogic 10.3.5
    Kalyan Pasupuleti-Oracle Expert
    Currently Being Moderated
    Hi,

    Can you place complete error stack to get actual cause of this issue.

    Regards,
    Kal
  • 2. Re: Servlet exception when deploying a WAR to WebLogic 10.3.5
    947278 Newbie
    Currently Being Moderated
    Sure. Right now I was trying this on just the AdminServer, but it will give the exact same problem when it's run on a managed server as well.


    ####<Feb 6, 2013 8:25:14 AM EST> <Error> <Deployer> <LOCALSERVER> <AdminServer> <[STANDBY] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1360157114674> <BEA-149265> <Failure occurred in the execution of deployment request with ID '1360157109162' for task '2'. Error is: 'weblogic.application.ModuleException: [HTTP:101216]Servlet: "helloweb" failed to preload on startup in Web application: "HelloWeb.war".
    javax.servlet.ServletException: [HTTP:101249][ServletContext@18469014[app:HelloWeb module:HelloWeb.war path:/HelloWeb spec-version:2.5]]: Servlet class for servlet helloweb could not be loaded because the requested class was not found in the classpath .
    java.lang.ClassNotFoundException: .
         at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:551)
         at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1985)
         at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1959)
         at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1878)
         at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3153)
         at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1508)
         at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
         at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
         at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
         at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:43)
         at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
         at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
         at weblogic.deploy.internal.targetserver.operations.StartOperation.doCommit(StartOperation.java:140)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
         at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
         at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
         at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    '
    weblogic.application.ModuleException: [HTTP:101216]Servlet: "helloweb" failed to preload on startup in Web application: "HelloWeb.war".
    javax.servlet.ServletException: [HTTP:101249][ServletContext@18469014[app:HelloWeb module:HelloWeb.war path:/HelloWeb spec-version:2.5]]: Servlet class for servlet helloweb could not be loaded because the requested class was not found in the classpath .
    java.lang.ClassNotFoundException: .
         at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:551)
         at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1985)
         at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1959)
         at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1878)
         at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3153)
         at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1508)
         at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
         at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
         at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
         at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:43)
         at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
         at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
         at weblogic.deploy.internal.targetserver.operations.StartOperation.doCommit(StartOperation.java:140)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
         at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
         at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
         at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

         at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1510)
         at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
         at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
         at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
         at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:43)
         at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
         at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
         at weblogic.deploy.internal.targetserver.operations.StartOperation.doCommit(StartOperation.java:140)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
         at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
         at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
         at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    Caused By: javax.servlet.ServletException: [HTTP:101249][ServletContext@18469014[app:HelloWeb module:HelloWeb.war path:/HelloWeb spec-version:2.5]]: Servlet class for servlet helloweb could not be loaded because the requested class was not found in the classpath .
    java.lang.ClassNotFoundException: .
         at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:551)
         at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1985)
         at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1959)
         at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1878)
         at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3153)
         at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1508)
         at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
         at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
         at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
         at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
         at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
         at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:43)
         at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
         at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
         at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
         at weblogic.deploy.internal.targetserver.operations.StartOperation.doCommit(StartOperation.java:140)
         at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
         at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
         at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
         at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
         at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
         at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    >
  • 3. Re: Servlet exception when deploying a WAR to WebLogic 10.3.5
    david.karr Pro
    Currently Being Moderated
    The proper specification of a servlet in the web.xml file requires a "servlet" element with a "servlet-name" element and a "servlet-class" element, both of which have to be non-empty, and the value of the "servlet-class" element has to correspond to a file found in WEB-INF/classes, with a directory structure corresponding to the package structure of the fully-qualified "servlet-class" value.

    Assuming you aren't editing this output you're showing us, you're showing us the following exception message:

    java.lang.ClassNotFoundException: .

    The format of this message is supposed to be this:

    java.lang.ClassNotFoundException: <value of "servlet-class" element>.

    This seems to imply that the value of your "servlet-class" element in the "web.xml" file is empty or missing.
  • 4. Re: Servlet exception when deploying a WAR to WebLogic 10.3.5
    947278 Newbie
    Currently Being Moderated
    That has me confused even more. Here's the servlet that's being mentioned in the web.xml:

    <servlet>
         <servlet-name>helloweb</servlet-name>
         <servlet-class>
              org.springframework.web.servlet.DispatcherServlet               
         </servlet-class>
         <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
         <servlet-name>helloweb</servlet-name>
         <url-pattern>*.htm</url-pattern>
    </servlet-mapping>


    Based on what you've told me, it isn't finding the Spring dispatcher servlet. The appropriate JAR file is being copied to the WEB-INF/lib folder of the application's WebLogic deployment folder. My weblogic.xml file already has <prefer-web-inf-classes>true</prefer-web-inf-classes>. Is there a setting that I've missed on the server to ensure that it loads JARs properly? All I did was install WebLogic 10.3.5 and immediately use the AdminServer.
  • 5. Re: Servlet exception when deploying a WAR to WebLogic 10.3.5
    david.karr Pro
    Currently Being Moderated
    That looks correct.

    Do you have any white space before and after the class name? If so, try making it a single line, like:

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    This shouldn't be required.
  • 6. Re: Servlet exception when deploying a WAR to WebLogic 10.3.5
    947278 Newbie
    Currently Being Moderated
    I do have whitespace around the servlet-class definition.

    This turned out not to be a problem. Your advice did get me to examine my web.xml and I noticed that load-on-startup was set to 1 for helloweb. Immediately following helloweb's servlet definition was the definition for another servlet for using cewolf graphing. This servlet also has load-on-startup set to 1.

    As soon as I changed the load order to force it to be sequential (helloweb = 1, cewolf servlet = 2), everything worked fine. It also works fine on the 12c server. I could probably reverse the load order or simply take the load order specification out, but this is the first arrangement that I tried and it works.

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points