У меня есть CustomSharedClassLoader в Tomcat7 для общей библиотеки. Мы мигрировали на tomcat9, он не работает. Как добиться такой же функциональности в tomcat9 - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть пользовательский SharedClassLoader в Tomcat 7 для загрузки JAR-файлов совместно используемых библиотек, которые используются различными приложениями в этом Tomcat. Мы перешли на Tomcat 9, теперь он не работает. Как добиться такой же функциональности в tomcat 9.

В Tomcat 9 он ожидает передачи ресурсов. Я не могу найти пример кода о том, как заполнить ресурсы.

Я попробовал, как показано ниже

public CustomSharedClassLoader(ClassLoader parent) throws Exception {
        super(parent);

//The below three lines are added by me to work for Tomcat 9.        
        StandardRoot standardRoot = new StandardRoot();
        standardRoot.addPreResources(new DirResourceSet());
        setResources(standardRoot);
// End for tomcat 9 changes.

        for (URL urlForJars : getClassPath(SHARED_LIB)) {
            addURL(urlForJars);
        }
        start();
    }

Это не сработало.

public class CustomSharedClassLoader extends WebappClassLoader{
//Which takes shared folder libarary, it returns those classes.
} 

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете добавить общие классы в catalina.properties

shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar

Док:

# List of comma-separated paths defining the contents of the "shared"
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
# the "common" loader will be used as Catalina's "shared" loader.
# Examples:
#     "foo": Add this folder as a class repository
#     "foo/*.jar": Add all the JARs of the specified folder as class
#                  repositories
#     "foo/bar.jar": Add bar.jar as a class repository
# Please note that for single jars, e.g. bar.jar, you need the URL form
# starting with file:.
...