Search code examples
javaspringazure-application-insights

TelemetryConfiguration is not public in com.microsoft.applicationinsights after updating version to 3.4.9


Maven suggests to update com.microsoft.azure:applicationinsights-web to 3.4.9 version, previously I was using 2.6.2. After updating I get errors: java: com.microsoft.applicationinsights.TelemetryConfiguration is not public in com.microsoft.applicationinsights; cannot be accessed from outside package and java: cannot find symbol symbol: class WebRequestTrackingFilter location: package com.microsoft.applicationinsights.web.internal

If I update to the latest 2.x application insights version, everything works fine. But not with 3.x version. I'm using Spring boot 2.7.13. Could you please advise what steps should I take to resolve this issue?

Code that I'm using is similar to code below (Cannot get AppInsights working under Spring Boot)

@Configuration
public class AppInsightsConfig {

    @Bean
    public String telemetryConfig() {
        String telemetryKey = System.getenv("APPLICATION_INSIGHTS_IKEY");
        if (telemetryKey != null) {
            TelemetryConfiguration.getActive().setInstrumentationKey(telemetryKey);
        }
        return telemetryKey;
    }

    @Bean
    public FilterRegistrationBean aiFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new WebRequestTrackingFilter());
        registration.addUrlPatterns("/**");
        registration.setOrder(1);
        return registration;
    } 

    @Bean(name = "WebRequestTrackingFilter")
    public Filter WebRequestTrackingFilter() {
        return new WebRequestTrackingFilter();
    }   
}

Solution

  • This happens due to incompatibility between the versions of the dependencies and spring boot.

    • applicationinsights-web version 3.4.9 is not compatible with Spring Boot 2.7.13.
    • applicationinsights-web 2.x.x version is compatible with spring-boot 2.x.x.

    Check if below steps help to fix your issue:

    • If you are upgrading application insights web version, you need to upgrade spring boot version to be compatible with the upgraded application insights-web version.

    • And also, upgrade application-insights-core package to its latest version to be compatible with your application-insights-web version.

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-core</artifactId>
        <version>3.4.15</version>
    </dependency>
    
    • Import com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter and com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter class in your code.
    package  com.example.demo;
    
    import  org.springframework.boot.web.servlet.FilterRegistrationBean;
    import  org.springframework.context.annotation.Bean;
    import  org.springframework.context.annotation.ComponentScan;
    import  org.springframework.context.annotation.Configuration;
    import  com.microsoft.applicationinsights.TelemetryConfiguration;
    import  com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter;
    
    • Instead, you can also use applicationinsights-runtime-attach dependency in your pom.xml to configure Application Insights.
    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-runtime-attach</artifactId>
        <version>3.4.15</version>
    </dependency>
    

    References:

    Upgrading from 2.x - Azure Monitor Application Insights Java - Azure Monitor