使用Tomcat在Intellij Idea中进行调试可以创建两个Web App部署 [英] Using Tomcat to debug in Intellij Idea creates two deployments of Web App

查看:174
本文介绍了使用Tomcat在Intellij Idea中进行调试可以创建两个Web App部署的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在Intellij Idea中开发一个Java Web App,目前我正在重写我们的一些服务器作业,以使它们更具可定制性。

I am developing a Java Web App in Intellij Idea and currently I am re-writing some of our server jobs to make them more customizable.

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

The problem I have come across is that when I debug the War file using Idea, I seem to get multiple instances of my Scheduler Servlet running. This leads me to get an 'out of heap space' error. I need to run in Intellij so that I can debug and check variables as my server is running.

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

This problem does not occur when I run Tomcat straight from the command line.

我放置了一个在我的servlet的init方法中除以零的行,以获得堆栈跟踪以查看servlet的初始化位置,结果如下:

I've placed a line that divides by zero in my servlet's init method in order to get a stack trace to see where the servlets are being initialized from and here are the results:

第一个异常:

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支持论坛上阅读但是避风港找不到似乎有用的解决方案了。我认为它与Tomcat从webapps以及server.xml自动部署有关(根据 Servlet Init调用两次)。

I've spent a lot of time reading on the Intellij Support Forum but haven't been able to find a solution that seems to work. I think it has something to do with Tomcat autodeploying from webapps as well as from server.xml (as per Servlet Init called twice).

我将非常感谢任何有关如何防止此问题的帮助或帮助。如果您需要我发布任何其他文件或信息,请在评论中告诉我。

Any help or insignt into how I can prevent this problem would be much appreciated. If you need me to post any additional files or information please let me know in the comments.

提前感谢您的帮助!

推荐答案

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

It looks like the problem was with the default startup script. By default intellij was running 'catalina.bat' run. When I changed the command to 'catalina.bat start' the problem went away. Hope this can help anyone else that encounters this problem.

这篇关于使用Tomcat在Intellij Idea中进行调试可以创建两个Web App部署的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆