Перенос приложений Java EE — Oracle 10g AS на сервер Oracle 11g Weblogic

Я переношу приложение Java EE с сервера приложений Oracle 10g на сервер Oracle 11g Weblogic.

У меня есть common.jar, который содержит классы, связанные с Connection, и присутствует внутри war/web-inf/lib. Приложение развернуто как EAR, и ejbs также обращаются к классам внутри common.jar для получения соединения с БД. EJB не может получить ссылку на эти классы во время выполнения. Я скопировал файл common.jar в каталог APP-INF/lib. В этом случае JSP не может получить ссылку на классы, связанные с соединением. У меня есть jsp, в который встроен код sql. Это приложение было разработано давно, и сейчас у него нет бизнес-знаний, чтобы изменить этот код.

Как я могу решить эту проблему? Как ejb может получить ссылку на классы, расположенные внутри war/web-inf/lib.


person user911155    schedule 25.08.2011    source источник


Ответы (1)


Вы не можете заставить EJB искать классы в WAR WEB-INF/lib. Это противоречит иерархии загрузчика классов для Weblogic.

Помещение общего jar в APP-INF/lib - правильный путь.

WebLogic Server предоставляет место в файле EAR, где вы можете хранить общие служебные классы. Поместите JAR-файлы утилиты в каталог APP-INF/lib, а отдельные классы — в каталог APP-INF/classes. (Не размещайте файлы JAR в каталоге /classes или классы в каталоге /lib.) Эти классы загружаются в корневой загрузчик классов для приложения.

Можете ли вы также опубликовать ошибки, которые JSP получают, когда они не могут их загрузить? Это ClassNotFoundException или NoClassDefFoundError или что-то еще?

См. также рекомендации по использованию общих библиотек Java EE

person JoseK    schedule 25.08.2011