You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glassfish应用REST接口故障求助:无源码仅持有EAR部署包

问题描述

我被指派维护一款部署在Glassfish上的REST接口应用,该接口运行异常,日志抛出大量错误。我无法修改源码重新编译,仅持有服务器上部署的EAR文件,且缺乏Glassfish使用经验。

已尝试操作

  • 停止Glassfish,删除generated文件夹后重启
  • 重新部署应用

服务器日志关键错误

java.net.SocketException: Too many open files (Accept failed)(持续出现)
java.io.IOException: Too many open files
at java.io.UnixFileSystem.createFileExclusively(Native Method)
javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
at com.tecytal.core.websocket.WebSocketServer.open(WebSocketServer.java:317)
JTS5022: Unexpected exception [{0}] from log.
com.sun.jts.CosTransactions.LogException: LOG026: Extent file open failure. Log exception at point 19. Failed to open extent.
An exception was not mapped due to exception mapper failure. The HTTP 500 response will be returned.
java.lang.NoClassDefFoundError: com/tecytal/core/rest/JsonResponse

环境信息

  • 服务器:CentOS Linux 7 (Core)
  • Glassfish:GlassFish Server Open Source Edition 5.0.1 (build 5)
  • MySQL:mysql Ver 14.14 Distrib 5.7.36, for Linux (x86_64) using EditLine wrapper

排查与解决建议

1. 优先解决「Too many open files」问题

这是引发后续一系列资源错误的核心原因:

  • 查看Glassfish进程的文件句柄限制:
    执行 ps aux | grep glassfish 获取进程ID(PID),再运行 cat /proc/<PID>/limits | grep "Max open files" 查看当前限制
  • 临时提升进程句柄上限:
    prlimit --nofile=65535:65535 --pid <PID>
  • 永久修改系统限制:
    编辑 /etc/security/limits.conf,添加:
    glassfish soft nofile 65535
    glassfish hard nofile 65535
    
    编辑 /etc/sysctl.conf,添加 fs.file-max = 655350,执行 sysctl -p 生效
  • 检查Glassfish连接配置:
    登录Glassfish管理控制台(默认端口4848),调整HTTP连接池的最大连接数、超时时间,避免连接泄漏

2. 处理「NoClassDefFoundError」错误

该问题说明EAR包缺失指定类或类加载异常:

  • 解压EAR包检查依赖:
    unzip your-app.ear -d ear-temp,在解压目录中搜索 JsonResponse.class,确认是否存在对应JAR包
  • 若缺失依赖,需从应用提供方获取完整依赖后重新打包EAR部署
  • 若类文件存在,调整Glassfish类加载优先级:在管理控制台的应用部署设置中,将类加载器优先级设为「优先加载应用内类」

3. 处理权限与事务日志错误

  • 401错误:检查WebSocket认证配置(如token、账号)是否与客户端匹配,确认Glassfish安全域设置正确
  • 事务日志错误(LOG026):解决文件句柄问题后通常会自动恢复;若仍存在,检查Glassfish事务日志目录(默认glassfish/domains/domain1/logs)的读写权限,确保glassfish用户有权限操作,必要时清空旧日志文件

内容的提问来源于stack exchange,提问作者Patitud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:43:13