CentOS 上 WebLogic 常见错误与排查步骤
一、快速定位与通用排查
- 定位域目录与日志:进入 $DOMAIN_HOME,优先查看 servers/AdminServer/logs 下的 server.log、nohup.out 与 GC 日志,错误栈顶通常直接指向根因(如认证、端口、数据源、内存等)。
- 清理残留锁文件(异常关机或进程残留时):删除 edit.lok、config.lok、AdminServer.lok、EmbeddedLDAP.lok,以及 servers/AdminServer/data/store/ 下的 WLS_DIAGNOSTICS.DAT、_WLS_ADMINSERVER.DAT**,再启动。
- 端口与进程:用 netstat -tulpen | grep 7001 或 ss -lntp | grep 7001 检查监听;用 fuser -v -n tcp 7001 查占用进程,必要时 kill -9 ;若端口被占用,可在控制台或 config.xml 调整 。
- 防火墙与网络:开放管理端口(如 7001)或数据库端口(如 5432/3306):firewall-cmd --zone=public --add-port=7001/tcp --permanent && firewall-cmd --reload。
- 资源与权限:确认运行用户(如 weblogic)对 $DOMAIN_HOME 具备读写权限;检查系统资源(内存、句柄、进程数)是否受限。
二、高频错误与对应处理
| 症状 |
常见根因 |
解决要点 |
| 启动报 Authentication denied: Boot identity not valid |
boot.properties 中用户名/密码错误或变更后未更新 |
在 $DOMAIN_HOME/servers/AdminServer/security/boot.properties 中以明文写入 username=…、password=…,首次启动会自动加密;若仍失败,核对域目录是否正确、文件权限是否可读。 |
| 管理密码遗忘(WLS 7/8/10 等旧版本) |
无法覆盖内置 LDAP 用户口令 |
在 $DOMAIN_HOME/security 执行:java -cp $WL_HOME/server/lib/weblogic.jar weblogic.security.utils.AdminAccount <新用户> <新口令> .(末尾空格+点);随后删除 myserver/ldap/DefaultAuthenticatormyrealmInit.initialized 与 boot.properties,用新用户启动重建。 |
| 控制台登录后长时间卡顿或“转圈” |
SecureRandom 阻塞在 /dev/random |
在 setDomainEnv.sh 的 JAVA_OPTIONS 增加:-Djava.security.egd=file:/dev/./urandom,重启后通常立竿见影。 |
| 端口被占用(如 7001) |
其他进程占用或上次未正常关闭 |
用 fuser -v -n tcp 7001 查 PID 并释放,或改为新端口:控制台 Environment → Servers → AdminServer → Listen Port,或编辑 config.xml 的 。 |
| 数据库连不通(JDBC) |
库未起、连接串/账号错、网络不通、防火墙拦截、权限不足 |
确认数据库服务运行(如 systemctl status postgresql/mysqld)、核对 JDBC URL/用户名/口令、测试网络连通(如 telnet dbhost 5432)、开放防火墙端口、授予数据库用户权限。 |
| 启动报 Unable to obtain file lock |
残留 .lok 或目录被占用 |
删除 edit.lok、config.lok、AdminServer.lok、EmbeddedLDAP.lok 及 WLS_DIAGNOSTICS.DAT、_WLS_ADMINSERVER.DAT**;若某受管服务器 m1.lok 被占用,用 fuser -u m1.lok 查 PID 并 kill -9。 |
| 部署卡在 Initializing 或报组件缺失 |
缓存/临时文件异常、应用与数据源命名冲突 |
停止域,清理 $DOMAIN_HOME/servers/AdminServer/cache 与 tmp,再启动;若应用名与数据源名相同,重命名数据源。 |
| 内存不足或 GC 异常 |
堆/元空间过小、内存泄漏 |
在 setDomainEnv.sh 调整 -Xms/-Xmx(如 -Xms1024m -Xmx2048m),Java 8+ 关注 Metaspace;分析 GC 日志与线程栈,排查泄漏与对象生命周期。 |
三、关键文件与路径速查
- 启动身份:$DOMAIN_HOME/servers/AdminServer/security/boot.properties(明文保存,首次启动自动加密)。
- 域配置:$DOMAIN_HOME/config/config.xml(如修改 )。
- 锁与临时数据:edit.lok、config.lok、AdminServer.lok、EmbeddedLDAP.lok;$DOMAIN_HOME/servers/AdminServer/data/store/(如 WLS_DIAGNOSTICS.DAT、_WLS_ADMINSERVER.DAT**);$DOMAIN_HOME/servers/AdminServer/tmp/。
- 日志:$DOMAIN_HOME/servers/AdminServer/logs/server.log、nohup.out、GC 日志(若启用)。
- JVM 参数:$DOMAIN_HOME/bin/setDomainEnv.sh(如 JAVA_OPTIONS 增加 -Djava.security.egd=file:/dev/./urandom 或调整 -Xms/-Xmx)。
四、最小可行修复示例
- 修复启动认证失败
- 编辑 $DOMAIN_HOME/servers/AdminServer/security/boot.properties,写入明文账号密码;
- 执行启动脚本,首次启动会自动加密该文件;
- 若仍失败,核对 $DOMAIN_HOME 是否为目标域、文件权限是否足够。
- 解决控制台卡顿
- 编辑 $DOMAIN_HOME/bin/setDomainEnv.sh,在 JAVA_OPTIONS 增加:-Djava.security.egd=file:/dev/./urandom;
- 重启,观察控制台登录是否恢复正常。
- 清理锁文件后重启
- 依次删除 edit.lok、config.lok、AdminServer.lok、EmbeddedLDAP.lok;
- 删除 $DOMAIN_HOME/servers/AdminServer/data/store/ 下的 WLS_DIAGNOSTICS.DAT、_WLS_ADMINSERVER.DAT**;
- 重新启动域。
五、仍未解决时的建议
- 提供以下关键信息以便进一步定位:WebLogic 版本、JDK 版本、操作系统与内核版本、异常发生时间点与频率、相关日志片段(server.log、nohup.out、GC 日志)、是否做过密码/端口/数据源变更、网络与防火墙策略。