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

WebLogic 12c部署WAR文件失败求助:Tomcat部署正常

Fixing AppMerge Failure When Deploying WAR to WebLogic 12c

Hey there, sorry to hear your WAR runs flawlessly on Tomcat but hits an AppMerge failure on WebLogic 12c—this is a super common pain point since the two containers have different validation rules and deployment logic. Let’s break down actionable troubleshooting steps based on the logs you shared:

1. Dig into the exact failure reason with AppMerge’s verbose mode

The core error in your logs is BEA-160228, which points to an AppMerge failure. The log even hints at using the -verbose flag to get detailed info—this is your best first step. Run this command to get the full breakdown of what’s causing the merge to fail:

java weblogic.appmerge.AppMerge -verbose -source your-application.war -output merged-application.war

This will spit out specific issues like malformed config files, conflicting dependencies, or unsupported specs that the server logs don’t show.

2. Check for WebLogic-specific configuration conflicts

WebLogic is stricter about WEB-INF configs than Tomcat. Here’s what to look for:

  • If you have a custom weblogic.xml, verify it uses WebLogic 12c-compatible syntax and doesn’t include deprecated tags. Double-check the XML namespace matches the 12c version.
  • Tomcat-specific files like context.xml won’t work natively in WebLogic. If you’re defining resources (like datasources) here, you’ll need to migrate those definitions to weblogic.xml or weblogic-application.xml.

3. Resolve dependency clashes

Tomcat and WebLogic ship with different built-in libraries, so conflicting jars in your WAR can break deployment:

  • Remove any jars from WEB-INF/lib that WebLogic already provides, like javax.servlet-api.jar, ejb-api.jar, or jsp-api.jar. WebLogic prioritizes its own versions, and duplicates cause merge errors.
  • Audit third-party jars in your WAR for compatibility with WebLogic 12c. Older versions of frameworks might have issues with Java EE 7 (which 12c supports).

4. Validate Java EE spec compliance

WebLogic enforces Java EE specs more strictly than Tomcat:

  • Confirm your WAR’s Servlet version matches what WebLogic 12c supports (Servlet 3.0 or 3.1). If you built it for Servlet 4.0+, that’ll cause issues.
  • Check your web.xml for the correct namespace and version. For Servlet 3.0, it should look like this:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

5. Address the cluster warning (optional but good practice)

Your domain log shows a BEA-003121 warning about the Managed Server’s listen address not being set. While this doesn’t directly cause the AppMerge failure, fixing it will prevent cluster-related issues once you get the app deployed properly. Make sure each Managed Server in your cluster has a valid listen address configured.

Start with the AppMerge verbose command first—it’ll give you the exact root cause, making the rest of the troubleshooting straightforward.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:47:24