Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-14997

DWR Servlet tries to initialise too early when drafts are pointing to unsetup Confluence

    XMLWordPrintable

Details

    Description

      This probably doesn't affect customers much, but it affects me during development and may happen very occasionally to customers doing an upgrade.

      If you have a Web browser open and editing a page, then it sends out draft requests to Confluence periodically. If this happens while Confluence is being set up, then the following errors occur.

      2009-03-25 13:06:21,469 ERROR [http-8080-Processor25] [org.directwebremoting.spring.SpringCreator] error Error
      java.lang.InstantiationException: DWR can't find a spring config. See the logs for solutions
      	at org.directwebremoting.spring.SpringCreator.getInstance(SpringCreator.java:141)
      	at org.directwebremoting.spring.SpringCreator.getType(SpringCreator.java:106)
      	at org.directwebremoting.impl.DefaultCreatorManager.addCreator(DefaultCreatorManager.java:118)
      	at org.directwebremoting.impl.DefaultCreatorManager.addCreator(DefaultCreatorManager.java:100)
      	at org.directwebremoting.impl.DwrXmlConfigurator.loadCreate(DwrXmlConfigurator.java:274)
      	at org.directwebremoting.impl.DwrXmlConfigurator.loadAllows(DwrXmlConfigurator.java:224)
      	at org.directwebremoting.impl.DwrXmlConfigurator.configure(DwrXmlConfigurator.java:170)
      	at org.directwebremoting.impl.ContainerUtil.configureFromDefaultDwrXml(ContainerUtil.java:262)
      	at org.directwebremoting.impl.ContainerUtil.configureContainerFully(ContainerUtil.java:419)
      	at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:79)
      	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
      	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:127)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
      	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
      	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
      	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
      	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
      	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
      	at java.lang.Thread.run(Thread.java:613)
      

      The exception isn't propagated to the top, so the Servlet Container believes that the Servlet has been successfully initialised, so all calls to DWR once Confluence actually is set up (until it's restarted) are broken.

      Furthermore, the premature calls to the Spring container made by the DWRServlet's initialisation method can cause various things to break. Eg I just gave it a try and the Advanced Macros plugin wasn't enabled.

      2009-03-25 17:14:48,183 ERROR [http-8080-Processor19] [com.atlassian.plugin.DefaultPluginManager] addPlugins Unable to start the following plugins: confluence.macros.advanced
       -- referer: http://localhost:8080/confluence/setup/setuplicense.action | url: /confluence/setup/setupembeddeddb-default.action | userName: anonymous | action: setupembeddeddb-default
      2009-03-25 17:14:51,437 ERROR [http-8080-Processor21] [[Catalina].[localhost].[/confluence].[dwr-invoker]] invoke Servlet.service() for servlet dwr-invoker threw exception
      java.lang.NoClassDefFoundError: org/springframework/web/servlet/support/RequestContextUtils
      	at org.directwebremoting.spring.SpringCreator.getBeanFactory(SpringCreator.java:174)
      	at org.directwebremoting.spring.SpringCreator.getInstance(SpringCreator.java:132)
      	at org.directwebremoting.spring.SpringCreator.getType(SpringCreator.java:106)
      	at org.directwebremoting.dwrp.BaseCallMarshaller.findMethod(BaseCallMarshaller.java:221)
      	at org.directwebremoting.dwrp.BaseCallMarshaller.marshallInbound(BaseCallMarshaller.java:127)
      	at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:44)
      	at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
      	at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
      

      Attachments

        Activity

          People

            don.willis@atlassian.com Don Willis
            don.willis@atlassian.com Don Willis
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: