Объяснение загрузки классов в EAR для незапрошенного, но зависимого класса - PullRequest
2 голосов
/ 07 октября 2011

Я пытаюсь отследить проблему, возникающую в WAS 6.1 с AXIS 1 и Commons Logging. Мой EAR установлен в родительский последний. В ухе находится регистрация общего достояния, Axis и клиентская банка, которая использует Axis. Классы в jar-клиенте вызываются из WAR.

WAR вызывает клиента, который вызывает ось jar, которая нуждается в регистрации общего доступа. Но это не похоже на то, как если бы EAR загружал протоколирование общин из себя. Похоже, регистрация в общем-то происходит из WebSphere.

Затем другой класс в WAR напрямую запрашивает регистрацию общего ресурса, и EAR, похоже, загружает его. В результате я получаю эту ошибку: org.apache.commons.logging.impl.LogFactoryImpl несовместим с org.apache.commons.logging.LogFactory

Что я могу сделать, чтобы предотвратить это? Я неправильно читаю ситуацию?

1 Ответ

0 голосов
/ 08 октября 2011

Поскольку протоколирование общего достояния и Axis 1 встроены в WAS 6.1, я постараюсь полностью удалить их из EAR и WAR;Затем вы можете установить политику загрузчика классов по умолчанию «PARENT_FIRST», что, безусловно, более надежно.

Вам все еще понадобятся Axis и jcl для компиляции кода, поэтому исключайте их только из EAR.Если вы используете Maven, это будет означать изменение их области действия на «предоставленный», с Ant, который будет создавать список jar отдельно для задачи ear, с проектом EARipse EAR - удалением соответствующих jar из Deployment Assembly.

Я был бы благодарен за краткую информацию, как вы.

...