-
Notifications
You must be signed in to change notification settings - Fork 81
Support client-side and server-side version handling for EJB/HTTP, Naming/HTTP an Transactions/HTTP #742
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Content is finalized. Reviews please. |
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are two problems that need to be addressed:
- ABI compatibility is not guaranteed for non-existing fields, methods, classes
- backward compatible mode is off by default (documentation how to enable it is needed)
The remaining typos are irrelevant.
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
* marshalling choices (future) | ||
|
||
Both backward and forward compatibility is guaranteed by the client and server carrying out a handshake on connection establishment | ||
which determines agreed versions of each of these aspects to be used when processing invocations. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It have to be mentioned in this document that compatibility is not guaranteed for:
https://github.com/wildfly/wildfly-proposals/blob/main/backward-compatibility/WFLY-16296_JavaEE_And_JakartaEE_Compatibility.adoc#none-requirements
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I included a reference to the two "none" backward compatibility requirements you highlighted, and mentioned that the compatibility they describe does likewise not apply here.
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
remote/WFLY-20532_Support_client_side_and_server_side_handler_versioning.adoc
Outdated
Show resolved
Hide resolved
This feature is not something that the user would need to be aware of - for client and server versions which do not match, | ||
the handshake protocol should establish an agreed version. However, a documentation note on the existence of the handshake | ||
protocol, why it is necessary and what it does would be helpful. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This section collides with: https://github.com/wildfly/wildfly-proposals/blob/main/backward-compatibility/WFLY-16296_JavaEE_And_JakartaEE_Compatibility.adoc#hard-requirements namely: "Backward compatibility mode is off by default".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for noting this. I assume the default is off as it represents the most common case (clients and servers both using recent versions of Wildfly - in other words, those that are based on Jakarta EE). In the case of handler versioning, there may be a higher chance of incompatibility between clients and servers as features are added to the HTTP client and require handler version changes, but you could argue that the default case would again be when client and server software have the same versions, so keeping the default as off makes sense.
I'm debating wth myself about the validity of the interoperability section I have written here. In that section, i'm classifying the shift from Java EE to Jakarta EE is an interoperability issue, in that Wildfly for Java EE and Wildfly from Jakarta EE, although from the same sofware vendor, are from different architectures (the set of specifications interpreted as an architecture). However, the Wildfly HTTP client (or EJB client for that matter) cannot interoperate with different server vendors. I'm wondering if this distinction is worth including or whether I should just incorporate it all into the backward compatibility section. |
This is a PR to add client-side and server-side version handling in the Wildfly HTTP client libraries.
EAP RFE: EAP7-2298
Wildfly issue: WFLY-20532
Wildfly HTTP Client Project issue: WEJBHTTP-153