温馨提示×

centos上weblogic部署应用失败怎么办

小樊
39
2025-12-23 17:07:39
栏目: 智能运维

CentOS 上 WebLogic 部署失败的定位与修复步骤

一、先快速定位问题

  • 查看关键日志,优先顺序:
    1. 域日志:$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log
    2. 部署服务日志:$DOMAIN_HOME/servers/AdminServer/logs/deploy/<应用名>/*.log
    3. HTTP 访问日志(若通过控制台上传):$DOMAIN_HOME/servers/AdminServer/logs/access.log
  • 在控制台执行操作时,打开浏览器开发者工具,查看 Network 的响应码与返回内容(例如 activate 阶段返回 500/400 的具体报错)。
  • 确认目标服务器与端口可达:管理端口默认 7001,受管服务器端口在 config.xmlListenPort 中;必要时用 netstat -tulpen | grep -E ‘7001|你的受管端口’ 检查监听。
  • 检查系统时间与文件时间戳:执行 datels -l;若工程包时间“超前”服务器时间,部署阶段可能报 EOF/解析失败
  • 确认受管服务器已启动:控制台 Servers 页面查看 State=RUNNING,否则 activate 会报 no targets are reachable

二、常见报错与对应修复

  • 激活时报错:java.io.IOException: Reached EOF
    原因:工程包时间戳“超前”服务器时间或上传中断。
    处理:校准系统时间(如 ntpdate 校时),重新打包并上传,再部署。

  • 激活时报错:[DeploymentService:290049] Deploy failed … no targets are reachable
    原因:没有可达的受管服务器目标。
    处理:启动受管服务器(或集群节点),确保 State=RUNNING,再执行激活。

  • 部署阶段卡在 distribute InitializingAppMerge failed to merge your application
    原因:缓存/临时目录冲突、旧包残留或 web.xml 缺少 version 声明。
    处理:

    1. 停止服务;
    2. 清理 $DOMAIN_HOME/servers/AdminServer/tmp$DOMAIN_HOME/servers/AdminServer/cache
    3. WEB-INF/web.xml 根标签上补充 version(如 2.4/2.5/3.0/4.0);
    4. 重新部署。
  • 启动或部署时报:Unsupported major.minor version 52.0
    原因:应用用 JDK 8 编译,但 WebLogic 运行时使用了 JDK 7 或更低版本。
    处理:在域的 bin/startWebLogic.sh 中显式设置 JAVA_HOME 指向 JDK 8,并确保 ps -ef | grep java 看到的进程使用了正确 JDK。

  • 解析 WAR 时报:java.util.zip.ZipException: Error opening file … Could not find End Of Central Directory
    原因:上传的 WAR 包损坏stage 目录残留旧文件
    处理:重新打包并校验(如 unzip -t),清理 stage 目录(如 $DOMAIN_HOME/servers/<目标>/stage/),再部署。

  • 部署时报:Unable to parse class file: zip:…/xxx.jar!/…classA version attribute was not found in element “web-app”
    原因:web.xml 缺少 version 导致解析策略异常,或第三方 JAR 与容器冲突/损坏
    处理:

    1. web.xml 添加正确的 version
    2. 清理 tmp/cache
    3. 排查并移除冲突 JAR(如旧版 XML/解析库),必要时更换驱动版本。
  • 类加载冲突(如 ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory
    原因:应用打包了与容器冲突的 xml-apis.jar 等。
    处理:从 WEB-INF/lib 移除 xml-apis-*.jar 等冲突依赖,优先使用容器提供的 API。

  • JDBC 相关:Cannot startup connection pool … Cannot load driver class
    原因:驱动未放置到 $DOMAIN_HOME/lib 或未在 CLASSPATH 中,或 JDBC URL/驱动类名 配置错误。
    处理:将数据库驱动(如 ojdbc8.jar)放到 $DOMAIN_HOME/lib,重启后在控制台测试连接,确认 URL/用户名/密码/驱动类 正确。

三、部署前后建议的排查清单

  • 环境一致性:确认 JDK 版本WebLogic 版本匹配,且进程实际使用的 JAVA_HOME 与预期一致(检查 setDomainEnv.shstartWebLogic.sh)。
  • 包与依赖:
    • 使用 mvn clean package 重新打包,避免工作区污染;
    • 移除应用内与容器冲突的 API/JAR(如 xml-apis、antlr、hibernate、javax.persistence 等),必要时在 weblogic.xml 使用
  • 部署方式:优先使用“将此应用程序复制到每个目标”(nostage)以规避 stage 目录残留问题;集群环境确保各节点 Stage 目录一致
  • 清理动作:部署失败或反复失败时,按顺序执行“停服务 → 清 tmp/cache → 清 stage → 重启 → 部署”。
  • 数据源:在控制台先“测试连接”,再绑定到应用模块,避免因连接失败导致部署回滚。
  • 时间与上传:确保 系统时间正确WAR 包完整,必要时更换上传方式(控制台/命令行)。

0