【发布时间】:2014-06-21 12:05:25
【问题描述】:
在生产服务器中部署我的应用时,我正在尝试一些问题。
我有一台用于开发的 ubuntu 机器,我的 servlet 在其中运行良好。一个月左右没有问题。
然后我将它部署到我的生产机器(VM debian)。我停止了tomcat,我将war文件复制到webapps文件夹并再次启动tomcat。
首先,当我尝试停止/启动/重启 tomcat 时,我得到了这个“错误”:
root@VMMachine-34199:~/folder# sudo /etc/init.d/tomcat6 restart
[ ok ] Stopping Tomcat servlet engine: tomcat6 Tomcat servlet engine is not running but pid file exists, cleaning up.
[ ok ] Starting Tomcat servlet engine: tomcat6.
root@VMMachine-34199:~/folder# sudo /etc/init.d/tomcat6 status
[ ok ] Tomcat servlet engine is running with pid 22627.
root@VMMachine-34199:~/folder# sudo /etc/init.d/tomcat6 status
[ ok ] Tomcat servlet engine is not running, but pid file exists..
我不知道该怎么做才能避免这种情况。总是发生在生产机器上。
之后,我又遇到了这个问题,不知道是不是和第一个有关。
在 catalina.out 我得到:
java.net.BindException: Address already in use <null>:9010
9010 是 tomcat 端口。此端口仅用于通过我拥有的其他服务连接到我部署的一场战争。使用 netstat -atnp |grep 9010 我只看到其他服务 LISTEN。
但在此之后,tomcat 似乎启动了,在我的 servlet 中注册了两个可用的资源,依此类推。
最后,我在 catalina.out 中得到了这个:
May 05, 2014 8:34:29 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat6/webapps/SERVLET/WEB-INF/lib/servlet-api-2.3.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
May 05, 2014 8:34:47 AM org.apache.tomcat.util.digester.Digester endElement
SEVERE: End event threw error
java.lang.OutOfMemoryError: PermGen space
May 05, 2014 8:34:47 AM org.apache.tomcat.util.modeler.Registry registerComponent
SEVERE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/SERVLET,J2EEApplication=none,J2EEServer=none
May 05, 2014 8:34:47 AM org.apache.catalina.startup.HostConfig deployDirectory
SEVERE: Error deploying web application directory SERVLET
java.lang.OutOfMemoryError: PermGen space
正如我已经说过的,在开发机器中,tomcat 工作正常并且从未给我这些错误,所以我不知道如何处理它们。
我正在使用这个库 Log4j 。我在这里读到:http://javarevisited.blogspot.com.es/2012/01/tomcat-javalangoutofmemoryerror-permgen.html 会导致 Permgem 错误。不知道能不能帮助你解决我的问题
现在我在启动时得到这个并且它停止了:
2014 年 5 月 5 日上午 8:42:17 org.apache.coyote.http11.Http11Protocol pause 信息:在 http-9010 上暂停 Coyote HTTP/1.1 2014 年 5 月 5 日上午 8:42:18 org.apache.catalina.core.StandardService 停止 信息:停止服务 Catalina 2014 年 5 月 5 日上午 8:42:18 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 严重:Web 应用程序 [/SERVLET] 似乎已经启动了一个名为 [Timer-0] 的线程,但未能停止它。这很可能造成内存泄漏。 2014 年 5 月 5 日上午 8:42:18 org.apache.coyote.http11.Http11Protocol 销毁 信息:在 http-9010 上停止 Coyote HTTP/1.1
【问题讨论】:
标签: java servlets tomcat6 permgen