vlambda博客
学习文章列表

总结一下Tomcat遇到的几个问题

会遇到这样的问题,大概率是因为对Tomcat以及jvm不熟,因此每一次碰到问题时,都要把问题记录一下,理解一下为什么会出现这种问题。

1
jrebel的team url问题
team url经常会过期,网上能找到可以用的不容易
解决:使用http://jrebel.yanjiayu.cn:9001/64245b6b-ef68-4bdc-aabf-7f8e85a540e4
后面UUID部分可以替换,在线生成https://www.uuidgenerator.net/
2
jvm内存不足
今天在启动了几次之后,突然maven不能正常import,并且在maven构建过程中或者后期compiler过程中报错:
  
    
    
  
# There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (malloc) failed to allocate 1338256 bytes for Chunk::new
 
   
   
 

解决:
  • 一开始以为是虚拟机内存设置的太少,后面在D:\apache tomcat\apache-tomcat-8.0.51\bin目录下的catalina.bat目录下设置了jvm启动参数-Xss:
    set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m,仍然不行; catalina.bat是Tomcat中最重要的脚本,比如Tomcat的启动和关闭都是catalina.bat完成的。Tomcat会在终端打印catalina log,见图2
    图1 catalina.bat路径
总结一下Tomcat遇到的几个问题
图2 catalina log
  • 第二步:查看内存,发现内存占用也才百分之50左右;
  • 最后,查看Tomcat相关进程是否未关闭,手动kill了1099和8080端口的所有进程;最后解决这个问题。
提问:为什么Tomcat在shutdown之后依然有进程在运行???
3
Artifact XXX:war

报错提示:Artifact XXX:war: Error during artifact deployment. See server log for details.

问题:Tomcat启动就报这个错;主要是因为配置的时候war和war explode两种模式不一致。
解决:网上查了资料,这是一个常见的问题,的确也是我第二次碰到了,但是我依然不知道如何解决,现在可以总结:改变了artifact,然而Tomcat的配置中的artifact没有重新配置,就会报错。
artifact包括两种模式:
  • war:发布模式,先打成war包,再发布
  • war explode:直接把文件夹、视图页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。这种方式支持热部署,一般在开发的时候也是用这种方式;在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来;
explode模式下的:on update action和on frame deactivation支持update classes and resources选项(热部署)
总结一下Tomcat遇到的几个问题
步骤:1.file---project structure-》
总结一下Tomcat遇到的几个问题

总结一下Tomcat遇到的几个问题
总结一下Tomcat遇到的几个问题
2.步骤中最后一步一定是在deployment处;
我碰到过即使看起来都是war模式,都是一致的,却报这个错误,这是因为修改了artifact模式之后,最后没有在deployment处重新配置。
4
Tomcat启动到org.apache.catalina.startup.Catalina.start Server star就停止问题
这个也是catalina.bat中配置文件中配置项写的不对,导致Tomcat启动出错,我在修复了第3个小问题之后,这个问题就不存在了。
5
端口占用问题
这个就比较简单了,windows中的解决方法:
eg:查看1099端口是否占用,并kill
  • netstat -aon|findstr 1099
    发现1099处的pid是19128
  • taskkill -f -pid 19128
6
总结
  • Tomcat还是很难的,jvm等等里面的内容有待学习;
  • 很多问题,光看理论是不够的,希望能够多多碰到问题,促使我学习进步。
  • 有空会再去回味一下jvm虚拟机那本书

我就知道你“在看”