Quarkus CXF 3.13.0 release notes

Important dependency upgrades

New and noteworthy in Quarkus CXF

Vert.x HttpClient based HTTP Conduit

As Vert.x is the preferred HTTP stack on Quarkus, we decided to implement a new HTTP Conduit based on Vert.x HttpClient. Although the client per se is non-blocking and asynchronous, our new VertxHttpClientHTTPConduit currently supports only the synchronous usage. We plan to add the support for asynchronous mode in near future.

To give it a try, set the http-conduit-factory configuration option globally or per client:

application.properties
# Set the conduit factory for all clients
quarkus.cxf.http-conduit-factory = VertxHttpClientHTTPConduitFactory

# Set the conduit factory only for the hello client
quarkus.cxf.client.hello.http-conduit-factory = VertxHttpClientHTTPConduitFactory

You are welcome to try it and give feedback either on GitHub Issues or Discussions.

#1425 Injection of WebServiceContext into service implementations with @CXFEndpoint("/my-path")

The issue #1425 made us figure out that we had no tests at all for injecting jakarta.xml.ws.WebServiceContext using the @jakarta.annotation.Resource and @jakarta.annotation.Resources annotations. We not only added the the tests and fixed the malfunctioning case with @CXFEndpoint("/my-path"), but we also changed how injecting @Resource WebServiceContext was implemented. Instead of relying on the reflective CXF code that was run at application start, the scanning is now done at build time by Arc, the CDI container of Quarkus.

#1416 passing multiple namespace mappings via quarkus.cxf.codegen.wsdl2java.package-names

Before Quarkus CXF 3.13.0, the values specified in quarkus.cxf.codegen.wsdl2java.package-names were wrongly passed as a single comma-separated value of the -p option, leading to BadUsageException: -p has invalid character!.

Since Quarkus CXF 3.13.0, if quarkus.cxf.codegen.wsdl2java.package-names specifies multiple mappings, such as

application.properties
quarkus.cxf.codegen.wsdl2java.package-names =
  http://www.example.org/add=io.quarkiverse.cxf.wsdl2java.it.add,
  http://www.example.org/multiply=io.quarkiverse.cxf.wsdl2java.it.multiply

then they are properly passed to wsdl2java as multiple -p options:

application.properties
wsdl2java \
  -p http://www.example.org/add=io.quarkiverse.cxf.wsdl2java.it.add \
  -p http://www.example.org/multiply=io.quarkiverse.cxf.wsdl2java.it.multiply \
  ...

#1427 Better exception message when a service interface is not available in Jandex

Quarkus CXF relies heavily on Quarkus class index, a.k.a. Jandex, when inspecting various aspects of the application at build time.

Before Quarkus CXF 3.13.0, if some important dependency of the application, for example the one containing the service interfaces, was not indexed, a NullPointerException without any meaningful message was thrown upon looking up a class from that dependency in the index.

Since Quarkus CXF 3.13.0, the exception became informative, suggesting the user to add index to the dependency using either quarkus.index-dependency.* family of options or by adding io.smallrye:jandex-maven-plugin to the module containing sources of the missing class. Check How to Generate a Jandex Index section of Quarkus Contexts and dependency injection guide for more details.

Documentation improvements