I'm trying to port an old Java 8 webapp containing JAX-WS based webservices to Java 11 and Tomcat 9 on Windows 10. Note that this app is not using Maven or any other dependency management and there are reasons against a conversion.
After adding the jaxws-rt library, I'm getting the following error:
java.lang.Error: javax.xml.soap.SOAPException: Unable to create SAAJ meta-factoryProvider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
at com.sun.xml.ws.api.SOAPVersion.<init>(SOAPVersion.java:193)
at com.sun.xml.ws.api.SOAPVersion.<clinit>(SOAPVersion.java:91)
at com.sun.xml.ws.api.BindingID.<clinit>(BindingID.java:342)
at com.sun.xml.ws.spi.ProviderImpl.createEndpoint(ProviderImpl.java:107)
at javax.xml.ws.Endpoint.create(Endpoint.java:162)
at javax.xml.ws.Endpoint.create(Endpoint.java:116)
...
The internal infix already shouldn't be there, as this seems to be a Java 8 package stripped from Java 11. I've tried the following:
- adding the libs
saaj-api-1.3.5.jarandsaaj-impl-1.5.1.jar - starting Tomcat with
-Djavax.xml.soap.SAAJMetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl, which point to a location insaaj-impl-1.5.1.jar - creating a file
<MyWebapp>/META-INF/services/javax.xml.soap.SAAJMetaFactorywith contentscom.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl(which btw. is also contained insaaj-impl-1.5.1.jar)
all to no avail. It keeps asking for that internal implementation which isn't there anymore.
How do I tell Java to use the correct implementation and, if possible, how can I find out who is causing this implementation to show up anyway?
This worked for me.
I needed to add following dependencies.
I also needed to set property.