[ 
https://issues.apache.org/jira/browse/TOMEE-4657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard Zowalla closed TOMEE-4657.
----------------------------------
    Fix Version/s: 11.0.0
       Resolution: Fixed

> Bean Validation XML config fails on stock Plume: MOXy beats JAXB RI in 
> ServiceLoader
> ------------------------------------------------------------------------------------
>
>                 Key: TOMEE-4657
>                 URL: https://issues.apache.org/jira/browse/TOMEE-4657
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>            Reporter: Markus Jung
>            Assignee: Markus Jung
>            Priority: Major
>             Fix For: 11.0.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> On an out-of-the-box TomEE 11 Plume server, every Bean Validation path that 
> reads {{validation.xml}} or constraint-mapping XML descriptors fails. Plume 
> ships two JAXB providers side by side: EclipseLink MOXy 
> ({{eclipselink-5.0.1.jar}}) and the JAXB RI ({{jaxb-runtime-4.0.4.jar}}). 
> EclipseLink registers a {{jakarta.xml.bind.JAXBContextFactory}} service, and 
> ServiceLoader picks it over the JAXB RI.
> The problem is a mismatch, not a missing feature. Apache BVal rewrites 
> namespaces while it parses {{validation.xml}} and constraint-mapping 
> descriptors. MOXy rejects that rewriting, so JAXBContext creation fails and 
> the whole XML-configuration path breaks. The JAXB RI does not have this 
> problem; it parses the rewritten descriptors fine.
> The fix belongs in TomEE, not in applications. Right now the tomee-tck 
> harness works around it by pinning the JAXB RI through a 
> {{jakarta.xml.bind.JAXBContextFactory}} system property in the server JVM 
> ({{runner-standalone/validation/src/tomee-conf/system.properties}}), since 
> {{JAXBContext}} reads this property before it asks ServiceLoader. Stock 
> Plume, shipped as is, has no such pin, so any application that relies on Bean 
> Validation XML config hits this failure the moment it runs on an unmodified 
> server. TomEE should set this pin itself, either in the Plume distribution's 
> default {{system.properties}} or in the BVal integration code, so 
> applications work without a manual JVM property.
> h2. Steps to reproduce / TCK reference
> Deploy the Jakarta Validation TCK ({{validation-tck-tests:3.1.1}}) against 
> stock TomEE 11 Plume, with no {{jakarta.xml.bind.JAXBContextFactory}} system 
> property set. Run the XML-configuration test paths — the tests that load 
> {{validation.xml}} and constraint-mapping XML descriptors. Each one fails 
> during JAXBContext creation because MOXy, not the JAXB RI, answers the 
> ServiceLoader lookup.
> No TCK exclusion file lists these tests as excluded. The harness works around 
> the failure through a server JVM system property, set in 
> {{runner-standalone/validation/src/tomee-conf/system.properties}}, rather 
> than through {{runner-standalone/exclusions/validation.txt}}. With the pin in 
> place, the full validation TCK run (1,049 tests) passes with zero failures. 
> Remove the pin from {{system.properties}} and rerun the suite to reproduce 
> the failure directly, and to confirm the fix once TomEE pins the factory 
> itself.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to