Skip to content

fix(sitemanage): drop non-existent verbose property on CXF LoggingFeature bean - #204

Merged
natechadwick merged 1 commit into
mainfrom
bugfix/168-cxf-loggingfeature-verbose
Sep 8, 2026
Merged

fix(sitemanage): drop non-existent verbose property on CXF LoggingFeature bean#204
natechadwick merged 1 commit into
mainfrom
bugfix/168-cxf-loggingfeature-verbose

Conversation

@natechadwick-intsof

@natechadwick-intsof natechadwick-intsof commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Drops the non-existent verbose property from the cxfLoggingFeature Spring bean in projects/sitemanage/.../sitemanage-beans.xml. Without this fix the Rhythmyx webapp fails to start: Spring throws NotWritablePropertyException on the bean, the root ApplicationContext fails to refresh, and Jetty reports the context as UNAVAILABLE.

Why

org.apache.cxf.feature.LoggingFeature in CXF 3.5.11 exposes only two setters — setLimit(int) and setPrettyLogging(boolean) — plus the LoggingFeature(String, String, int, boolean, boolean) constructor (inLocation, outLocation, limit, prettyLogging, showBinary). The verbose flag was removed when the inner LoggingFeature$Portable class was introduced in 3.5.x. The sitemanage-beans.xml bean added by the T2.3 hardening PR (#169, issue #168) was written against the older 3.4.x API and still set verbose=false. Verified by javap on cxf-core-3.5.11.jar:

public class org.apache.cxf.feature.LoggingFeature extends
    org.apache.cxf.feature.DelegatingFeature<...LoggingFeature$Portable> {
  ...
  public void setLimit(int);
  public int getLimit();
  public boolean isPrettyLogging();
  public void setPrettyLogging(boolean);
}

Cascade on startup

cxfLoggingFeature bean (verbose setter missing)
  -> NotWritablePropertyException
    -> rest-jax-rs bean fails (references cxfLoggingFeature)
      -> Spring root context fails to refresh
        -> Rhythmyx webapp UNAVAILABLE

CI_Home and EI_Home start fine because they don't share the root context.

What stays

limit=4096 and prettyLogging=false remain in the bean. They were the actual safety controls the original analysis intended:

  • limit=4096 caps the bytes the interceptor writes; the rest is truncated.
  • prettyLogging=false keeps the output single-line, faster, smaller.

The original analysis doc (docs/.../issues/168-t2-3-cxf-logging-hardening.md) is updated in this PR with a post-merge revision note so the verbose property isn't re-added by a future reader.

Verification

  • python3 -c "import xml.etree.ElementTree as ET; ET.parse('.../sitemanage-beans.xml')" -> well-formed.
  • After rebuild + deploy: Rhythmyx webapp reaches AVAILABLE; the cxfLoggingFeature / rest-jax-rs / NotWritablePropertyException chain is gone from jetty/base/logs/server.log.

Out of scope

Refs #168

Co-Authored by Mavis Mavis-Code using MiniMax-M3 with agent mavis.

…ture bean

The cxfLoggingFeature bean in projects/sitemanage/.../sitemanage-beans.xml
sets a 'verbose' property on org.apache.cxf.feature.LoggingFeature, but CXF
3.5.11 does not expose a setVerbose setter on that class. The 'verbose' flag
was removed when the inner LoggingFeature$Portable class was introduced in
3.5.x; the public setters on LoggingFeature are now only setLimit(int) and
setPrettyLogging(boolean) (plus the (String, String, int, boolean, boolean)
constructor for inLocation, outLocation, limit, prettyLogging, showBinary).

Spring's BeanWrapper throws NotWritablePropertyException at startup when
trying to apply the 'verbose' property. That cascades: cxfLoggingFeature
bean fails -> rest-jax-rs bean (which references it) fails -> root Spring
ApplicationContext fails to refresh -> the Rhythmyx webapp goes UNAVAILABLE.
Confirmed against the cxf-core-3.5.11.jar on the runtime classpath; javap
on org.apache.cxf.feature.LoggingFeature shows only setLimit and
setPrettyLogging.

The limit=4096 and prettyLogging=false settings already provide the actual
safety controls (cap logged payload bytes, single-line summary format) and
remain in place. The analysis doc for the original T2.3 PR has a
post-merge revision note documenting the 3.5.x API change so the verbose
property doesn't get re-added.

Refs #168

> Co-Authored by Mavis Mavis-Code using MiniMax-M3 with agent mavis.
@natechadwick
natechadwick merged commit 9367765 into main Sep 8, 2026
3 checks passed
@natechadwick
natechadwick deleted the bugfix/168-cxf-loggingfeature-verbose branch September 8, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants