Размер боевого приложения моей компании составлял около 100 МБ, поэтому мы решили изменить объем всех зависимостей maven на предоставленный. Банки были перемещены из .war в папку opt / tomcat / shared / lib (согласно этой инструкции https://www.mulesoft.com/tcat/tomcat-classpath). Все работало отлично, мы развернули 2 серверных приложения на этом сервере, используя эту конфигурацию. После того, как мы добавили третье подобное приложение, мы не можем использовать вход в службу oauth2, потому что в журналах мы видим следующую ошибку:
org.springframework.cglib.core.CodeGenerationException: java.lang.LinkageError-->loader java.net.URLClassLoader @2f943d71 (instance of java.net.URLClassLoader, child of java.net.URLClassLoader @bd8db5a java.net.URLClassLoader) attempted duplicate class definition for org.springframework.security.oauth2.provider.token.DefaultTokenServices$$FastClassBySpringCGLIB$$5a1f25c.
Предыдущие два приложения по-прежнему работают нормально, но третье - нет. Перед каждым развертыванием мы очищаем рабочую папку Tomcat. Мы используем Java 11 SpringBoot2, OpenJDK 11, Tomcat 9.0.21. Класс DefaultTokenServices находится в spring-security-oauth2-2.3.5.RELEASE.jar, который мы поместили в папку opt / tomcat / shared / lib вместе с другими jar-файлами.