JAX-WS = When Apache CXF is installed it “steals” default JDK JAX-WS implementation, how to solve?

Apache CXF (cxf-rt-frontend-jaxws-*.jar to be precise) registers itself as a JAX-WS provider in the JVM. Inside the aforementioned JAR there is a file named: /META-INF/services/javax.xml.ws.spi.Provider with the following contents: org.apache.cxf.jaxws.spi.ProviderImpl If you now look at javax.xml.ws.spi.FactoryFinder#find method you will discover that JDK searches the CLASSPATH for the presence of javax.xml.ws.spi.Provider file and falls back to … Read more

JAX-WS – Adding SOAP Headers

Data can be transferred in SOAP header (JaxWS) by using @WebParam(header = true): @WebMethod(operationName = “SendRequest”, action = “http://abcd.ru/”) @Oneway public void sendRequest( @WebParam(name = “Message”, targetNamespace = “http://abcd.ru/”, partName = “Message”) Data message, @WebParam(name = “ServiceHeader”, targetNamespace = “http://abcd.ru/”, header = true, partName = “ServiceHeader”) Header serviceHeader); If you want to generate a client … Read more

How can I use an HTTP proxy for a JAX-WS request without setting a system-wide property?

I recommend using a custom ProxySelector. I had the same problem and it works great and is super flexible. It’s simple too. Here’s my CustomProxySelector: import org.hibernate.validator.util.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.*; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; /** * So the way a ProxySelector works is that … Read more

Best way to consume RPC/encoded webservice?

UPDATE My case was solved with hand editing WSDL from encoded to literal (basically under operations input and output use=”literal” was the only replacement) and then I could generate stubs with Apache CXF. It could be done, because endpoint wasn’t parsing RPC/encoded exactly and RPC/encoded spec XML couldn’t be validated against WSDL). Although Axis 1.4 … Read more

maven: How to add resources which are generated after compilation phase

I would suggest to define the output directory for the XSD files into target/classes (may be with a supplemental sub folder which will be packaged later during the package phase into the jar. This can be achieved by using the maven-resources-plugin. <project> … <build> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <executions> <execution> <id>copy-resources</id> <phase>process-classes</phase> <goals> <goal>copy-resources</goal> </goals> … Read more

How can I access the ServletContext from within a JAX-WS web service?

The servlet context is made available by JAX-WS via the message context, which can be retrieved using the web service context. Inserting the following member will cause JAX-WS to inject a reference to the web service context into your web service: import javax.annotation.Resource; import javax.servlet.ServletContext; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; … @Resource private WebServiceContext context; Then, … Read more

JAX-WS Loading WSDL from jar

Yes this is most definitely possible as I have done it when creating clients through javax.xml.ws.EndpointReference, a WS-A related class. I have added a classpath reference to the WSDL to the WS-A EndPointReference and the Metro implementation of JAX-WS loaded it just fine. Whether loading the WSDL from the WS-A EndPointReference or from a file … Read more