2014-10-28 96 views
0

我正在开发Intellij Idea中的Java Web App,目前我正在重写一些我们的服务器作业以使它们更具可定制性。在Intellij Idea中使用Tomcat进行调试创建Web App的两个部署

我遇到的问题是,当我使用Idea调试War文件时,我似乎获得了运行我的Scheduler Servlet的多个实例。这导致我得到'堆空间'错误。我需要在Intellij中运行,以便在服务器运行时调试和检查变量。

当我直接从命令行运行Tomcat时,不会出现此问题。

我已经放在通过零在我的servlet的init方法将为了得到一个堆栈跟踪上看到的servlet正在从初始化,这里的线路是结果:

第一个例外:

java.lang.ArithmeticException:/by zero 
at com.visibleequity.servlets.SchedulerContextServlet.init(SchedulerContextServlet.java:25) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5033) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5317) 
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:633) 
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114) 
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

第二个:

java.lang.ArithmeticException:/by zero 
at com.visibleequity.servlets.SchedulerContextServlet.init(SchedulerContextServlet.java:25) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5033) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5317) 
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:633) 
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1553) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source) 
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:622) 
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:569) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source) 
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(Unknown Source) 
at javax.management.remote.rmi.RMIConnectionImpl.access$300(Unknown Source) 
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown Source) 
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown Source) 
at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) 
at sun.rmi.transport.Transport$1.run(Unknown Source) 
at sun.rmi.transport.Transport$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at sun.rmi.transport.Transport.serviceCall(Unknown Source) 
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

我花了很多时间阅读的IntelliJ支持论坛,但一直没能找到,这似乎を解决方案RK。我认为这与Tomcat从webapps和server.xml自动部署有关(根据Servlet Init called twice)。

任何帮助或insignt到如何我可以防止这个问题将不胜感激。如果您需要我发布任何其他文件或信息,请在评论中告诉我。

在此先感谢您的帮助!

回答

0

看起来问题在于默认的启动脚本。默认情况下,intellij运行'catalina.bat'运行。当我将命令改为'catalina.bat start'时,问题就消失了。希望这可以帮助遇到此问题的其他人。