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();
}
}
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>
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;
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