My Gradle WSLD Java source generation plugin still uses com.sun.xml.ws:jaxws-tools
of v2.3.2-1. There is v4.0.0 too:
https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-tools
but there is no jaxws-tools
artifact under new Jakarta umbrella:
https://mvnrepository.com/artifact/jakarta.xml.ws
I'm highly confused: Why transition to Jakarta / Eclipse led only to partial Maven coordinates changes, most of the EE XML/SOAP stuff still under the old com.sun.xml
...
Seems that parent POM leads to:
mvn dependency:copy -Dartifact=com.sun.xml.ws:project:4.0.0:pom -DoutputDirectory=libs
<scm>
<connection>scm:git:git@github.com:eclipse-ee4j/metro-jax-ws.git</connection>
<developerConnection>scm:git:git@github.com:eclipse-ee4j/metro-jax-ws.git</developerConnection>
<url>https://github.com/eclipse-ee4j/metro-jax-ws</url>
<tag>HEAD</tag>
</scm>
jakarta.*
package represents the interface (API).
com.sun.*
package represents the implementation.
This way, when you import/reference only the classes of the jakarta.*
package in your program, then you can effortlessly change the implementation without rewriting your program. E.g. switching the JAX-WS implementation from Eclipse Metro to Apache CXF which in turn uses org.apache.*
instead of com.sun.*
.
This is the Abstract Factory Pattern and it's essentially the same concept as how JDBC drivers work.
Might you find your program using implementation-specific classes directly, i.e. your source code has compile time dependencies on com.sun.*
, then your program is tight-coupled and unportable across other servers/impls and you might want to fix this tech debt by looking for proper replacements in the jakarta.*
namespace.