Prerequisites:
Recently we faced an issue: a large EPCIS payload caused CPI’s SOAP Adapter to crash with pretty technical error text:
Nothing in this exception suggests “your XML is too big” and the message was only 10M which is below default 40M SOAP Adapter max.
The Real Cause: Apache CXF XML Security Limits
CPI’s SOAP Adapter is built on Apache CXF and Apache Camel.
Before CPI ever sees the message, CXF enforces several safety thresholds:
Our EPCIS messages contained more than 100K child elements — far beyond the 50,000 limit.
Once CXF hits a threshold, it stops parsing.
Camel then tries to convert an incomplete payload into a String or DOM — and fails with a meaningless type-conversion exception.
In many regulatory or B2B integrations, the message structure is dictated by standards.
In this case, reducing batch size or restructuring XML was not feasible:
the EPCIS payloads legitimately exceeded CXF’s defaults.
So we raised an SAP ticket.
SAP’s Proposed Solution
SAP confirmed the issue and outlined the steps needed to resolve it:
maxChildElements limit. Choose a value based on your maximal observed EPCIS batch size.💡Why a Tenant Restart Is Required — Even in a CI/CD Cloud
This is a common point of confusion.
CPI feels like a CI/CD-managed cloud service, so why does SAP need a restart? Here’s the reason in simple terms:
When SAP changes CXF parser limits, they are modifying JVM-level runtime properties that Camel and CXF read only at startup.
Just like changing JVM memory parameters, thread pools, or parser configurations:
these cannot be hot-reloaded.
So the restart isn’t a flaw — it’s a consequence of:
It is normal and expected behaviour
maxChildElements.You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 29 | |
| 20 | |
| 18 | |
| 15 | |
| 14 | |
| 12 | |
| 11 | |
| 10 | |
| 9 | |
| 8 |