You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rz...@apache.org on 2026/07/21 08:32:30 UTC
(tomee) branch main updated: TOMEE-4657 - use the modular EclipseLink JPA artifact instead of the uber-jar
This is an automated email from the ASF dual-hosted git repository.
rzo1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomee.git
The following commit(s) were added to refs/heads/main by this push:
new 5a3c5cc5e3 TOMEE-4657 - use the modular EclipseLink JPA artifact instead of the uber-jar
5a3c5cc5e3 is described below
commit 5a3c5cc5e3c1ba13df42a149cb6c2267bbb114bf
Author: Markus Jung <ju...@apache.org>
AuthorDate: Tue Jul 21 10:27:14 2026 +0200
TOMEE-4657 - use the modular EclipseLink JPA artifact instead of the uber-jar
Plume shipped org.eclipse.persistence:eclipselink, a monolithic artifact that
bundles MOXy alongside the JPA runtime and registers a
jakarta.xml.bind.JAXBContextFactory service. MOXy therefore won the
ServiceLoader lookup over the JAXB RI that Plume also ships, and MOXy cannot
unmarshal through the SAX UnmarshallerHandler chain Apache BVal uses while
parsing validation.xml and constraint-mapping descriptors. Every Bean
Validation XML configuration path on a stock Plume server failed with a
DOMException (NAMESPACE_ERR).
Plume needs a JPA provider, not a JAXB one, so depend on the modular
org.eclipse.persistence.jpa artifact. It brings the JPA runtime plus
persistence.core and jpa.jpql, keeps the
jakarta.persistence.spi.PersistenceProvider service, and leaves MOXy, SDO,
JPA-RS and the Oracle platforms out of the distribution. jaxb-runtime is now
the only JAXBContextFactory provider in Plume, so no system property pin is
needed.
Verified on a clean build of the Plume distribution:
- Jakarta Persistence TCK 3.2.1: 2134 tests, 0 failures, 0 errors, plus the
signature test, unchanged from the previous baseline.
- Jakarta Validation TCK 3.1.1: 1049 tests, 0 failures, signature test 0
failures, with no jakarta.xml.bind.JAXBContextFactory pin configured.
Note that the change only shows up in a clean build: the plume work dir keeps
previously staged jars, so an incremental build can still package the old
uber-jar.
boms/tomee-plume/pom.xml is regenerated by GenerateBoms during the build.
---
boms/tomee-plume/pom.xml | 64 +++++++++++++++----------------
container/openejb-jpa-integration/pom.xml | 2 +-
pom.xml | 7 +++-
utils/openejb-core-eclipselink/pom.xml | 23 +++++------
4 files changed, 49 insertions(+), 47 deletions(-)
diff --git a/boms/tomee-plume/pom.xml b/boms/tomee-plume/pom.xml
index 4c6e25f64e..78d446aa6a 100644
--- a/boms/tomee-plume/pom.xml
+++ b/boms/tomee-plume/pom.xml
@@ -1038,7 +1038,17 @@
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
- <artifactId>eclipselink</artifactId>
+ <artifactId>org.eclipse.persistence.core</artifactId>
+ <version>5.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.persistence</groupId>
+ <artifactId>org.eclipse.persistence.jpa.jpql</artifactId>
+ <version>5.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.persistence</groupId>
+ <artifactId>org.eclipse.persistence.jpa</artifactId>
<version>5.0.1</version>
</dependency>
<dependency>
@@ -1166,11 +1176,6 @@
<artifactId>opensaml-xmlsec-impl</artifactId>
<version>5.1.3</version>
</dependency>
- <dependency>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm-analysis</artifactId>
- <version>9.10</version>
- </dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
@@ -1181,11 +1186,6 @@
<artifactId>asm-tree</artifactId>
<version>9.10</version>
</dependency>
- <dependency>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm-util</artifactId>
- <version>9.10</version>
- </dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
@@ -3222,7 +3222,27 @@
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
- <artifactId>eclipselink</artifactId>
+ <artifactId>org.eclipse.persistence.core</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>*</artifactId>
+ <groupId>*</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.persistence</groupId>
+ <artifactId>org.eclipse.persistence.jpa.jpql</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>*</artifactId>
+ <groupId>*</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.persistence</groupId>
+ <artifactId>org.eclipse.persistence.jpa</artifactId>
<exclusions>
<exclusion>
<artifactId>*</artifactId>
@@ -3480,16 +3500,6 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm-analysis</artifactId>
- <exclusions>
- <exclusion>
- <artifactId>*</artifactId>
- <groupId>*</groupId>
- </exclusion>
- </exclusions>
- </dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
@@ -3510,16 +3520,6 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm-util</artifactId>
- <exclusions>
- <exclusion>
- <artifactId>*</artifactId>
- <groupId>*</groupId>
- </exclusion>
- </exclusions>
- </dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
diff --git a/container/openejb-jpa-integration/pom.xml b/container/openejb-jpa-integration/pom.xml
index 28e433499a..1341dfa04d 100644
--- a/container/openejb-jpa-integration/pom.xml
+++ b/container/openejb-jpa-integration/pom.xml
@@ -63,7 +63,7 @@
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
- <artifactId>eclipselink</artifactId>
+ <artifactId>org.eclipse.persistence.jpa</artifactId>
<optional>true</optional>
</dependency>
<dependency>
diff --git a/pom.xml b/pom.xml
index 39245d1d95..f873398ef1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1861,9 +1861,14 @@
</exclusion>
</exclusions>
</dependency>
+ <!--
+ Prefer the modular EclipseLink JPA artifact over the monolithic
+ org.eclipse.persistence:eclipselink uber-jar, which also bundles MOXy and its
+ jakarta.xml.bind.JAXBContextFactory service. See TOMEE-4657.
+ -->
<dependency>
<groupId>org.eclipse.persistence</groupId>
- <artifactId>eclipselink</artifactId>
+ <artifactId>org.eclipse.persistence.jpa</artifactId>
<version>${version.eclipselink}</version>
</dependency>
<dependency>
diff --git a/utils/openejb-core-eclipselink/pom.xml b/utils/openejb-core-eclipselink/pom.xml
index 7f27009c1d..e3b97ead48 100644
--- a/utils/openejb-core-eclipselink/pom.xml
+++ b/utils/openejb-core-eclipselink/pom.xml
@@ -43,15 +43,20 @@
</exclusion>
</exclusions>
</dependency>
+ <!--
+ Use the modular EclipseLink JPA artifact rather than the monolithic
+ org.eclipse.persistence:eclipselink uber-jar. The uber-jar also bundles MOXy,
+ which registers a jakarta.xml.bind.JAXBContextFactory service and wins the
+ ServiceLoader lookup over the JAXB RI. MOXy cannot unmarshal through the SAX
+ UnmarshallerHandler chain Apache BVal uses, which breaks every Bean Validation
+ XML configuration path on Plume. Plume needs a JPA provider, not a JAXB one.
+ See TOMEE-4657.
+ -->
<dependency>
<groupId>org.eclipse.persistence</groupId>
- <artifactId>eclipselink</artifactId>
+ <artifactId>org.eclipse.persistence.jpa</artifactId>
<version>${version.eclipselink}</version>
<exclusions>
- <exclusion>
- <groupId>org.eclipse.persistence</groupId>
- <artifactId>jakarta.persistence</artifactId>
- </exclusion>
<exclusion>
<groupId>org.eclipse.persistence</groupId>
<artifactId>jakarta.persistence</artifactId>
@@ -68,14 +73,6 @@
<groupId>org.eclipse.parsson</groupId>
<artifactId>jakarta.json</artifactId>
</exclusion>
- <exclusion>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-xjc</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- </exclusion>
</exclusions>
</dependency>
</dependencies>