OpenLiberty / open-liberty

Open Liberty is a highly composable, fast to start, dynamic application server runtime environment
https://openliberty.io
Eclipse Public License 2.0
1.15k stars 592 forks source link

Update enterprise feature compatibility for Jakarta EE9 #12239

Closed dazavala closed 3 years ago

dazavala commented 4 years ago

Ref epic: #9876 Ref design: #9214

At startup the server accepts compatible combinations of features that support the JavaEE6/EE7/EE8 programming models, and rejects incompatible combinations. The server also accepts compatible combinations of features that support other programming models -- MicroProfile1x/2x/3x, SpringBoot1.5/2.x and EnterpriseOSGi4.2 -- which depend on JavaEE features.

The JakartaEE9 and JavaEE programming models are binarily incompatible. New features that support the JakartaEE9 programming model are incompatible with features that support the JavaEE programming models, including JakartaEE8. In addition to the aforementioned startup behavior, the server must now accept compatible combinations of JakartaEE9+ features and reject combinations of features that support both JakartaEE9+ and JavaEE/JakartaEE8. - specifically, the server must reject feature configurations that resolve to sets that include any feature that supports JakartaEE9+ and any feature that supports JavaEE/JakartaEE8.

We can use this opportunity to improve the current JavaEE solution, which rejects unsupported JavaEE feature combinations and emits the generic singleton toleration conflict message, CWWKF0033E. When used for incompatible enterprise feature conflicts, the message indicates symbolic names for private (internal) features; and the server emits potentially several messages for every pair of conflicting features found in the resolution set. The messages are confusing and do not help the user fix their feature configuration. We can improve upon this by emitting more precise messages that indicate which configured features are in conflict, their programming models, and the reason for the conflict (e.g. incompatible programming models). And, emit a single message for each conflict -- the most helpful message.

jhanders34 commented 3 years ago

@dazavala Similarly to the last one, can this one be closed out as well?

dazavala commented 3 years ago

Yes and done.