[Preview] Standard WildFly support for Jakarta MVC 2.1

In  ee

Overview

Jakarta MVC is a Jakarta specification project for providing support for the Model-View-Controller pattern in web applications. The specification has had three releases, and a fourth is in the works. It has been considered for incorporation in the Jakarta EE Platform or Web Profile, although it was not included in Jakarta EE 11.

The intent here is to provide preview support for Jakarta MVC in standard WildFly. Previously we introduced Jakarta MVC support in WildFly Preview. This proposal is to bring preview stability level support to standard WildFly.

Issue Metadata

Issue

Stability Level

  • Experimental

  • [X] Preview

  • Community

  • default

Dev Contacts

QE Contacts

Testing By

  • [X] Engineering

  • QE

Affected Projects or Components

  • mvc-krazo-feature-pack

Other Interested Projects

Relevant Installation Types

  • Traditional standalone server (unzipped or provisioned by Galleon)

  • Managed domain

  • OpenShift s2i

  • Bootable jar

Requirements

Hard Requirements

  • Provide an extension/subsystem that makes modules containing the Jakarta MVC 2.1 api and the Eclipse Krazo implementation available to an application.

    • Only the Jakarta MVC API module will be jboss-api=public; other modules added here will be jboss-api=private

  • Provide an 'mvc-krazo' Galleon layer

    • The layer will depend on the 'bean-validation', 'cdi', 'jaxrs-core' and 'jsf' layers, in line with Jakarta MVC’s dependencies on other EE specifications.

  • Provide an extension/subsystem artifact jar, and a 'galleon-shared' src zip for use in other feature packs.

  • Incorporate the above in the 'wildfly' and 'wildfly-preview' feature packs.

  • Extension will advertise itself as having stability level 'preview'.

  • JBoss Modules modules associated with the feature will not be provisioned if the user has disabled provisioning of 'preview' stability features.

Nice-to-Have Requirements

Non-Requirements

  • Inclusion of the extension/subsystem in any standard OOTB config, including docs/examples configs.

  • Inclusion in any of the WildFly user boms.

  • Quickstart.

Future Work

  • Subsequent promotion to 'community' stability.

  • Possible move into the 'wildfly-ee' feature pack.

    • This would reflect a 'promotion' in terms of WildFly’s long term compatibility expectations for Jakarta MVC itself.

  • Add a quickstart

    • Requires promotion to 'community' or Quickstart project support for preview features.

Backwards Compatibility

Default Configuration

No incompatibility.

Importing Existing Configuration

No incompatibility.

Deployments

No incompatibility.

Interoperability

No incompatibility.

Use WildFly Extras to house the source code. Incorporate into the 'wildfly' and 'wildfly-preview' feature packs in a manner similar to how we incorporate content from WildFly Core into the 'wildfly-ee' feature pack.

Security Considerations

None.

Test Plan

  • Standard subsystem tests (parsing and marshalling; Stage.MODEL execution)

    • Done in the mvc-krazo-feature-pack project.

  • Pass the Jakarta MVC TCK

    • TCK runner should support passing in the GAV of the feature pack to provision the server, allowing execution against both the wildfly-preview feature pack and the mvc-krazo-specific feature pack

  • Smoke test in the testsuite/integration/manualmode module

    • In the future to be moved to testsuite/integration/basic (perhaps for WildFly 32)

  • Smoke test in the testsuite/preview/basic module (covering testing an installation that provisions the subsystem via the mvc-krazo layer)

  • Test the layer by itself and as part of the all-layers provisioning in testsuite/layers-expansion/LayersTestCase

Community Documentation

  • Addition of a 'Jakarta MVC' subsection in the 'Subsystem configuration' section of the Admin Guide.

  • Updated project README explaining this is now included in standard WildFly.

  • Removal of the mention in the 'WildFly and WildFly Preview' document as a difference between the two.

  • Updated mention in the Simple configuration subsystems section of the Admin Guide to reflect this is not solely WildFly Preview.

  • Update to the specification section in the Getting Started Guide to reflect this is not solely a WildFly Preview feature.

Release Note Content

WildFly now provides preview stability support for Jakarta MVC, using the Eclipse Krazo implementation. This is available in standard WildFly and in WildFly Preview. To use the subsystem in standard WildFly the server must be started with the --stability=preview parameter.