Как определить путь сервлета во время выполнения?

1

У меня есть файл .class в каталоге в пакете по умолчанию. Каждый файл имеет класс, и этот класс имеет аннотацию @Service а метод имеет аннотацию @Operation.

Я знаю, как читать аннотации во время выполнения, но эти файлы являются.class файлом, и я не знаю, как их читать. в противном случае я хочу написать каждую аннотацию Service по пути в файле context.xml и написать каждую операцию в url-образце в файле web.xml во время выполнения. Как я могу это сделать?

Теги:
servlets
path
context.xml

1 ответ

0
Лучший ответ

Если вы поместите классы в свой каталог в classpath, вы можете легко получить к ним доступ через API ClassLoader:

Class<?> clazz = this.getClass().getClassLoader().loadClass(className);

Теперь проблема в том, что вы не знаете имена классов, и вы в основном хотите отсканировать их все. Таким образом, вы можете использовать одну из доступных там библиотек. Например, Guava предоставляет API для сканирования пути класса с помощью вспомогательной утилиты ClassPath:

ClassPath classPath = ClassPath.from(this.getClass().getClassLoader());
for (ClassPath.ClassInfo classInfo : classPath.getTopLevelClasses()) {
    Class<?> clazz = classInfo.load();
    // process annotations here
}
  • 0
    привет хоаз, спасибо за ответ
  • 0
    Я использую вторую часть, которую вы сказали. и я использую System.out.println ("Classpath =" + classPath.toString ()); Синтаксис, чтобы увидеть, что такое classPath. Вывод: Classpath = com.google.common.reflect.ClassPath@1663380. Я хочу изменить classpath на пакет сервера в src. что я должен делать ?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню