Получение 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. Как добавить импорт в сторонние пакеты, если это необходимо.

Другие вопросы по тегам