centos上weblogic部署应用失败怎么办
CentOS 上 WebLogic 部署失败的定位与修复步骤
一、先快速定位问题
- 查看关键日志,优先顺序:
- 域日志:$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log
- 部署服务日志:$DOMAIN_HOME/servers/AdminServer/logs/deploy/< 应用名> /*.log
- HTTP 访问日志(若通过控制台上传):$DOMAIN_HOME/servers/AdminServer/logs/access.log
- 在控制台执行操作时,打开浏览器开发者工具,查看 Network 的响应码与返回内容(例如 activate 阶段返回 500/400 的具体报错)。
- 确认目标服务器与端口可达:管理端口默认 7001,受管服务器端口在 config.xml 的 ListenPort 中;必要时用 netstat -tulpen | grep -E ‘7001|你的受管端口’ 检查监听。
- 检查系统时间与文件时间戳:执行 date、ls -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 Initializing 或 AppMerge failed to merge your application
原因:缓存/临时目录冲突、旧包残留或 web.xml 缺少 version 声明。
处理:- 停止服务;
- 清理 $DOMAIN_HOME/servers/AdminServer/tmp 与 $DOMAIN_HOME/servers/AdminServer/cache;
- 在 WEB-INF/web.xml 的 根标签上补充 version(如 2.4/2.5/3.0/4.0);
- 重新部署。
-
启动或部署时报: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!/…class 或 A version attribute was not found in element “web-app”
原因:web.xml 缺少 version 导致解析策略异常,或第三方 JAR 与容器冲突/损坏。
处理:- 在 web.xml 添加正确的 version;
- 清理 tmp/cache;
- 排查并移除冲突 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.sh 与 startWebLogic.sh)。
- 包与依赖:
- 使用 mvn clean package 重新打包,避免工作区污染;
- 移除应用内与容器冲突的 API/JAR(如 xml-apis、antlr、hibernate、javax.persistence 等),必要时在 weblogic.xml 使用 。
- 部署方式:优先使用“将此应用程序复制到每个目标”(nostage)以规避 stage 目录残留问题;集群环境确保各节点 Stage 目录一致。
- 清理动作:部署失败或反复失败时,按顺序执行“停服务 → 清 tmp/cache → 清 stage → 重启 → 部署”。
- 数据源:在控制台先“测试连接”,再绑定到应用模块,避免因连接失败导致部署回滚。
- 时间与上传:确保 系统时间正确、WAR 包完整,必要时更换上传方式(控制台/命令行)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上weblogic部署应用失败怎么办
本文地址: https://pptw.com/jishu/779211.html
