@Bean
    @ConditionalOnMissingBean(name = "jaegerGrpcHttpSpanExporter")
    public SpanExporter jaegerGrpcHttpSpanExporter(
        @Qualifier(CasSSLContext.BEAN_NAME) final CasSSLContext casSslContext,
        final CasConfigurationProperties casProperties) {

        val jaeger = casProperties.getMonitor().getJaeger();
        val trustManager = Objects.requireNonNull(Arrays.stream(casSslContext.getTrustManagers())
            .filter(X509TrustManager.class::isInstance)
            .map(X509TrustManager.class::cast)
            .findFirst()
            .orElse(null));
        return OtlpGrpcSpanExporter.builder()
            .setTimeout(jaeger.getTimeout())
            .setConnectTimeout(jaeger.getConnectTimeout())
            .setMemoryMode(MemoryMode.valueOf(jaeger.getMemoryMode()))
            .setRetryPolicy(RetryPolicy.builder().setMaxAttempts(jaeger.getMaxRetryAttempts()).build())
            .setSslContext(casSslContext.getSslContext(), trustManager)
            .setHeaders(jaeger::getHeaders)
            .setEndpoint(jaeger.getEndpoint())
            .build();
    }
This is {@link CasJaegerAutoConfiguration}.

@author Misagh Moayyed
@since 7.2.0
support/cas-server-support-tracing-jaeger/src/main/java/org/apereo/cas/config/CasJaegerAutoConfiguration.java