You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Rafal (Jira)" <ji...@apache.org> on 2026/03/16 13:24:00 UTC

[jira] [Created] (CXF-9206) Duplicated value of 'cxf.server.requests' metric for JAX RS Server

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)