Weblogic Server启动失败抛出NullPointerException异常问题求助
WebLogic Server启动空指针故障解决方案
故障现象
启动WebLogic AdminServer过程中服务直接中止,抛出java.lang.NullPointerException异常,核心错误堆栈如下:
<AdminServer> <main> <<WLS Kernel>> <> <> <Server subsystem failed. Reason: java.lang.NullPointerException java.lang.NullPointerException at weblogic.deploy.internal.adminserver.DeploymentManager.getPendingDeploymentsForEditLockOwner(DeploymentManager.java:360) at weblogic.management.provider.internal.EditAccessImpl.removePendingUpdateTasks(EditAccessImpl.java:560) at weblogic.management.provider.internal.EditAccessImpl.undoUnsavedChanges(EditAccessImpl.java:555) at weblogic.management.provider.internal.EditAccessImpl.acquireLock(EditAccessImpl.java:264) at weblogic.management.provider.internal.EditAccessImpl.startEdit(EditAccessImpl.java:289) at weblogic.management.deploy.ApplicationsDirPoller.removeStagedFilesForAppsRemovedSinceLastShutdown(ApplicationsDirPoller.java:426) at weblogic.management.deploy.internal.DeploymentServerService.initializeApplicationPoller(DeploymentServerService.java:274) at weblogic.management.deploy.internal.DeploymentServerService.startAdminServerDeploymentService(DeploymentServerService.java:233) at weblogic.management.deploy.internal.DeploymentServerService.init(DeploymentServerService.java:154) at weblogic.management.deploy.internal.DeploymentPreStandbyServerService.start(DeploymentPreStandbyServerService.java:26) at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
故障原因
从堆栈链路可以定位到,异常出在部署子系统启动阶段:服务启动时会自动回滚上次异常退出时未保存的配置编辑会话、清理已删除应用的暂存文件,这个过程中如果残留的编辑锁损坏、待处理部署记录缺失对应属主信息,就会触发空指针导致启动中断。
修复步骤
按优先级依次操作,每步操作后尝试启动服务验证,无需一次性执行所有步骤:
- 第一步:清理临时缓存与残留锁文件
- 执行进程查询命令,杀掉所有和当前故障域相关的WebLogic Java进程,确保没有进程占用域目录文件
- 进入故障域的根目录,删除
servers/AdminServer/tmp路径下的全部内容,该目录存放运行时临时缓存,重启时会自动重建,不会影响正式配置 - 删除域根目录下
pending文件夹内的所有文件,该目录存储未激活的配置变更,异常退出时残留的损坏配置基本都存在这里 - 删除域根目录下的
edit.lok文件,该文件是配置编辑会话的锁文件,服务异常退出时不会自动释放,残留会导致配置编辑流程异常
- 第二步:清理异常部署配置记录
如果第一步操作后仍报错,停掉所有WebLogic进程,进入域目录下config/deployments路径,检查是否存在0字节的配置文件、名称乱码或和近期删除应用对应的异常部署条目,将异常条目移动到域目录外的备份位置(不要直接删除,方便后续回溯恢复),重复第一步的缓存、锁文件清理操作后再尝试启动 - 第三步:规避版本已知bug
如果使用的是12.1.3、12.2.1.2等早期12c版本,该空指针是官方确认的已知缺陷,触发点是应用目录轮询器处理关机前已删除应用时未做非空判断。可以修改AdminServer启动脚本,在启动参数中追加-Dweblogic.deploy.enableAppDirPolling=false临时关闭应用目录自动轮询,启动成功后登录控制台清理掉残留的异常部署任务,再移除该启动参数恢复正常配置即可。
内容的提问来源于stack exchange,提问作者Sweety23
相关产品推荐
相关产品推荐

