Aggregated Quarkus CXF release notes 3.20.2 LTS → 3.27.1 LTS
This document may help when upgrading from the 3.20 LTS stream to 3.27 LTS stream.
Important dependency upgrades
-
Quarkus 3.20.x → 3.27.x
-
CXF 4.1.1 → 4.1.3 - release notes, changelog
-
JAXB Plugins 4.0.9 → 4.0.11 - release notes 4.0.10, release notes 4.0.11
-
Ehcache 3.10.8 → 3.11.1 changelog
-
Woodstox 7.1.0 → 7.1.1 - changelog
New and noteworthy in Quarkus CXF
#1778 Introduce quarkus.cxf.client.worker-dispatch-timeout
Before Quarkus CXF 3.22.0, when a SOAP client application using asynchronous clients was under high load, it might have taken every long time till there was a worker thread available for executing the client call.
In such situations, it was hard to figure out, what was the root cause of those hanging clients.
In Quarkus CXF 3.22.0, we introduced the
quarkus.cxf.client.worker-dispatch-timeout
configuration parameter, that limits the time SOAP clients can wait for a free executor thread.
In case the timeout is surpassed, an exception is thrown informing about the problem:
Unable to dispatch SOAP client call within 30000 ms on a worker thread due to worker thread pool exhaustion.
You may want to adjust one or more of the following configuration options:
quarkus.thread-pool.core-threads, quarkus.thread-pool.max-threads, quarkus.cxf.client.worker-dispatch-timeout
#1553 Support XJC plugins from org.jvnet.jaxb:jaxb-plugins
XJC Plugins are one of the ways how the Java files produced by wsdl2java can be customized.
Before Quarkus CXF 3.23.0, only XJC Plugins from org.apache.cxf.xjcplugins:cxf-xjc-* were supported
via io.quarkiverse.cxf:quarkus-cxf-xjc-plugins.
Since Quarkus CXF 3.23.0, also CXF Plugins org.jvnet.jaxb:jaxb-plugins can be used via
io.quarkiverse.cxf:quarkus-cxf-jaxb-plugins extension.
Check the wsdl2java guide for more details.
#1853 Expose Vert.x HttpClient connection pool configuration options
See the ducumentation of the new options:
-
quarkus.cxf.client."client-name".vertx.connection-pool.http1-max-size -
quarkus.cxf.client."client-name".vertx.connection-pool.http2-max-size -
quarkus.cxf.client."client-name".vertx.connection-pool.cleaner-period -
quarkus.cxf.client."client-name".vertx.connection-pool.event-loop-size -
quarkus.cxf.client."client-name".vertx.connection-pool.max-wait-queue-size
Fixed issues
#1891 Implementations of javax.wsdl.extensions.ExtensibilityElement need to get registered for reflection
Before Quarkus CXF 3.26.1, if the WSDL of a client contained elements from the http://schemas.xmlsoap.org/wsdl/http/ namespace,
like in the following example
<?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://test.deployment.cxf.quarkiverse.io/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
name="ExtensorsService"
targetNamespace="http://test.deployment.cxf.quarkiverse.io/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" >
...
<wsdl:portType name="ExtensorsServiceGet" />
<wsdl:binding name="ExtensorsServiceGet" type="tns:ExtensorsServiceGet">
<http:binding verb="GET" />
</wsdl:binding>
<wsdl:service name="ExtensorsService">
<wsdl:port binding="tns:ExtensorsServiceGet" name="ExtensorsServiceGet" >
<http:address location="http://localhost:8081/soap/ExtensorsServiceGet" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
then the application would fail during boot in native mode with an error message similar to the following:
ERROR [io.qua.run.Application] (main) Failed to start application: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
...
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: SERVICE_CREATION_MSG
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:87)
...
Caused by: javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:binding[2]/http:binding): faultCode=CONFIGURATION_ERROR: Problem instantiating Java extensionType 'com.ibm.wsdl.extensions.http.HTTPBindingImpl'.: java.lang.InstantiationException: com.ibm.wsdl.extensions.http.HTTPBindingImpl
at javax.wsdl.extensions.ExtensionRegistry.createExtension(ExtensionRegistry.java:383)
...
Caused by: java.lang.InstantiationException: com.ibm.wsdl.extensions.http.HTTPBindingImpl
at java.base@21.0.8/java.lang.Class.newInstance(DynamicHub.java:719)
...
Caused by: java.lang.NoSuchMethodException: com.ibm.wsdl.extensions.http.HTTPBindingImpl.<init>()
at java.base@21.0.8/java.lang.Class.checkMethod(DynamicHub.java:1078)
at java.base@21.0.8/java.lang.Class.getConstructor0(DynamicHub.java:1241)
at java.base@21.0.8/java.lang.Class.newInstance(DynamicHub.java:706)
... 28 more
Since Quarkus CXF 3.26.1, no classes related to the http://schemas.xmlsoap.org/wsdl/http/ namespace
need to be registered for reflection by end users.
Special thanks to Lazaro Miguel Coronado Torres for reporting this issue.
Deprecations and removals
Remove HttpClientHTTPConduitFactory value of *.http-conduit-factory
The HttpClientHTTPConduitFactory value of
quarkus.cxf.http-conduit-factory
and quarkus.cxf.client."client-name".http-conduit-factory
was deprecated since Quarkus CXF
3.18.0
, because it never gained any real traction within Quarkus CXF.
HttpClientHTTPConduitFactory was removed from Quarkus CXF 3.22.0.
Use the default VertxHttpClientHTTPConduit instead.
Both the removal of HttpClientHTTPConduitFactory and quarkus-cxf-rt-transports-http-hc5 (see the next section)
are a part of our efforts to support only a single HTTP Conduit based on Vert.x HttpClient in the future.
For now, the URLConnectionHTTPConduitFactory stays fully supported, although it is not used by default since Quarkus CXF
3.16.0.
Check quarkus.cxf.http-conduit-factory
and quarkus.cxf.client."client-name".http-conduit-factory
for more information.
Remove quarkus-cxf-rt-transports-http-hc5 extension
io.quarkiverse.cxf:quarkus-cxf-rt-transports-http-hc5 has been deprecated since Quarkus CXF 3.19.0
and was removed in 3.22.0.
Use the asynchronous mode of VertxHttpClientHTTPConduit instead.
All asynchronous client functionality is now supported by the io.quarkiverse.cxf:quarkus-cxf extension.
You do not need any additional extension for that.
Documentation improvements
-
Show only recent releases in the navigation. The complete list of releases is still available on the Release notes page.
-
Accessing SOAP client metrics and Vert.x HttpClient metrics.