SOAP web services examples
Spring Boot with Apache CXF example
Showing posts with label web services. Show all posts
Showing posts with label web services. Show all posts
Wednesday, January 24, 2018
Tuesday, November 10, 2015
Web services FAQ
Using cxf 2.7, generated wsdl contains 2 files, because interface and implementation are not in same package.
Solution annotate implementation and override targetNamespace
@WebService(targetNamespace = "om.samara.hr")
Solution annotate implementation and override targetNamespace
@WebService(targetNamespace = "om.samara.hr")
Tuesday, July 28, 2015
web service client
Server is returning soap fault with http status 400
SOAP UI is displaying nicely
When using cxf Java client I get strange, misleading message:
org.apache.cxf.interceptor.Fault: Could not send Message.
On server side I see everything is as expected soap fault is returned with bad request status code 400.
After little debugging I found this in org.apache.cxf.transport.http.HTTPConduit class:
// "org.apache.cxf.transport.process_fault_on_http_400" property should be set in case a
// soap fault because of a HTTP 400 should be returned back to the client (SOAP 1.2 spec)
So before making a call configure client:
Client client = ClientProxy.getClient(port); client.getBus().setProperty("org.apache.cxf.transport.process_fault_on_http_400", true);
After that I get expected exception:
Caused by: org.apache.cxf.binding.soap.SoapFault: some validation message
One more example of calling web service with Apache CXF - now within the same project I'm doing integration test with Spock and SpringBootTest.
HelloWorldWs is interface annotated with @WebService
def setup() { JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean() proxyFactory.setServiceClass(HelloWorldWs) this.pismaUrl = "http://localhost:" + this.port + "/services/pisma"
proxyFactory.setAddress(pismaUrl) this.client = (HelloWorldWs) proxyFactory.create() Client client = ClientProxy.getClient(this.client); client.getBus().setProperty("org.apache.cxf.transport.process_fault_on_http_400", true); }
web service client example
//web service interface to be called
@WebService(targetNamespace = "http://services.crm.ticketing.samara.com", name = "ticketingServicePortTypes")
@XmlSeeAlso({ObjectFactory.class})
public interface TicketingServicePortTypes {
// web service client that was generated with wsdltojava
// This class was generated by Apache CXF 3.0.3
TicketingService extends javax.xml.ws.Service
Java client that calls TicketingService, using basic authentication with u/p.
final TicketingService service = new TicketingService(); // should be singleton
final TicketingServicePortTypes port = service.getTicketingServicePort();
javax.xml.ws.BindingProvider bp = (BindingProvider) port;
log.trace("username: " + username + ", password: " + password);
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://10.105.100.127:8445/");
Using spring cxf xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
">
<!-- jaxws client to front end -->
<jaxws:client id="crmService"
serviceClass="com.samara.generated.crm.api.TicketingServicePortTypes"
address="${crm.url}" username="${crm.username}" password="${crm.password}">
<jaxws:binding>
<soap:soapBinding mtomEnabled="false" version="1.1" />
</jaxws:binding>
</jaxws:client>
</beans>
Subscribe to:
Posts (Atom)