[
https://issues.apache.org/jira/browse/CXF-9206?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Freeman Yue Fang reassigned CXF-9206:
-------------------------------------
Assignee: Freeman Yue Fang
> 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
> Assignee: Freeman Yue Fang
> Priority: Major
> 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)