title: How to enable server-side JavaScript debugger?
body: <p>I have Alfresco Community v5.2.0 and Alfresco Share v5.2.c that running on Apache Tomcat 7.0 Servlet/JSP Container, installed on CentOS 7.3.</p>
  
  <p>As far as I know, I can use two approach to enable the JavaScript debugging:</p>
  
  <ul>
  <li><p>Enable the debugger for every time when server starts; </p></li>
  <li><p>Enable the debugger when required.</p></li>
  </ul>
  
  <p>If I use first approach.</p>
  
  <p>For the repository tier I set the following property in <code>/tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties</code>:</p>
  
  <pre><code>...
  log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=on
  ...
  </code></pre>
  
  <p>For the web tier I set the following property in <code>/tomcat/webapps/share/WEB-INF/classes/log4j.properties</code>:</p>
  
  <pre><code>...
  log4j.logger.org.alfresco.web.scripts.AlfrescoScriptDebugger=on
  ...
  </code></pre>
  
  <p>As a result, I get an exception.</p>
  
  <p>alfresco.log:</p>
  
  <pre><code>16:24:57,771 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'Authentication' subsystem, ID: [Authentication, managed, passthru1]
  16:24:57,933 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'Authentication' subsystem, ID: [Authentication, managed, passthru1] complete
  16:24:57,933 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'Authentication' subsystem, ID: [Authentication, managed, ldap1]
  16:24:58,105 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'Authentication' subsystem, ID: [Authentication, managed, ldap1] complete
  16:24:58,105 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'Authentication' subsystem, ID: [Authentication, managed, alfrescoNtlm1]
  16:24:58,208 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'Authentication' subsystem, ID: [Authentication, managed, alfrescoNtlm1] complete
  16:25:00,084 DEBUG [com.alvexcore.repo.infavorites.InFavoritesAssociationPolicy] InFavoritesAssociationPolicy online
  16:25:00,459 INFO  [org.springframework.extensions.webscripts.TemplateProcessorRegistry] Registered template processor Repository Template Processor for extension ftl
  16:25:00,460 INFO  [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor Repository Script Processor for extension js
  16:25:00,520 WARN  [org.springframework.web.context.support.XmlWebApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webscript.org.alfresco.jsdebugger.get' defined in class path resource [alfresco/web-scripts-application-context.xml]: Cannot resolve reference to bean 'rhinoScriptDebugger' while setting bean property 'debugger'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rhinoScriptDebugger' defined in class path resource [alfresco/web-scripts-application-context.xml]: Invocation of init method failed; nested exception is java.awt.HeadlessException
  16:25:01,389 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Stopping 'Authentication' subsystem, ID: [Authentication, managed, passthru1]
  16:25:01,389 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Stopped 'Authentication' subsystem, ID: [Authentication, managed, passthru1]
  16:25:01,390 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Stopping 'Authentication' subsystem, ID: [Authentication, managed, ldap1]
  16:25:01,390 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Stopped 'Authentication' subsystem, ID: [Authentication, managed, ldap1]
  16:25:01,390 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Stopping 'Authentication' subsystem, ID: [Authentication, managed, alfrescoNtlm1]
  16:25:01,390 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Stopped 'Authentication' subsystem, ID: [Authentication, managed, alfrescoNtlm1]
  16:25:01,394 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webscript.org.alfresco.jsdebugger.get' defined in class path resource [alfresco/web-scripts-application-context.xml]: Cannot resolve reference to bean 'rhinoScriptDebugger' while setting bean property 'debugger'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rhinoScriptDebugger' defined in class path resource [alfresco/web-scripts-application-context.xml]: Invocation of init method failed; nested exception is java.awt.HeadlessException
          at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:334)
          at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1419)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1160)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
          at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
          at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
          at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
          at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)
          at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:938)
          at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
          at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
          at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
          at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
          at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:70)
          at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
          at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5524)
          at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
          at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
          at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
          at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
          at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:672)
          at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1859)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
  Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rhinoScriptDebugger' defined in class path resource [alfresco/web-scripts-application-context.xml]: Invocation of init method failed; nested exception is java.awt.HeadlessException
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1514)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
          at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
          at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
          at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
  -- VISUAL BLOCK --
  </code></pre>
  
  <p>If I use second approach.</p>
  
  <p>For the repository tier, I go through the link <code>http://...:8080/alfresco/service/api/javascript/debugger</code> then I see the following:</p>
  
  <p><a href="https://i.stack.imgur.com/eSZa2.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/eSZa2.png" alt="enter image description here"></a></p>
  
  <p>I press <kbd>Enable</kbd> and get exception again:</p>
  
  <p><a href="https://i.stack.imgur.com/Om719.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Om719.png" alt="enter image description here"></a></p>
  
  <p>alfresco.log:</p>
  
  <pre><code>org.springframework.extensions.webscripts.WebScriptException: 00300004 Wrapped Exception (with status template): null
          at org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:1138)
          at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:171)
          at org.alfresco.repo.web.scripts.RepositoryContainer$3.execute(RepositoryContainer.java:512)
          at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:464)
          at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:587)
          at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:656)
          at org.alfresco.repo.web.scripts.RepositoryContainer.executeScriptInternal(RepositoryContainer.java:428)
          at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:308)
          at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:399)
          at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:210)
          at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:132)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
          at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
          at org.alfresco.module.aosmodule.service.ContextRootFilter.doFilter(ContextRootFilter.java:93)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
          at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:68)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
          at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
          at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
          at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
          at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
          at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466)
          at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
          at java.lang.Thread.run(Thread.java:745)
  Caused by: java.awt.HeadlessException
          at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
          at java.awt.Window.&lt;init&gt;(Window.java:536)
          at java.awt.Frame.&lt;init&gt;(Frame.java:420)
          at javax.swing.JFrame.&lt;init&gt;(JFrame.java:233)
          at org.mozilla.javascript.tools.debugger.SwingGui.&lt;init&gt;(SwingGui.java:149)
          at org.springframework.extensions.webscripts.ScriptDebugger$AlfrescoGui.&lt;init&gt;(ScriptDebugger.java:165)
          at org.springframework.extensions.webscripts.ScriptDebugger.activate(ScriptDebugger.java:86)
          at org.springframework.extensions.webscripts.ScriptDebugger.show(ScriptDebugger.java:104)
          at org.springframework.extensions.webscripts.bean.JavascriptDebuggerPost.executeImpl(JavascriptDebuggerPost.java:61)
          at org.springframework.extensions.webscripts.DeclarativeWebScript.executeImpl(DeclarativeWebScript.java:235)
          at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:64)
          ... 37 more
  </code></pre>
  
  <p>What I'm doing wrong? How to enable server-side JavaScript debugger?</p>