GlassFish 5服务重启失败求助:部署应用后无法启动服务
针对GlassFish 5 重启失败的排查方案
既然你已经顺利完成安装、域创建和应用部署,只是重启服务后无法完全启动,结合我处理这类问题的实战经验,给你几个针对性的排查方向:
1. 清理域的残留锁文件
GlassFish启动时会在域目录生成锁文件,异常停止后这些文件可能没被自动清理,直接阻塞下次启动:
- 定位你的域目录(默认路径是
glassfish5/glassfish/domains/[你的域名]) - 进入
config子目录,检查是否存在domain.xml.lck或server.pid文件 - 如果有,先终止所有关联的Java进程(执行
ps aux | grep java找到GlassFish相关进程,再用kill -9 [进程ID]结束),然后删除这些锁文件,再尝试重启服务
2. 校验文件权限配置
停止再启动后,很可能出现GlassFish进程对核心文件/目录无读写权限的情况:
- 用
ls -ld glassfish5/glassfish/domains/[你的域名]查看域目录的权限及所有者 - 确保启动GlassFish的用户对该目录及子文件拥有
rwx权限 - 强烈建议不要用
root用户运行GlassFish,创建专门的服务用户来管理会更安全稳定
3. 查看GlassFish原生日志(比journal-xe更精准)
journal-xe仅记录系统层面的日志,GlassFish自身的日志才能直击问题根源:
- 进入域目录下的
logs文件夹,重点查看server.log和domain.log - 筛选重启时段的
ERROR或SEVERE级别的日志,常见问题比如端口被占用、数据库连接池未释放、应用线程未正常销毁等 - 若日志提示端口(如8080、4848)被占用,可执行
netstat -tulpn | grep [端口号]定位占用进程,终止后再重启
4. 排查应用部署的残留问题
如果部署的应用在停止时未正常卸载,可能导致重启时加载失败:
- 先执行
asadmin undeploy [应用名]卸载部署的应用,再尝试重启GlassFish - 若卸载后能正常启动,说明问题出在应用本身——比如应用的
shutdown钩子未正确执行,或者存在内存泄漏导致进程无法完全终止
5. 验证JDK版本兼容性
GlassFish 5对JDK版本有严格要求,不兼容的JDK会导致各种启动异常:
- GlassFish 5官方推荐使用JDK 8(Oracle JDK 8或OpenJDK 8),避免使用JDK 9及以上版本,这类版本会引发大量兼容性问题
- 检查当前GlassFish使用的JDK:执行
asadmin version查看输出中的JDK版本,或者查看域目录下config/domain.xml里的java-home配置项
如果按上述步骤排查后仍无法解决,建议把server.log中重启阶段的关键错误日志片段贴出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者MbaiMburu
相关产品推荐
相关产品推荐

