正常项目无法访问(Linux 服务器),启动tomcat时卡在下图位置,项目无法启动。
1、先检查tomcat日志、项目日志没有报错信息,且没再产生新的日志信息。
2、jdk、tomcat 、 jvm 配置,服务器环境、内存、存储没有问题。
3、使用jconsole 检查启动线程
(1)修改tomcat catalina.sh
JAVA_OPTS 中加入以下参数
-Dcom.sun.management.jmxremote.port=8989 //连接端口,自定义不要与已有的端口冲突
-Dcom.sun.management.jmxremote.rmi.port=8989 //这句一定要添加,不添加就无法成功
-Dcom.sun.management.jmxremote.authenticate=false //不需要密码登陆
-Dcom.sun.management.jmxremote.ssl=false //不需要安全证书
-Djava.rmi.server.hostname=10.10.1.1"//服务器的ip
(2)另一台运维windows服务器上进入cmd终端输入jconsole。远程进程,不需要输用户名、口令,连接。
查看 localhost-startStop-1 线程,发现锁定信息
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
- 已锁定 java.lang.Class@2eaf5c32
确定问题原因:
如果程序采用到Java.awt进行图形处理,这就需要系统提供一个可供图形处理的图形环境,此Linux没有该环境,这样就会导致运算错误。需要启用headless模式,headless模式是在缺少显示屏、键盘或者鼠标是的系统配置。
解决办法:
在tomcat环境下修改catalina.sh
在JAVA_OPTS中加上一句 -Djava.awt.headless=true