Я пытаюсь загрузить некоторые классы, которые характерны для всех веб-приложений моего уха в приложении java ee 5.
Я пытался сделать это путем помещения классов (не банка) в a) каталоге, названном "lib"
b) также определение в application.xml
<module><java>lib/common.jar</java></module>
и не было успешно или опцией a или b
но когда я сотрясал классы в common.jar, я смог загрузить классы методом b)
Я не уверен, какой сервер приложений здесь упоминается, и какова природа файла common.jar. Пока я предположу, что сервер приложений - это любой контейнер Java EE 5, а файл common.jar - это утилита jar (а не EJB или аналогичный модуль).
Спецификация платформы Java EE 5 фактически определяет способ, которым поддержка библиотек должна обеспечиваться контейнерами:
Файл .ear может содержать каталог, содержащий библиотеки, упакованные в файлы JAR. Элемент library-directory дескриптора развертывания файла .ear содержит имя этого каталога. Если элемент library-directory не указан или если файл .ear не содержит дескриптора развертывания, используется каталог с именем lib. Пустой элемент library-directory может быть использован для указания отсутствия каталога библиотек. Все файлы в этом каталоге (но не подкаталоги) с расширением .jar должны быть доступны всем компонентам, упакованным в EAR-файл, включая клиентов приложений. Эти библиотеки могут ссылаться на другие библиотеки, как поставляемые вместе с приложением, так и устанавливаемые отдельно, используя любую из описанных здесь техник.
Это не означает, что метод B неверен, он используется для серверов приложений, таких как JBoss 4, которые не поддерживают элемент library-directory в application.xml. Я полагаю, что Glassfish также поддерживает концепцию каталога lib без соответствующего элемента library-directory.
Возвращаясь к вопросу, размещение классов отдельно в каталоге в EAR-файле, похоже, поддерживается только в WebLogic Server через структуру APP-INF\classes (нет необходимости говорить, что это не стандарт платформы). Следовательно, рекомендуется создать jar общих классов и использовать поддерживаемый сервером приложений механизм, чтобы сделать эти общие классы доступными для других модулей в приложении.