[[cxf-extension-for-quarkus]]
= CXF Extension for Quarkus

SOAP (Simple Object Access Protocol) is a normalized exchange protocol based on XML, predating the era of REST services.

This extension enables you to develop web services that consume and produce SOAP payloads using the http://cxf.apache.org/[Apache CXF] libraries.

- CXF implements the Java API for XML Web Services (JAX-WS) which makes building web services easy.

- CXF supports a variety of web service specifications including http://cxf.apache.org/docs/ws-addressing.html[WS-Addressing], http://cxf.apache.org/docs/ws-policy.html[WS-Policy], http://cxf.apache.org/docs/ws-reliablemessaging.html[WS-Reliable Messaging] and http://cxf.apache.org/docs/ws-security.html[WS-Security].

This extension provides access to all these specifications for your Quarkus applications.

[[native-mode-support]]
== Native Mode Support

Native mode is currently supported for Java 11.

In addition to the core `quarkus-cxf` module, you may also leverage the following modules for full native support of the respective CXF modules.

- `quarkus-cxf-rt-features-logging`
- `quarkus-cxf-rt-features-metrics`
- `quarkus-cxf-rt-ws-security`
- `quarkus-cxf-rt-transports-http-hc5`

[[contract-code-first]]
== Contract vs Code First
Contract and code first development are both fully supported in this extension.

You can refer to the following CXF links for more details on the different styles of developing a service consumer or provider.

* Developing a service consumer (or client)
** https://cxf.apache.org/docs/developing-a-consumer.html[Consumer from WSDL]
* Developing a service using JAX-WS
** https://cxf.apache.org/docs/developing-a-service.html#DevelopingaService-WSDLFirstDevelopment[Contract First Development]
** https://cxf.apache.org/docs/developing-a-service.html#DevelopingaService-JavaFirstDevelopment[Code First Development]

CXF provides a https://cxf.apache.org/docs/wsdl-to-java.html[wsdl2java] utility as well as a Maven plugin called https://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html[cxf-codegen-plugin] to generate fully annotated Java code from a WSDL document.  The autogenerated Java classes are fully compatible with this extension.

[[sample-code-integration-tests]]
== Sample Code
The `integration-tests` module in the codebase provides various examples that demonstrate how to use this extension effectively.

[[issues-and-support]]
== Issues and Support
Please feel free to https://github.com/quarkiverse/quarkus-cxf/discussions[start a  discussion] or https://github.com/quarkiverse/quarkus-cxf/issues/new[open an issue] in the GitHub repository in case you need support.  The following general guidelines can be used to determine whether to start a discussion or open an issue.

=== GitHub Issues
- Bug reports
- Feature requests

=== GitHub Discussions
- Q&A and general communication
- RFCs for new features

Contributions and pull requests from the community are welcome.