Rafal created CXF-9206:
--------------------------
Summary: Duplicated value of 'cxf.server.requests' metric for JAX
RS Server
Key: CXF-9206
URL: https://issues.apache.org/jira/browse/CXF-9206
Project: CXF
Issue Type: Bug
Affects Versions: 4.2.0
Reporter: Rafal
Attachments: image-2026-03-16-14-21-21-480.png
After upgrading from CXF 4.1.3 with Spring Boot 3 to CXF 4.2.0 with Spring Boot
4, my test on CXF metrics detected that metric 'cxf.server.requests' in
Micrometer for JAX RS Server has duplicated value.
I am creating server with below method:
{code:java}
@Bean
Server rsServer(Bus bus, MetricsProvider metricsProvider) {
JAXRSServerFactoryBean jaxrsServerFactoryBean = new
JAXRSServerFactoryBean();
jaxrsServerFactoryBean.setBus(bus);
jaxrsServerFactoryBean.setServiceClass(HelloServiceRSImpl.class);
jaxrsServerFactoryBean.setServiceBeans(Arrays.asList(new
HelloServiceRSImpl()));
jaxrsServerFactoryBean.setAddress("/");
jaxrsServerFactoryBean.setFeatures(Arrays.asList(new
MetricsFeature(metricsProvider)));
return jaxrsServerFactoryBean.create();
}{code}
I am sending request to it with:
{code:java}
HelloServiceRsApi helloClientRsApi(String clientHost, int clientPort) {
JAXRSClientFactoryBean jaxRsFactory = new JAXRSClientFactoryBean();
jaxRsFactory.setServiceClass(HelloServiceRsApi.class);
jaxRsFactory.setHeaders(Collections.singletonMap("accept",
"application/json"));
jaxRsFactory.setAddress("http://" + clientHost + ":" + clientPort +
"/services/helloservice");
jaxRsFactory.setFeatures(Arrays.asList(new
MetricsFeature(metricsProvider)));
return (HelloServiceRsApi) jaxRsFactory.create();
}
String response = helloClientRsApi(host, port).sayHello(name); {code}
Looks like the duplicated value is causes by the fact, that for each request
both
MicrometerMetricsProvider.createEndpointContext and
MicrometerMetricsProvider.createResourceContext are invoked, each of them
creating 1
MetricsContext.
Each MetricsContext is later iterated on in ExchangeMetrics and is incrementing
cxf.server.requests metric once, together causing increase by 2.
!image-2026-03-16-14-21-21-480.png!
Probably that commit caused this behavior:
[https://github.com/apache/cxf/commit/de39a250d855ecb16211a26e4ab4ecd6e84722bf#diff-306b2aab603fd7c61099a626fde8707930f31e22cc6c5e492ee021e685730768]
The problem does *not* occur for Jax WS Server:
{code:java}
@Bean
Server wsServer(Bus bus, MetricsProvider metricsProvider) {
JaxWsServerFactoryBean jaxWsServerFactoryBean = new
JaxWsServerFactoryBean();
jaxWsServerFactoryBean.setBus(bus);
jaxWsServerFactoryBean.setServiceClass(HelloServiceWSImpl.class);
jaxWsServerFactoryBean.setAddress("/Hello");
jaxWsServerFactoryBean.setServiceBean(new HelloServiceWSImpl());
jaxWsServerFactoryBean.setFeatures(Arrays.asList(new
MetricsFeature(metricsProvider)));
return jaxWsServerFactoryBean.create();
}{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)