Получение ClassNotFoundException при попытке настроить собственный менеджер сеансов в virgo tomcat
Я использую сервер eclipse virgo со встроенным tomcat. Я хочу использовать пользовательский менеджер сессий, который я создал, и он присутствует в комплекте osgi. Я настроил узел osgi как фрагмент, а узел catalina является хостом фрагмента. Также в моем context.xml я настроил менеджер сеансов, указав полное имя класса.
Проблема в том, что при запуске я получаю ClassNotFoundException для моего менеджера сеансов.
Я попытался добавить jar в папку lib и изменить config.ini, чтобы загружать jar при запуске, но это не помогло
В этом сценарии, что я должен сделать, чтобы мой класс был найден при запуске.
2 ответа
Помогло включение отладки загрузчика классов,
В файле config /config.ini добавьте следующее свойство
osgi.debug=configuration/equinox-debug.properties
В файле configuration/equinox-debug.properties добавьте следующие свойства:
org.eclipse.osgi/debug=true
org.eclipse.osgi/debug/loader=true
Теперь, когда вы перезапускаете контейнер, он печатает BundleClassLoader, который пытается загрузить ваш класс. Я хотел, чтобы мой пакет был добавлен как фрагмент к пакету, который загружал этот класс, поэтому, когда я выяснил, какой пакет загружает класс, я просто использовал его в качестве хоста фрагмента.
Вы можете использовать команды оболочки Virgo, как описано в этом блоге, для анализа проблем с загрузкой классов. Вы можете перечислить все пакеты, которые могут загрузить класс, например. Посмотрите часто задаваемые вопросы по Virgo. Как добавить импорт в сторонние пакеты, если это необходимо.