Skip to content

Commit

Permalink
Merge pull request #550 from ropalka/WFLY-18846
Browse files Browse the repository at this point in the history
[WFLY-18846] Support for JAXP Specification Version 1.6
  • Loading branch information
darranl authored Jan 29, 2024
2 parents 69cef6d + a62a8d2 commit 2a4f659
Showing 1 changed file with 135 additions and 0 deletions.
135 changes: 135 additions & 0 deletions jaxp/WFLY-18846_JAXP_Specification_Version_1.6.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
= Migrate WildFly to JDK JAXP (Java API for XML Processing) Version 1.6
:author: Richard Opalka
:email: ropalka@redhat.com
:toc: left
:icons: font
:idprefix:
:idseparator: -

== Overview

This enhancement will migrate WildFly from legacy Apache's JAXP version 1.5 to the most recent JDK's JAXP version 1.6

== Issue Metadata

=== Issue:
* https://issues.redhat.com/browse/WFLY-18846[WFLY-18846]

=== Dev Contacts:
* mailto:ropalka@redhat.com[Richard Opalka]

=== QE Contacts:
* mailto:msvehla@redhat.com[Martin Svehla]

=== Testing By
* [x] Engineering

* [x] QE

=== Affected Projects or Components:

* Hibernate Validator, JBoss Modules, JDR, JSF, RESTEasy, WebServices, WildFly Core, WildFly

=== Relevant Installation Types
* [x] Traditional standalone server (unzipped or provisioned by Galleon)

* [x] Managed domain

* [x] OpenShift s2i

* [x] Bootable jar

== Requirements

=== Hard Requirements

* JAXP hack will be removed from JBoss Modules library and relevant WildFly Core modules participating in this hack.
* All modules depending on org.apache.xerces or org.apache.xalan modules will depend on standard JPMS java.xml module instead.
* All modules depending on org.codehaus.woodstox module (except WebServices modules) will depend on standard JPMS java.xml module instead.
* org.apache.xalan and org.apache.xerces modules will be completely removed from WildFly project and WildFly distribution.
* Apache's Xalan and Xerces dependencies will be completely removed from both WildFly Core and WildFly projects.
* By default JDK provided JAXP 1.6 specification implementation will be used by WildFly and deployed applications.

=== None Requirements

* JAXP de/serialization backward compatibility with earlier WildFly versions using Apache's legacy JAXP specification version 1.5.

== Test Plan

* XML Binding 4.0 TCK must pass.
* Jakarta EE 10 TCK must pass.
* Both WildFly Core & WildFly test suites must pass.

== Community Documentation

The migration path is to use standard JPMS java.xml module as dependency instead of org.apache.xerces , org.apache.xalan modules , org.codehaus.woodstox
dependencies in user applications. This information will be added to the WildFly documentation and it will be based on this analysis document as a reference.

== Release Note Content
Bullet point: Support for JDK provided JAXP specification version 1.6.

== Introduction

WildFly uses custom JAXP specification 1.5 implementation internally by default.
There is very high demand for latest JAXP specification version 1.6 support from WildFly community.

=== Design Notes

JBoss Modules project had built-in support for JAXP redirection functionality since 2011 (JAXP hack).
The main purpose of JAXP redirection functionality was to ensure only one globally configured JAXP implementation
will be used in whole JBoss Modules library controlled classloading environment.
At that time when JAXP redirection was implemented WildFly project was dealing with inconsistent
JAXP implementations behavior across different JDKs (each JDK came with its own JAXP implementation).
Decision was taken to unify JAXP implementation behaviour on all supported JDKs at that time.

In recent days the JDK market state is very different. Vast majority of available JDKs is based on Open JDK code base.
That results in an unified JAXP implementation behaviour that is now consistent on those Open JDK forks provided by different vendors.
Further more JAXP hack used internally by WildFly was based on obsolete and not maintained JAXP specification version 1.5.
Upgrade to most recent JDK provided JAXP specification version 1.6 was needed.

== Affected Components

=== Hibernate Validator

Hibernate Validator module org.hibernate.validator will depend on standard JPMS java.xml module instead of org.apache.xerces module.

=== JBoss Modules

JAXP hack (eagerly created global JAXP factories implementation cache and redirections to that cache) will be removed from JBoss Modules library.

=== JDR

WildFly JDR module org.jboss.as.jdr will depend on standard JPMS java.xml module instead of org.apache.xalan module.

=== JSF

WildFly JSF module com.sun.jsf-impl will depend on standard JPMS java.xml module instead of org.apache.xerces and org.apache.xalan modules.

=== RESTEasy

WildFly RESTEasy module org.jboss.resteasy.resteasy-jaxp-provider will depend on standard JPMS java.xml module instead of org.apache.xerces module.

=== WebServices

WildFly WebServices modules com.sun.xml.messaging.saaj , org.jboss.as.webservices.server , org.jboss.ws.common , org.jboss.as.appclient
will depend on standard JPMS java.xml module instead of org.apache.xerces module.

=== WildFly Core

JBoss Modules dependency will be upgraded from 1.x version to 2.x version (version with eliminated JAXP hack).
Apache's Xalan and Xerces dependencies will be completely removed from both WildFly Core project a WildFly Core distribution.
JBoss Modules JAXP redirect hack will be removed from org.wildfly.core.jar.boot.Main class.
The following WildFly core modules that participated in JBoss Modules JAXP hack will be updated in the following way:
* org.apache.xalan , org.apache.xerces , org.codehaus.woodstox dependencies will be removed from org.jboss.as.cli module and standard JPMS java.xml dependency will be used instead.
* org.codehaus.woodstox dependency will be removed from org.jboss.as.controller module and standard JPMS java.xml dependency will be used instead.
* org.apache.xalan , org.apache.xerces , org.codehaus.woodstox dependencies will be removed from org.jboss.as.host-controller module and standard JPMS java.xml dependency will be used instead.
* org.apache.xalan , org.apache.xerces , org.codehaus.woodstox dependencies will be removed from org.jboss.as.server module and standard JPMS java.xml dependency will be used instead.
* org.apache.xalan , org.apache.xerces , org.codehaus.woodstox dependencies will be removed from org.jboss.as.standalone module and standard JPMS java.xml dependency will be used instead.
* org.apache.xalan , org.apache.xerces , org.codehaus.woodstox dependencies will be removed from org.wildfly.bootable-jar module and standard JPMS java.xml dependency will be used instead.

=== WildFly

WildFly will use WildFly Core version that incorporates JBoss Modules 2.x version (version with eliminated JAXP hack).
Apache's Xalan and Xerces dependencies will be completely removed from both WildFly project a WildFly distribution.
All WildFly modules containing org.apache.xalan, org.apache.xerces dependencies will migrate to standard JPMS java.xml dependency instead,
see Hibernate Validator, JDR, JSF, RESTEasy, Webservices sections above.

0 comments on commit 2a4f659

Please sign in to comment.