Skip to content
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

ARTEMIS-2557 don't export openwire-protocol JMS spec dep #2898

Closed
wants to merge 1 commit into from

Conversation

jbertram
Copy link
Contributor

No description provided.

@michaelandrepearce
Copy link
Contributor

Why don't we just make the dependency exclusion in our poms so the dependency doesnt pull avoiding the issue and not requiring this doc

@jbertram
Copy link
Contributor Author

Where would we make the exclusion in our pom? As I understand it, the issue is 3rd party applications which are embedding the broker and declaring their own dependencies on our poms.

@gemmellr
Copy link
Member

Since the example given in the doc change is artemis-openwire-protocol, I'd expect Michael is thinking of excluding it there, i.e exclude the 1.1 dep when pulling in whichever bits depend on it, and add the 2.0 dep as used elsewhere in artemis. Folks who pull in the artemis-openwire-protocol dep then just get 2.0 dep, which should be fine at runtime.

@jbertram
Copy link
Contributor Author

As far as I can tell, any <exclusion> would have to be done by the 3rd party application which is declaring the <dependency> on artemis-openwire-protocol. The artemis-openwire-protocol can't exclude the JMS interface dependency because it needs it. As you note, we could change the dependency to JMS 2, but I didn't go that route because I didn't want to give the impression that the OpenWire protocol implementation for Artemis supported JMS 2.

@clebertsuconic
Copy link
Contributor

@jbertram / @gemmellr / @michaelandrepearce are you guys settled on this discussion? is this ready to be merged?

@michaelandrepearce
Copy link
Contributor

Not really theres been no change. Exclusion works fine to remove a transitive dependency to be pulled in by others.

@jbertram
Copy link
Contributor Author

jbertram commented Dec 2, 2019

@michaelandrepearce, I'm still confused on what should be changed. Can you clarify?

@michaelandrepearce
Copy link
Contributor

michaelandrepearce commented Dec 2, 2019

Where the jms 1.1 api is coming in within our codebase, simply add an excludes

@jbertram
Copy link
Contributor Author

jbertram commented Dec 2, 2019

As I already noted previously, "The artemis-openwire-protocol can't exclude the JMS interface dependency because it needs it."

@michaelandrepearce
Copy link
Contributor

But you can either add jms 2.0 or just make it compile time scope

@gemmellr
Copy link
Member

gemmellr commented Dec 3, 2019

Personally I dont think this should really be documented, and would change the module config out such that the issue doesnt arise.

The module has a transitive dep on the JMS 1.1 API via activemq-client, and has a transitive dep on the JMS 2.0 API via artemis-jms-client, and then further declares a non-transitive dep on JMS 1.1 itself. Various options likely exist to resolve the issue this doc update covers, stopping the 1.1 dep being passed to dependent componenents, while keeping things working for the module...e.g, excluding the transitive 1.1 dep from activemq-client, marking the fixed 1.1 dep as provided scope or optional, removing it entirely, declaring a fixed dep on JMS 2.0 spec, different combinations of these etc.

I dont think using the JMS 2 API jar [,perhaps only at runtime,] for a server-side component of an otherwise JMS2-supporting broker really implies anything much about the spec level supported for clients, particularly as no client yet exists to follow through on any confusion that arises. Since the JMS 2.0 API is still in the dep list here, if there is any scope for confusion it largely exists either way. Anyone that tries using JMS 2 APIs with a client that doesnt implement them will quickly find out it doesnt work, with it fairly simple to figure out why from the resulting errors. Anyone that really does want a 1.1 API + client used in something declaring a dep on artemis-openwire-protocol should already have their own dependency on them, in which case nothing would change by preventing the dep being passed on to them by artemis-openwire-protocol.

@jbertram
Copy link
Contributor Author

jbertram commented Dec 3, 2019

I excluded the transitive JMS 1.1 dependency from activemq-client and set the scope of the explicit JMS 1.1 dependency to provided as that made the most sense to me.

@jbertram jbertram changed the title ARTEMIS-2557 doc caveat for OpenWire JMS 1.1 dep ARTEMIS-2557 don't export openwire-protocol JMS spec dep Dec 3, 2019
@asfgit asfgit closed this in 4622f36 Dec 16, 2019
@jbertram jbertram deleted the ARTEMIS-2557 branch June 10, 2021 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants