idea系列之SSM项目问题排查
idea系列之SSM项目问题排查
常见开发问题
tomcat项目启动失败排查思路
1)检查tomcat是否正常启动/关闭
确认tomcat是否正常启动或关闭,通过查看端口号监听等进行排查(这种情况一般出现在同一个tomcat部署了多个不同的项目,而端口号冲突导致tomcat启动或者关闭异常。tomcat常用的默认端口号http port:8080、关闭端口:8005、ajx连接器:8009)
如果在同一个tomcat中部署了多个不同的项目,先后启动关闭的时候会出现端口号被占用的情况,那么极有可能出现8005端口占用而导致tomcat无法正常关闭。排查tomcat启动关闭,通过监听端口(一般直接查看tomcat启动端口的情况进行查杀)
# windows下查看端口号监听
netstat -ano | findstr 8080
# 杀死指定进程的tomcat
taskkill /PID [指定进程号] /F
# mac 下查看端口号监听
ps -ef | grep tomcat
ps -ef | grep 8080
排查上述因素,然后重启tomcat
2)检查tomcat启动日志
此处tomcat的启动日志具体要看idea中的配置,默认是存储在idea的工作目录下的/tomcat/目录(便于隔离环境,避免在同一个tomcat下发布多个不同的项目的冲突导致启动异常),如果在tomcat配置中指定的发布在tomcat的webapps下则去对应tomcat安装目录下的webapps查看。
windows:idea工作目录默认是在用户/AppData/Local/JetBrains/IntelliJIdea2024.1/tomcat(具体看个人配置)
- 按照ID分类,每个项目在不同的服务器部署,互不影响
自定义指定tomcat的webapps(在idea中的tomcat配置下的Deployment选项卡,编辑相应的发布目录),选择tomcat安装目录下的webapps,这样项目就会发布早webapps下,如果多个项目发布则可能出现一些冲突影响启动失败的问题,或者是一些残存项目启动失败而导致整个tomcat启动失败(有一些不是自身项目原因,而是其他项目启动失败导致tomcat启动失败)
或者是通过File=》Project Structure=》Artifacts 编辑,指定Output directory目录(对应到tomcat安装目录下的webapps)
war包和exploded包两种不同的方式本地启动部署
区分war和exploded两种不同的部署
war模式:将web工程以包的形式上传到服务器(发布模式:先打包再发布)
war exploded模式:将web工程以当前文件夹的位置关系上传到服务器(加载部署模式:先把文件夹、jsp页面、classes等移动到tomcat部署文件夹中,进行加载部署,支持热部署、用于开发时使用),在平时开发的时候如果要使用热部署,则可以对tomcat进行配置(on update action:update resources、on frame deactivation:update resources,在更新resources资源文件夹的时候触发加载)
idea 启动tomcat 一个或多个listeners 启动失败
排查思路:查看对应部署路径下的tomcat启动日志,查看具体报错信息(例如此处发布exploded位置默认是在idea的缓存工作目录下,如果指定了tomcat的webapps则对对应目录查看日志信息)
解决方案1:File=》Project Structure,排查部署的包的out put layout,确认output root节点(部署环境的文件结构):WEB-INF下时候有classes、lib内容(classes文件夹存放编译后的代码,lib文件夹存放项目依赖的jar)
确认是否缺少lib,如果缺少lib则右键选择lib=》Add Copy of=》Library Files,将缺失的jar加载进去
PS:这个方案排除(容易导入重复的依赖导致原有的更难排查,建议使用原有项目的构建配置,不要随意调整内容,否则又要重新拉项目)