Skip to content

Conversation

rachmatowicz
Copy link
Contributor

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

@github-actions github-actions bot added the stability-level/community "Community" stability level label Jun 27, 2025
@rachmatowicz rachmatowicz requested review from fl4via and ropalka June 27, 2025 16:05
@rachmatowicz
Copy link
Contributor Author

Content is finalized. Reviews please.

Copy link
Contributor

@ropalka ropalka left a 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.

* 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

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.

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

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.

@rachmatowicz
Copy link
Contributor Author

rachmatowicz commented Jul 3, 2025

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.

@github-actions github-actions bot added stability-level/community "Community" stability level and removed stability-level/community "Community" stability level labels Jul 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stability-level/community "Community" stability level
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants